diff --git a/cmd/gf/internal/cmd/gendao/gendao.go b/cmd/gf/internal/cmd/gendao/gendao.go index 2b7ae3d6170..485532e1134 100644 --- a/cmd/gf/internal/cmd/gendao/gendao.go +++ b/cmd/gf/internal/cmd/gendao/gendao.go @@ -86,6 +86,7 @@ CONFIGURATION SUPPORT CGenDaoBriefClear = `delete all generated go files that do not exist in database` CGenDaoBriefTypeMapping = `custom local type mapping for generated struct attributes relevant to fields of table` CGenDaoBriefFieldMapping = `custom local type mapping for generated struct attributes relevant to specific fields of table` + CGenDaoBriefWithPathPackage = `is should make the dao package by the path` CGenDaoBriefGroup = ` specifying the configuration group name of database for generated ORM instance, it's not necessary and the default value is "default" @@ -118,6 +119,7 @@ generated json tag case for model struct, cases are as follows: tplVarGroupName = `{TplGroupName}` tplVarDatetimeStr = `{TplDatetimeStr}` tplVarCreatedAtDatetimeStr = `{TplCreatedAtDatetimeStr}` + tplVarPackageName = `{TplPackageName}` ) var ( @@ -174,6 +176,7 @@ func init() { `CGenDaoBriefTplDaoInternalPath`: CGenDaoBriefTplDaoInternalPath, `CGenDaoBriefTplDaoDoPathPath`: CGenDaoBriefTplDaoDoPathPath, `CGenDaoBriefTplDaoEntityPath`: CGenDaoBriefTplDaoEntityPath, + `CGenDaoBriefWithPathPackage`: CGenDaoBriefWithPathPackage, }) } @@ -206,6 +209,7 @@ type ( NoJsonTag bool `name:"noJsonTag" short:"k" brief:"{CGenDaoBriefNoJsonTag}" orphan:"true"` NoModelComment bool `name:"noModelComment" short:"m" brief:"{CGenDaoBriefNoModelComment}" orphan:"true"` Clear bool `name:"clear" short:"a" brief:"{CGenDaoBriefClear}" orphan:"true"` + WithPathPackage bool `name:"withPathPackage" short:"wp" brief:"{CGenDaoBriefWithPathPackage}" orphan:"true"` TypeMapping map[DBFieldTypeName]CustomAttributeType `name:"typeMapping" short:"y" brief:"{CGenDaoBriefTypeMapping}" orphan:"true"` FieldMapping map[DBTableFieldName]CustomAttributeType `name:"fieldMapping" short:"fm" brief:"{CGenDaoBriefFieldMapping}" orphan:"true"` diff --git a/cmd/gf/internal/cmd/gendao/gendao_dao.go b/cmd/gf/internal/cmd/gendao/gendao_dao.go index 8485286177c..669ef004457 100644 --- a/cmd/gf/internal/cmd/gendao/gendao_dao.go +++ b/cmd/gf/internal/cmd/gendao/gendao_dao.go @@ -105,6 +105,10 @@ type generateDaoIndexInput struct { } func generateDaoIndex(in generateDaoIndexInput) { + daoPackage := "dao" + if in.WithPathPackage { + daoPackage = filepath.Base(in.DaoPath) + } path := filepath.FromSlash(gfile.Join(in.DirPathDao, in.FileName+".go")) // It should add path to result slice whenever it would generate the path file or not. in.genItems.AppendGeneratedFilePath(path) @@ -116,6 +120,7 @@ func generateDaoIndex(in generateDaoIndexInput) { tplVarTableName: in.TableName, tplVarTableNameCamelCase: in.TableNameCamelCase, tplVarTableNameCamelLowerCase: in.TableNameCamelLowerCase, + tplVarPackageName: daoPackage, }) indexContent = replaceDefaultVar(in.CGenDaoInternalInput, indexContent) if err := gfile.PutContents(path, strings.TrimSpace(indexContent)); err != nil { diff --git a/cmd/gf/internal/cmd/gendao/gendao_do.go b/cmd/gf/internal/cmd/gendao/gendao_do.go index afe61ec578b..ae34124cfae 100644 --- a/cmd/gf/internal/cmd/gendao/gendao_do.go +++ b/cmd/gf/internal/cmd/gendao/gendao_do.go @@ -78,6 +78,10 @@ func generateDo(ctx context.Context, in CGenDaoInternalInput) { func generateDoContent( ctx context.Context, in CGenDaoInternalInput, tableName, tableNameCamelCase, structDefine string, ) string { + doPackage := "do" + if in.WithPathPackage { + doPackage = filepath.Base(in.DoPath) + } doContent := gstr.ReplaceByMap( getTemplateFromPathOrDefault(in.TplDaoDoPath, consts.TemplateGenDaoDoContent), g.MapStrStr{ @@ -85,6 +89,7 @@ func generateDoContent( tplVarPackageImports: getImportPartContent(ctx, structDefine, true, nil), tplVarTableNameCamelCase: tableNameCamelCase, tplVarStructDefine: structDefine, + tplVarPackageName: doPackage, }, ) doContent = replaceDefaultVar(in, doContent) diff --git a/cmd/gf/internal/cmd/gendao/gendao_entity.go b/cmd/gf/internal/cmd/gendao/gendao_entity.go index 2717df20176..e437cddb174 100644 --- a/cmd/gf/internal/cmd/gendao/gendao_entity.go +++ b/cmd/gf/internal/cmd/gendao/gendao_entity.go @@ -63,6 +63,10 @@ func generateEntity(ctx context.Context, in CGenDaoInternalInput) { func generateEntityContent( ctx context.Context, in CGenDaoInternalInput, tableName, tableNameCamelCase, structDefine string, appendImports []string, ) string { + entityPackage := "entity" + if in.WithPathPackage { + entityPackage = filepath.Base(in.EntityPath) + } entityContent := gstr.ReplaceByMap( getTemplateFromPathOrDefault(in.TplDaoEntityPath, consts.TemplateGenDaoEntityContent), g.MapStrStr{ @@ -70,6 +74,7 @@ func generateEntityContent( tplVarPackageImports: getImportPartContent(ctx, structDefine, false, appendImports), tplVarTableNameCamelCase: tableNameCamelCase, tplVarStructDefine: structDefine, + tplVarPackageName: entityPackage, }, ) entityContent = replaceDefaultVar(in, entityContent) diff --git a/cmd/gf/internal/consts/consts_gen_dao_template_dao.go b/cmd/gf/internal/consts/consts_gen_dao_template_dao.go index bcf23736a94..5af47e4931f 100644 --- a/cmd/gf/internal/consts/consts_gen_dao_template_dao.go +++ b/cmd/gf/internal/consts/consts_gen_dao_template_dao.go @@ -11,7 +11,7 @@ const TemplateGenDaoIndexContent = ` // This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. // ================================================================================= -package dao +package {TplPackageName} import ( "{TplImportPrefix}/internal" diff --git a/cmd/gf/internal/consts/consts_gen_dao_template_do.go b/cmd/gf/internal/consts/consts_gen_dao_template_do.go index 11914b010a0..320aaa9e2a3 100644 --- a/cmd/gf/internal/consts/consts_gen_dao_template_do.go +++ b/cmd/gf/internal/consts/consts_gen_dao_template_do.go @@ -11,7 +11,7 @@ const TemplateGenDaoDoContent = ` // Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. {TplCreatedAtDatetimeStr} // ================================================================================= -package do +package {TplPackageName} {TplPackageImports} diff --git a/cmd/gf/internal/consts/consts_gen_dao_template_entity.go b/cmd/gf/internal/consts/consts_gen_dao_template_entity.go index 44af06aa39d..67a868ec700 100644 --- a/cmd/gf/internal/consts/consts_gen_dao_template_entity.go +++ b/cmd/gf/internal/consts/consts_gen_dao_template_entity.go @@ -11,7 +11,7 @@ const TemplateGenDaoEntityContent = ` // Code generated and maintained by GoFrame CLI tool. DO NOT EDIT. {TplCreatedAtDatetimeStr} // ================================================================================= -package entity +package {TplPackageName} {TplPackageImports}