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 {
|
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 (
|
||||||
|
|||||||
Reference in New Issue
Block a user