feat: let model customizable (#1738)
This commit is contained in:
@@ -20,16 +20,13 @@ import (
|
||||
"github.com/zeromicro/go-zero/tools/goctl/util/stringx"
|
||||
)
|
||||
|
||||
const (
|
||||
pwd = "."
|
||||
createTableFlag = `(?m)^(?i)CREATE\s+TABLE` // ignore case
|
||||
)
|
||||
const pwd = "."
|
||||
|
||||
type (
|
||||
defaultGenerator struct {
|
||||
// source string
|
||||
dir string
|
||||
console.Console
|
||||
// source string
|
||||
dir string
|
||||
pkg string
|
||||
cfg *config.Config
|
||||
isPostgreSql bool
|
||||
@@ -48,6 +45,7 @@ type (
|
||||
updateCode string
|
||||
deleteCode string
|
||||
cacheExtra string
|
||||
tableName string
|
||||
}
|
||||
|
||||
codeTuple struct {
|
||||
@@ -154,7 +152,8 @@ func (g *defaultGenerator) createFile(modelList map[string]*codeTuple) error {
|
||||
|
||||
for tableName, codes := range modelList {
|
||||
tn := stringx.From(tableName)
|
||||
modelFilename, err := format.FileNamingFormat(g.cfg.NamingFormat, fmt.Sprintf("%s_model", tn.Source()))
|
||||
modelFilename, err := format.FileNamingFormat(g.cfg.NamingFormat,
|
||||
fmt.Sprintf("%s_model", tn.Source()))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -202,7 +201,8 @@ func (g *defaultGenerator) createFile(modelList map[string]*codeTuple) error {
|
||||
}
|
||||
|
||||
// ret1: key-table name,value-code
|
||||
func (g *defaultGenerator) genFromDDL(filename string, withCache bool, database string) (map[string]*codeTuple, error) {
|
||||
func (g *defaultGenerator) genFromDDL(filename string, withCache bool, database string) (
|
||||
map[string]*codeTuple, error) {
|
||||
m := make(map[string]*codeTuple)
|
||||
tables, err := parser.Parse(filename, database)
|
||||
if err != nil {
|
||||
@@ -249,7 +249,7 @@ func (g *defaultGenerator) genModel(in parser.Table, withCache bool) (string, er
|
||||
table.UniqueCacheKey = uniqueKey
|
||||
table.ContainsUniqueCacheKey = len(uniqueKey) > 0
|
||||
|
||||
importsCode, err := genImports(withCache, in.ContainsTime(), table)
|
||||
importsCode, err := genImports(table, withCache, in.ContainsTime())
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
@@ -287,7 +287,8 @@ func (g *defaultGenerator) genModel(in parser.Table, withCache bool) (string, er
|
||||
}
|
||||
|
||||
var list []string
|
||||
list = append(list, insertCodeMethod, findOneCodeMethod, ret.findOneInterfaceMethod, updateCodeMethod, deleteCodeMethod)
|
||||
list = append(list, insertCodeMethod, findOneCodeMethod, ret.findOneInterfaceMethod,
|
||||
updateCodeMethod, deleteCodeMethod)
|
||||
typesCode, err := genTypes(table, strings.Join(modelutil.TrimStringSlice(list), pathx.NL), withCache)
|
||||
if err != nil {
|
||||
return "", err
|
||||
@@ -298,6 +299,11 @@ func (g *defaultGenerator) genModel(in parser.Table, withCache bool) (string, er
|
||||
return "", err
|
||||
}
|
||||
|
||||
tableName, err := genTableName(table)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
code := &code{
|
||||
importsCode: importsCode,
|
||||
varsCode: varsCode,
|
||||
@@ -308,6 +314,7 @@ func (g *defaultGenerator) genModel(in parser.Table, withCache bool) (string, er
|
||||
updateCode: updateCode,
|
||||
deleteCode: deleteCode,
|
||||
cacheExtra: ret.cacheExtra,
|
||||
tableName: tableName,
|
||||
}
|
||||
|
||||
output, err := g.executeModel(table, code)
|
||||
@@ -356,6 +363,7 @@ func (g *defaultGenerator) executeModel(table Table, code *code) (*bytes.Buffer,
|
||||
"update": code.updateCode,
|
||||
"delete": code.deleteCode,
|
||||
"extraMethod": code.cacheExtra,
|
||||
"tableName": code.tableName,
|
||||
"data": table,
|
||||
})
|
||||
if err != nil {
|
||||
|
||||
@@ -6,7 +6,7 @@ import (
|
||||
"github.com/zeromicro/go-zero/tools/goctl/util/pathx"
|
||||
)
|
||||
|
||||
func genImports(withCache, timeImport bool, table Table) (string, error) {
|
||||
func genImports(table Table, withCache, timeImport bool) (string, error) {
|
||||
if withCache {
|
||||
text, err := pathx.LoadTemplate(category, importsTemplateFile, template.Imports)
|
||||
if err != nil {
|
||||
|
||||
26
tools/goctl/model/sql/gen/tablename.go
Normal file
26
tools/goctl/model/sql/gen/tablename.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package gen
|
||||
|
||||
import (
|
||||
"github.com/zeromicro/go-zero/tools/goctl/model/sql/template"
|
||||
"github.com/zeromicro/go-zero/tools/goctl/util"
|
||||
"github.com/zeromicro/go-zero/tools/goctl/util/pathx"
|
||||
)
|
||||
|
||||
func genTableName(table Table) (string, error) {
|
||||
text, err := pathx.LoadTemplate(category, tableNameTemplateFile, template.TableName)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
output, err := util.With("tableName").
|
||||
Parse(text).
|
||||
Execute(map[string]interface{}{
|
||||
"tableName": table.Name.Source(),
|
||||
"upperStartCamelObject": table.Name.ToCamel(),
|
||||
})
|
||||
if err != nil {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
return output.String(), nil
|
||||
}
|
||||
@@ -25,6 +25,7 @@ const (
|
||||
modelGenTemplateFile = "model-gen.tpl"
|
||||
modelCustomTemplateFile = "model.tpl"
|
||||
modelNewTemplateFile = "model-new.tpl"
|
||||
tableNameTemplateFile = "table-name.tpl"
|
||||
tagTemplateFile = "tag.tpl"
|
||||
typesTemplateFile = "types.tpl"
|
||||
updateTemplateFile = "update.tpl"
|
||||
@@ -49,6 +50,7 @@ var templates = map[string]string{
|
||||
modelGenTemplateFile: template.ModelGen,
|
||||
modelCustomTemplateFile: template.ModelCustom,
|
||||
modelNewTemplateFile: template.New,
|
||||
tableNameTemplateFile: template.TableName,
|
||||
tagTemplateFile: template.Tag,
|
||||
typesTemplateFile: template.Types,
|
||||
updateTemplateFile: template.Update,
|
||||
@@ -72,7 +74,7 @@ func GenTemplates(_ *cli.Context) error {
|
||||
return pathx.InitTemplates(category, templates)
|
||||
}
|
||||
|
||||
// RevertTemplate recovers the delete template files
|
||||
// RevertTemplate reverts the deleted template files
|
||||
func RevertTemplate(name string) error {
|
||||
content, ok := templates[name]
|
||||
if !ok {
|
||||
|
||||
Reference in New Issue
Block a user