model support globbing patterns (#153)

* model support globbing patterns

* optimize model

* optimize model

* format code
This commit is contained in:
Keson
2020-10-22 18:33:09 +08:00
committed by GitHub
parent 1fd2ef9347
commit c9494c8bc7
20 changed files with 258 additions and 44 deletions

View File

@@ -24,6 +24,7 @@ type (
source string
dir string
console.Console
pkg string
}
Option func(generator *defaultGenerator)
)
@@ -59,6 +60,8 @@ func (g *defaultGenerator) Start(withCache bool) error {
if err != nil {
return err
}
g.dir = dirAbs
g.pkg = filepath.Base(dirAbs)
err = util.MkdirIfNotExist(dirAbs)
if err != nil {
return err
@@ -82,12 +85,18 @@ func (g *defaultGenerator) Start(withCache bool) error {
}
// generate error file
filename := filepath.Join(dirAbs, "vars.go")
if !util.FileExists(filename) {
err = ioutil.WriteFile(filename, []byte(template.Error), os.ModePerm)
if err != nil {
return err
}
text, err := util.LoadTemplate(category, modelTemplateFile, template.Error)
if err != nil {
return err
}
err = util.With("vars").Parse(text).SaveTo(map[string]interface{}{
"pkg": g.pkg,
}, filename, false)
if err != nil {
return err
}
g.Success("Done.")
return nil
}
@@ -119,8 +128,12 @@ type (
)
func (g *defaultGenerator) genModel(in parser.Table, withCache bool) (string, error) {
text, err := util.LoadTemplate(category, modelTemplateFile, template.Model)
if err != nil {
return "", err
}
t := util.With("model").
Parse(template.Model).
Parse(text).
GoFmt(true)
m, err := genCacheKeys(in)
@@ -188,6 +201,7 @@ func (g *defaultGenerator) genModel(in parser.Table, withCache bool) (string, er
}
output, err := t.Execute(map[string]interface{}{
"pkg": g.pkg,
"imports": importsCode,
"vars": varsCode,
"types": typesCode,

View File

@@ -0,0 +1,18 @@
package gen
import (
"testing"
"github.com/tal-tech/go-zero/core/logx"
)
var (
source = "-- 用户表 --\nCREATE TABLE `user` (\n `id` bigint(10) NOT NULL AUTO_INCREMENT,\n `name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户名称',\n `password` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户密码',\n `mobile` varchar(255) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号',\n `gender` char(5) COLLATE utf8mb4_general_ci NOT NULL COMMENT '男|女|未公开',\n `nickname` varchar(255) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '用户昵称',\n `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,\n `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n PRIMARY KEY (`id`),\n UNIQUE KEY `name_index` (`name`),\n UNIQUE KEY `mobile_index` (`mobile`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;\n\n"
)
func TestNewDefaultGenerator(t *testing.T) {
_ = Clean()
g := NewDefaultGenerator(source, "./model/user")
err := g.Start(true)
logx.Must(err)
}

View File

@@ -14,6 +14,7 @@ func genNew(table Table, withCache bool) (string, error) {
output, err := util.With("new").
Parse(text).
Execute(map[string]interface{}{
"table": table.Name.Source(),
"withCache": withCache,
"upperStartCamelObject": table.Name.ToCamel(),
})

View File

@@ -24,6 +24,7 @@ const (
typesTemplateFile = "types.tpl"
updateTemplateFile = "update.tpl"
varTemplateFile = "var.tpl"
errTemplateFile = "err.tpl"
)
var templates = map[string]string{
@@ -41,6 +42,7 @@ var templates = map[string]string{
typesTemplateFile: template.Types,
updateTemplateFile: template.Update,
varTemplateFile: template.Vars,
errTemplateFile: template.Error,
}
func GenTemplates(_ *cli.Context) error {