diff --git a/cmd/gf/internal/cmd/gendao/gendao.go b/cmd/gf/internal/cmd/gendao/gendao.go index d5c49098d..4ddf54ddf 100644 --- a/cmd/gf/internal/cmd/gendao/gendao.go +++ b/cmd/gf/internal/cmd/gendao/gendao.go @@ -78,6 +78,10 @@ generated json tag case for model struct, cases are as follows: | Kebab | any-kind-of-string | | KebabScreaming | ANY-KIND-OF-STRING | ` + CGenDaoBriefTplDaoIndexPath = `template file path for dao index file` + CGenDaoBriefTplDaoInternalPath = `template file path for dao internal file` + CGenDaoBriefTplDaoDoPathPath = `template file path for dao do file` + CGenDaoBriefTplDaoEntityPath = `template file path for dao entity file` tplVarTableName = `{TplTableName}` tplVarTableNameCamelCase = `{TplTableNameCamelCase}` @@ -89,6 +93,7 @@ generated json tag case for model struct, cases are as follows: tplVarColumnNames = `{TplColumnNames}` tplVarGroupName = `{TplGroupName}` tplVarDatetimeStr = `{TplDatetimeStr}` + tplVarCreatedAtDatetimeStr = `{TplCreatedAtDatetimeStr}` ) var ( @@ -97,58 +102,66 @@ var ( func init() { gtag.Sets(g.MapStrStr{ - `CGenDaoConfig`: CGenDaoConfig, - `CGenDaoUsage`: CGenDaoUsage, - `CGenDaoBrief`: CGenDaoBrief, - `CGenDaoEg`: CGenDaoEg, - `CGenDaoAd`: CGenDaoAd, - `CGenDaoBriefPath`: CGenDaoBriefPath, - `CGenDaoBriefLink`: CGenDaoBriefLink, - `CGenDaoBriefTables`: CGenDaoBriefTables, - `CGenDaoBriefTablesEx`: CGenDaoBriefTablesEx, - `CGenDaoBriefPrefix`: CGenDaoBriefPrefix, - `CGenDaoBriefRemovePrefix`: CGenDaoBriefRemovePrefix, - `CGenDaoBriefStdTime`: CGenDaoBriefStdTime, - `CGenDaoBriefWithTime`: CGenDaoBriefWithTime, - `CGenDaoBriefDaoPath`: CGenDaoBriefDaoPath, - `CGenDaoBriefDoPath`: CGenDaoBriefDoPath, - `CGenDaoBriefEntityPath`: CGenDaoBriefEntityPath, - `CGenDaoBriefGJsonSupport`: CGenDaoBriefGJsonSupport, - `CGenDaoBriefImportPrefix`: CGenDaoBriefImportPrefix, - `CGenDaoBriefOverwriteDao`: CGenDaoBriefOverwriteDao, - `CGenDaoBriefModelFile`: CGenDaoBriefModelFile, - `CGenDaoBriefModelFileForDao`: CGenDaoBriefModelFileForDao, - `CGenDaoBriefDescriptionTag`: CGenDaoBriefDescriptionTag, - `CGenDaoBriefNoJsonTag`: CGenDaoBriefNoJsonTag, - `CGenDaoBriefNoModelComment`: CGenDaoBriefNoModelComment, - `CGenDaoBriefGroup`: CGenDaoBriefGroup, - `CGenDaoBriefJsonCase`: CGenDaoBriefJsonCase, + `CGenDaoConfig`: CGenDaoConfig, + `CGenDaoUsage`: CGenDaoUsage, + `CGenDaoBrief`: CGenDaoBrief, + `CGenDaoEg`: CGenDaoEg, + `CGenDaoAd`: CGenDaoAd, + `CGenDaoBriefPath`: CGenDaoBriefPath, + `CGenDaoBriefLink`: CGenDaoBriefLink, + `CGenDaoBriefTables`: CGenDaoBriefTables, + `CGenDaoBriefTablesEx`: CGenDaoBriefTablesEx, + `CGenDaoBriefPrefix`: CGenDaoBriefPrefix, + `CGenDaoBriefRemovePrefix`: CGenDaoBriefRemovePrefix, + `CGenDaoBriefStdTime`: CGenDaoBriefStdTime, + `CGenDaoBriefWithTime`: CGenDaoBriefWithTime, + `CGenDaoBriefDaoPath`: CGenDaoBriefDaoPath, + `CGenDaoBriefDoPath`: CGenDaoBriefDoPath, + `CGenDaoBriefEntityPath`: CGenDaoBriefEntityPath, + `CGenDaoBriefGJsonSupport`: CGenDaoBriefGJsonSupport, + `CGenDaoBriefImportPrefix`: CGenDaoBriefImportPrefix, + `CGenDaoBriefOverwriteDao`: CGenDaoBriefOverwriteDao, + `CGenDaoBriefModelFile`: CGenDaoBriefModelFile, + `CGenDaoBriefModelFileForDao`: CGenDaoBriefModelFileForDao, + `CGenDaoBriefDescriptionTag`: CGenDaoBriefDescriptionTag, + `CGenDaoBriefNoJsonTag`: CGenDaoBriefNoJsonTag, + `CGenDaoBriefNoModelComment`: CGenDaoBriefNoModelComment, + `CGenDaoBriefGroup`: CGenDaoBriefGroup, + `CGenDaoBriefJsonCase`: CGenDaoBriefJsonCase, + `CGenDaoBriefTplDaoIndexPath`: CGenDaoBriefTplDaoIndexPath, + `CGenDaoBriefTplDaoInternalPath`: CGenDaoBriefTplDaoInternalPath, + `CGenDaoBriefTplDaoDoPathPath`: CGenDaoBriefTplDaoDoPathPath, + `CGenDaoBriefTplDaoEntityPath`: CGenDaoBriefTplDaoEntityPath, }) } type ( CGenDao struct{} CGenDaoInput struct { - g.Meta `name:"dao" config:"{CGenDaoConfig}" usage:"{CGenDaoUsage}" brief:"{CGenDaoBrief}" eg:"{CGenDaoEg}" ad:"{CGenDaoAd}"` - Path string `name:"path" short:"p" brief:"{CGenDaoBriefPath}" d:"internal"` - Link string `name:"link" short:"l" brief:"{CGenDaoBriefLink}"` - Tables string `name:"tables" short:"t" brief:"{CGenDaoBriefTables}"` - TablesEx string `name:"tablesEx" short:"x" brief:"{CGenDaoBriefTablesEx}"` - Group string `name:"group" short:"g" brief:"{CGenDaoBriefGroup}" d:"default"` - Prefix string `name:"prefix" short:"f" brief:"{CGenDaoBriefPrefix}"` - RemovePrefix string `name:"removePrefix" short:"r" brief:"{CGenDaoBriefRemovePrefix}"` - JsonCase string `name:"jsonCase" short:"j" brief:"{CGenDaoBriefJsonCase}" d:"CamelLower"` - ImportPrefix string `name:"importPrefix" short:"i" brief:"{CGenDaoBriefImportPrefix}"` - DaoPath string `name:"daoPath" short:"d" brief:"{CGenDaoBriefDaoPath}" d:"dao"` - DoPath string `name:"doPath" short:"o" brief:"{CGenDaoBriefDoPath}" d:"model/do"` - EntityPath string `name:"entityPath" short:"e" brief:"{CGenDaoBriefEntityPath}" d:"model/entity"` - StdTime bool `name:"stdTime" short:"s" brief:"{CGenDaoBriefStdTime}" orphan:"true"` - WithTime bool `name:"withTime" short:"w" brief:"{CGenDaoBriefWithTime}" orphan:"true"` - GJsonSupport bool `name:"gJsonSupport" short:"n" brief:"{CGenDaoBriefGJsonSupport}" orphan:"true"` - OverwriteDao bool `name:"overwriteDao" short:"v" brief:"{CGenDaoBriefOverwriteDao}" orphan:"true"` - DescriptionTag bool `name:"descriptionTag" short:"c" brief:"{CGenDaoBriefDescriptionTag}" orphan:"true"` - NoJsonTag bool `name:"noJsonTag" short:"k" brief:"{CGenDaoBriefNoJsonTag}" orphan:"true"` - NoModelComment bool `name:"noModelComment" short:"m" brief:"{CGenDaoBriefNoModelComment}" orphan:"true"` + g.Meta `name:"dao" config:"{CGenDaoConfig}" usage:"{CGenDaoUsage}" brief:"{CGenDaoBrief}" eg:"{CGenDaoEg}" ad:"{CGenDaoAd}"` + Path string `name:"path" short:"p" brief:"{CGenDaoBriefPath}" d:"internal"` + Link string `name:"link" short:"l" brief:"{CGenDaoBriefLink}"` + Tables string `name:"tables" short:"t" brief:"{CGenDaoBriefTables}"` + TablesEx string `name:"tablesEx" short:"x" brief:"{CGenDaoBriefTablesEx}"` + Group string `name:"group" short:"g" brief:"{CGenDaoBriefGroup}" d:"default"` + Prefix string `name:"prefix" short:"f" brief:"{CGenDaoBriefPrefix}"` + RemovePrefix string `name:"removePrefix" short:"r" brief:"{CGenDaoBriefRemovePrefix}"` + JsonCase string `name:"jsonCase" short:"j" brief:"{CGenDaoBriefJsonCase}" d:"CamelLower"` + ImportPrefix string `name:"importPrefix" short:"i" brief:"{CGenDaoBriefImportPrefix}"` + DaoPath string `name:"daoPath" short:"d" brief:"{CGenDaoBriefDaoPath}" d:"dao"` + DoPath string `name:"doPath" short:"o" brief:"{CGenDaoBriefDoPath}" d:"model/do"` + EntityPath string `name:"entityPath" short:"e" brief:"{CGenDaoBriefEntityPath}" d:"model/entity"` + TplDaoIndexPath string `name:"tplDaoIndexPath" short:"t1" brief:"{CGenDaoBriefTplDaoIndexPath}"` + TplDaoInternalPath string `name:"tplDaoInternalPath" short:"t2" brief:"{CGenDaoBriefTplDaoInternalPath}"` + TplDaoDoPath string `name:"tplDaoDoPath" short:"t3" brief:"{CGenDaoBriefTplDaoDoPathPath}"` + TplDaoEntitylPath string `name:"tplDaoEntityPath" short:"t4" brief:"{CGenDaoBriefTplDaoEntityPath}"` + StdTime bool `name:"stdTime" short:"s" brief:"{CGenDaoBriefStdTime}" orphan:"true"` + WithTime bool `name:"withTime" short:"w" brief:"{CGenDaoBriefWithTime}" orphan:"true"` + GJsonSupport bool `name:"gJsonSupport" short:"n" brief:"{CGenDaoBriefGJsonSupport}" orphan:"true"` + OverwriteDao bool `name:"overwriteDao" short:"v" brief:"{CGenDaoBriefOverwriteDao}" orphan:"true"` + DescriptionTag bool `name:"descriptionTag" short:"c" brief:"{CGenDaoBriefDescriptionTag}" orphan:"true"` + NoJsonTag bool `name:"noJsonTag" short:"k" brief:"{CGenDaoBriefNoJsonTag}" orphan:"true"` + NoModelComment bool `name:"noModelComment" short:"m" brief:"{CGenDaoBriefNoModelComment}" orphan:"true"` } CGenDaoOutput struct{} @@ -305,12 +318,14 @@ func getImportPartContent(source string, isDo bool) string { } func replaceDefaultVar(in CGenDaoInternalInput, origin string) string { - var tplDatetimeStr string + var tplCreatedAtDatetimeStr string + var tplDatetimeStr string = createdAt.String() if in.WithTime { - tplDatetimeStr = fmt.Sprintf(`Created at %s`, createdAt.String()) + tplCreatedAtDatetimeStr = fmt.Sprintf(`Created at %s`, tplDatetimeStr) } return gstr.ReplaceByMap(origin, g.MapStrStr{ - tplVarDatetimeStr: tplDatetimeStr, + tplVarDatetimeStr: tplDatetimeStr, + tplVarCreatedAtDatetimeStr: tplCreatedAtDatetimeStr, }) } @@ -337,3 +352,12 @@ func sortFieldKeyForDao(fieldMap map[string]*gdb.TableField) []string { } return result } + +func getTemplateFromPathOrDefault(filePath string, def string) string { + if filePath != "" { + if contents := gfile.GetContents(filePath); contents != "" { + return contents + } + } + return def +} diff --git a/cmd/gf/internal/cmd/gendao/gendao_dao.go b/cmd/gf/internal/cmd/gendao/gendao_dao.go index c90ad252b..60dd7fa42 100644 --- a/cmd/gf/internal/cmd/gendao/gendao_dao.go +++ b/cmd/gf/internal/cmd/gendao/gendao_dao.go @@ -64,12 +64,14 @@ func generateDao(ctx context.Context, db gdb.DB, in CGenDaoInternalInput) { func generateDaoIndex(in CGenDaoInternalInput, tableNameCamelCase, tableNameCamelLowerCase, importPrefix, dirPathDao, fileName string) { path := gfile.Join(dirPathDao, fileName+".go") if in.OverwriteDao || !gfile.Exists(path) { - indexContent := gstr.ReplaceByMap(getTplDaoIndexContent(""), g.MapStrStr{ - tplVarImportPrefix: importPrefix, - tplVarTableName: in.TableName, - tplVarTableNameCamelCase: tableNameCamelCase, - tplVarTableNameCamelLowerCase: tableNameCamelLowerCase, - }) + indexContent := gstr.ReplaceByMap( + getTemplateFromPathOrDefault(in.TplDaoIndexPath, consts.TemplateGenDaoIndexContent), + g.MapStrStr{ + tplVarImportPrefix: importPrefix, + tplVarTableName: in.TableName, + tplVarTableNameCamelCase: tableNameCamelCase, + tplVarTableNameCamelLowerCase: tableNameCamelLowerCase, + }) indexContent = replaceDefaultVar(in, indexContent) if err := gfile.PutContents(path, strings.TrimSpace(indexContent)); err != nil { mlog.Fatalf("writing content to '%s' failed: %v", path, err) @@ -87,15 +89,17 @@ func generateDaoInternal( fieldMap map[string]*gdb.TableField, ) { path := gfile.Join(dirPathDao, "internal", fileName+".go") - modelContent := gstr.ReplaceByMap(getTplDaoInternalContent(""), g.MapStrStr{ - tplVarImportPrefix: importPrefix, - tplVarTableName: in.TableName, - tplVarGroupName: in.Group, - tplVarTableNameCamelCase: tableNameCamelCase, - tplVarTableNameCamelLowerCase: tableNameCamelLowerCase, - tplVarColumnDefine: gstr.Trim(generateColumnDefinitionForDao(fieldMap)), - tplVarColumnNames: gstr.Trim(generateColumnNamesForDao(fieldMap)), - }) + modelContent := gstr.ReplaceByMap( + getTemplateFromPathOrDefault(in.TplDaoInternalPath, consts.TemplateGenDaoInternalContent), + g.MapStrStr{ + tplVarImportPrefix: importPrefix, + tplVarTableName: in.TableName, + tplVarGroupName: in.Group, + tplVarTableNameCamelCase: tableNameCamelCase, + tplVarTableNameCamelLowerCase: tableNameCamelLowerCase, + tplVarColumnDefine: gstr.Trim(generateColumnDefinitionForDao(fieldMap)), + tplVarColumnNames: gstr.Trim(generateColumnNamesForDao(fieldMap)), + }) modelContent = replaceDefaultVar(in, modelContent) if err := gfile.PutContents(path, strings.TrimSpace(modelContent)); err != nil { mlog.Fatalf("writing content to '%s' failed: %v", path, err) @@ -105,20 +109,6 @@ func generateDaoInternal( } } -func getTplDaoIndexContent(tplDaoIndexPath string) string { - if tplDaoIndexPath != "" { - return gfile.GetContents(tplDaoIndexPath) - } - return consts.TemplateDaoDaoIndexContent -} - -func getTplDaoInternalContent(tplDaoInternalPath string) string { - if tplDaoInternalPath != "" { - return gfile.GetContents(tplDaoInternalPath) - } - return consts.TemplateDaoDaoInternalContent -} - // generateColumnNamesForDao generates and returns the column names assignment content of column struct // for specified table. func generateColumnNamesForDao(fieldMap map[string]*gdb.TableField) string { diff --git a/cmd/gf/internal/cmd/gendao/gendao_do.go b/cmd/gf/internal/cmd/gendao/gendao_do.go index 200ce8d9c..f9570b5fd 100644 --- a/cmd/gf/internal/cmd/gendao/gendao_do.go +++ b/cmd/gf/internal/cmd/gendao/gendao_do.go @@ -68,12 +68,14 @@ func generateDo(ctx context.Context, db gdb.DB, tableNames, newTableNames []stri } func generateDoContent(in CGenDaoInternalInput, tableName, tableNameCamelCase, structDefine string) string { - doContent := gstr.ReplaceByMap(consts.TemplateGenDaoDoContent, g.MapStrStr{ - tplVarTableName: tableName, - tplVarPackageImports: getImportPartContent(structDefine, true), - tplVarTableNameCamelCase: tableNameCamelCase, - tplVarStructDefine: structDefine, - }) + doContent := gstr.ReplaceByMap( + getTemplateFromPathOrDefault(in.TplDaoDoPath, consts.TemplateGenDaoDoContent), + g.MapStrStr{ + tplVarTableName: tableName, + tplVarPackageImports: getImportPartContent(structDefine, true), + tplVarTableNameCamelCase: tableNameCamelCase, + tplVarStructDefine: structDefine, + }) doContent = replaceDefaultVar(in, doContent) return doContent } diff --git a/cmd/gf/internal/cmd/gendao/gendao_entity.go b/cmd/gf/internal/cmd/gendao/gendao_entity.go index 232d7afe0..fd6f1396c 100644 --- a/cmd/gf/internal/cmd/gendao/gendao_entity.go +++ b/cmd/gf/internal/cmd/gendao/gendao_entity.go @@ -47,12 +47,14 @@ func generateEntity(ctx context.Context, db gdb.DB, tableNames, newTableNames [] } func generateEntityContent(in CGenDaoInternalInput, tableName, tableNameCamelCase, structDefine string) string { - entityContent := gstr.ReplaceByMap(consts.TemplateGenDaoEntityContent, g.MapStrStr{ - tplVarTableName: tableName, - tplVarPackageImports: getImportPartContent(structDefine, false), - tplVarTableNameCamelCase: tableNameCamelCase, - tplVarStructDefine: structDefine, - }) + entityContent := gstr.ReplaceByMap( + getTemplateFromPathOrDefault(in.TplDaoEntitylPath, consts.TemplateGenDaoEntityContent), + g.MapStrStr{ + tplVarTableName: tableName, + tplVarPackageImports: getImportPartContent(structDefine, false), + tplVarTableNameCamelCase: tableNameCamelCase, + tplVarStructDefine: structDefine, + }) entityContent = replaceDefaultVar(in, entityContent) return 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 6155eecfd..7996461e3 100644 --- a/cmd/gf/internal/consts/consts_gen_dao_template_dao.go +++ b/cmd/gf/internal/consts/consts_gen_dao_template_dao.go @@ -1,6 +1,6 @@ package consts -const TemplateDaoDaoIndexContent = ` +const TemplateGenDaoIndexContent = ` // ================================================================================= // This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. // ================================================================================= @@ -31,9 +31,9 @@ var ( ` -const TemplateDaoDaoInternalContent = ` +const TemplateGenDaoInternalContent = ` // ========================================================================== -// Code generated by GoFrame CLI tool. DO NOT EDIT. {TplDatetimeStr} +// Code generated by GoFrame CLI tool. DO NOT EDIT. {TplCreatedAtDatetimeStr} // ========================================================================== package 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 b50eb1459..4847adc21 100644 --- a/cmd/gf/internal/consts/consts_gen_dao_template_do.go +++ b/cmd/gf/internal/consts/consts_gen_dao_template_do.go @@ -2,7 +2,7 @@ package consts const TemplateGenDaoDoContent = ` // ================================================================================= -// Code generated by GoFrame CLI tool. DO NOT EDIT. {TplDatetimeStr} +// Code generated by GoFrame CLI tool. DO NOT EDIT. {TplCreatedAtDatetimeStr} // ================================================================================= package do 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 597f2a9a1..49a3311c5 100644 --- a/cmd/gf/internal/consts/consts_gen_dao_template_entity.go +++ b/cmd/gf/internal/consts/consts_gen_dao_template_entity.go @@ -2,7 +2,7 @@ package consts const TemplateGenDaoEntityContent = ` // ================================================================================= -// Code generated by GoFrame CLI tool. DO NOT EDIT. {TplDatetimeStr} +// Code generated by GoFrame CLI tool. DO NOT EDIT. {TplCreatedAtDatetimeStr} // ================================================================================= package entity