fix: model generation bug on with cache (#1743)

* fix: model generation bug on with cache

* chore: refine template

* chore: fix test failure
master
Kevin Wan 3 years ago committed by GitHub
parent 83cacf51b7
commit dfd58c213c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -123,7 +123,7 @@ func (g *defaultGenerator) StartFromInformationSchema(tables map[string]*model.T
if err != nil { if err != nil {
return err return err
} }
customCode, err := g.genModelCustom(*table) customCode, err := g.genModelCustom(*table, withCache)
if err != nil { if err != nil {
return err return err
} }
@ -214,7 +214,7 @@ func (g *defaultGenerator) genFromDDL(filename string, withCache bool, database
if err != nil { if err != nil {
return nil, err return nil, err
} }
customCode, err := g.genModelCustom(*e) customCode, err := g.genModelCustom(*e, withCache)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -325,22 +325,25 @@ func (g *defaultGenerator) genModel(in parser.Table, withCache bool) (string, er
return output.String(), nil 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) text, err := pathx.LoadTemplate(category, modelCustomTemplateFile, template.ModelCustom)
if err != nil { if err != nil {
return "", err return "", err
} }
t := util.With("model-custom"). t := util.With("model-custom").
Parse(text). Parse(text).
GoFmt(true) GoFmt(true)
output, err := t.Execute(map[string]interface{}{ output, err := t.Execute(map[string]interface{}{
"pkg": g.pkg, "pkg": g.pkg,
"withCache": withCache,
"upperStartCamelObject": in.Name.ToCamel(), "upperStartCamelObject": in.Name.ToCamel(),
"lowerStartCamelObject": stringx.From(in.Name.ToCamel()).Untitle(), "lowerStartCamelObject": stringx.From(in.Name.ToCamel()).Untitle(),
}) })
if err != nil { if err != nil {
return "", err return "", err
} }
return output.String(), nil return output.String(), nil
} }

@ -145,7 +145,10 @@ func Test_genPublicModel(t *testing.T) {
tables, err := parser.Parse(modelFilename, "") tables, err := parser.Parse(modelFilename, "")
require.Equal(t, 1, len(tables)) require.Equal(t, 1, len(tables))
code, err := g.genModelCustom(*tables[0]) code, err := g.genModelCustom(*tables[0], false)
assert.NoError(t, err) 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 // ModelCustom defines a template for extension
const ModelCustom = `package {{.pkg}} 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" import "github.com/zeromicro/go-zero/core/stores/sqlx"
{{end}}
var _ {{.upperStartCamelObject}}Model = (*custom{{.upperStartCamelObject}}Model)(nil) var _ {{.upperStartCamelObject}}Model = (*custom{{.upperStartCamelObject}}Model)(nil)
type ( type (

Loading…
Cancel
Save