fix: model generation bug on with cache (#1743)
* fix: model generation bug on with cache * chore: refine template * chore: fix test failure
This commit is contained in:
@@ -123,7 +123,7 @@ func (g *defaultGenerator) StartFromInformationSchema(tables map[string]*model.T
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
customCode, err := g.genModelCustom(*table)
|
||||
customCode, err := g.genModelCustom(*table, withCache)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -214,7 +214,7 @@ func (g *defaultGenerator) genFromDDL(filename string, withCache bool, database
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
customCode, err := g.genModelCustom(*e)
|
||||
customCode, err := g.genModelCustom(*e, withCache)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -325,22 +325,25 @@ func (g *defaultGenerator) genModel(in parser.Table, withCache bool) (string, er
|
||||
return output.String(), nil
|
||||
}
|
||||
|
||||
func (g *defaultGenerator) genModelCustom(in parser.Table) (string, error) {
|
||||
func (g *defaultGenerator) genModelCustom(in parser.Table, withCache bool) (string, error) {
|
||||
text, err := pathx.LoadTemplate(category, modelCustomTemplateFile, template.ModelCustom)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
t := util.With("model-custom").
|
||||
Parse(text).
|
||||
GoFmt(true)
|
||||
output, err := t.Execute(map[string]interface{}{
|
||||
"pkg": g.pkg,
|
||||
"withCache": withCache,
|
||||
"upperStartCamelObject": in.Name.ToCamel(),
|
||||
"lowerStartCamelObject": stringx.From(in.Name.ToCamel()).Untitle(),
|
||||
})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return output.String(), nil
|
||||
}
|
||||
|
||||
|
||||
@@ -145,7 +145,10 @@ func Test_genPublicModel(t *testing.T) {
|
||||
tables, err := parser.Parse(modelFilename, "")
|
||||
require.Equal(t, 1, len(tables))
|
||||
|
||||
code, err := g.genModelCustom(*tables[0])
|
||||
code, err := g.genModelCustom(*tables[0], false)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "package model\n\ntype TestUserModel interface {\n\ttestUserModel\n}\n", code)
|
||||
assert.True(t, strings.Contains(code, "package model"))
|
||||
assert.True(t, strings.Contains(code, "TestUserModel interface {\n\t\ttestUserModel\n\t}\n"))
|
||||
assert.True(t, strings.Contains(code, "customTestUserModel struct {\n\t\t*defaultTestUserModel\n\t}\n"))
|
||||
assert.True(t, strings.Contains(code, "func NewTestUserModel(conn sqlx.SqlConn) TestUserModel {"))
|
||||
}
|
||||
|
||||
@@ -8,9 +8,14 @@ import (
|
||||
|
||||
// ModelCustom defines a template for extension
|
||||
const ModelCustom = `package {{.pkg}}
|
||||
|
||||
{{if .withCache}}
|
||||
import (
|
||||
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
)
|
||||
{{else}}
|
||||
import "github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
|
||||
{{end}}
|
||||
var _ {{.upperStartCamelObject}}Model = (*custom{{.upperStartCamelObject}}Model)(nil)
|
||||
|
||||
type (
|
||||
|
||||
Reference in New Issue
Block a user