Sfoglia il codice sorgente

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

* fix: model generation bug on with cache

* chore: refine template

* chore: fix test failure
Kevin Wan 3 anni fa
parent
commit
dfd58c213c

+ 6 - 3
tools/goctl/model/sql/gen/gen.go

@@ -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
 }
 

+ 5 - 2
tools/goctl/model/sql/gen/gen_test.go

@@ -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 {"))
 }

+ 7 - 2
tools/goctl/model/sql/template/model.go

@@ -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 (