feat: Replace mongo package with monc & mon (#2002)
* Replace mongo package with monc & mon * Add terminal whitespace * format code
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
"github.com/zeromicro/go-zero/tools/goctl/util"
|
||||
"github.com/zeromicro/go-zero/tools/goctl/util/format"
|
||||
"github.com/zeromicro/go-zero/tools/goctl/util/pathx"
|
||||
"github.com/zeromicro/go-zero/tools/goctl/util/stringx"
|
||||
)
|
||||
|
||||
// Context defines the model generation data what they needs
|
||||
@@ -25,8 +26,15 @@ func Do(ctx *Context) error {
|
||||
return errors.New("missing config")
|
||||
}
|
||||
|
||||
err := generateModel(ctx)
|
||||
if err != nil {
|
||||
if err := generateTypes(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := generateModel(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := generateCustomModel(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -34,21 +42,47 @@ func Do(ctx *Context) error {
|
||||
}
|
||||
|
||||
func generateModel(ctx *Context) error {
|
||||
for _, t := range ctx.Types {
|
||||
fn, err := format.FileNamingFormat(ctx.Cfg.NamingFormat, t+"_model_gen")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
text, err := pathx.LoadTemplate(category, modelTemplateFile, template.ModelText)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
output := filepath.Join(ctx.Output, fn+".go")
|
||||
if err = util.With("model").Parse(text).GoFmt(true).SaveTo(map[string]interface{}{
|
||||
"Type": stringx.From(t).Title(),
|
||||
"lowerType": stringx.From(t).Untitle(),
|
||||
"Cache": ctx.Cache,
|
||||
}, output, true); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func generateCustomModel(ctx *Context) error {
|
||||
for _, t := range ctx.Types {
|
||||
fn, err := format.FileNamingFormat(ctx.Cfg.NamingFormat, t+"_model")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
text, err := pathx.LoadTemplate(category, modelTemplateFile, template.Text)
|
||||
text, err := pathx.LoadTemplate(category, modelCustomTemplateFile, template.ModelCustomText)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
output := filepath.Join(ctx.Output, fn+".go")
|
||||
err = util.With("model").Parse(text).GoFmt(true).SaveTo(map[string]interface{}{
|
||||
"Type": t,
|
||||
"Cache": ctx.Cache,
|
||||
"Type": stringx.From(t).Title(),
|
||||
"lowerType": stringx.From(t).Untitle(),
|
||||
"Cache": ctx.Cache,
|
||||
}, output, false)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -58,6 +92,29 @@ func generateModel(ctx *Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func generateTypes(ctx *Context) error {
|
||||
for _, t := range ctx.Types {
|
||||
fn, err := format.FileNamingFormat(ctx.Cfg.NamingFormat, t+"types")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
text, err := pathx.LoadTemplate(category, modelTypesTemplateFile, template.ModelTypesText)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
output := filepath.Join(ctx.Output, fn+".go")
|
||||
if err = util.With("model").Parse(text).GoFmt(true).SaveTo(map[string]interface{}{
|
||||
"Type": stringx.From(t).Title(),
|
||||
}, output, false);err!=nil{
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func generateError(ctx *Context) error {
|
||||
text, err := pathx.LoadTemplate(category, errTemplateFile, template.Error)
|
||||
if err != nil {
|
||||
|
||||
@@ -16,20 +16,53 @@ var testTypes = `
|
||||
`
|
||||
|
||||
func TestDo(t *testing.T) {
|
||||
cfg, err := config.NewConfig(config.DefaultFormat)
|
||||
assert.Nil(t, err)
|
||||
t.Run("should generate model", func(t *testing.T) {
|
||||
cfg, err := config.NewConfig(config.DefaultFormat)
|
||||
assert.Nil(t, err)
|
||||
|
||||
tempDir := pathx.MustTempDir()
|
||||
typesfile := filepath.Join(tempDir, "types.go")
|
||||
err = ioutil.WriteFile(typesfile, []byte(testTypes), 0o666)
|
||||
assert.Nil(t, err)
|
||||
tempDir := pathx.MustTempDir()
|
||||
typesfile := filepath.Join(tempDir, "types.go")
|
||||
err = ioutil.WriteFile(typesfile, []byte(testTypes), 0o666)
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = Do(&Context{
|
||||
Types: []string{"User", "Class"},
|
||||
Cache: false,
|
||||
Output: tempDir,
|
||||
Cfg: cfg,
|
||||
err = Do(&Context{
|
||||
Types: []string{"User", "Class"},
|
||||
Cache: false,
|
||||
Output: tempDir,
|
||||
Cfg: cfg,
|
||||
})
|
||||
|
||||
assert.Nil(t, err)
|
||||
})
|
||||
|
||||
assert.Nil(t, err)
|
||||
t.Run("missing config", func(t *testing.T) {
|
||||
tempDir := t.TempDir()
|
||||
typesfile := filepath.Join(tempDir, "types.go")
|
||||
err := ioutil.WriteFile(typesfile, []byte(testTypes), 0o666)
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = Do(&Context{
|
||||
Types: []string{"User", "Class"},
|
||||
Cache: false,
|
||||
Output: tempDir,
|
||||
Cfg: nil,
|
||||
})
|
||||
assert.Error(t, err)
|
||||
})
|
||||
|
||||
t.Run("invalid config", func(t *testing.T) {
|
||||
cfg := &config.Config{NamingFormat: "foo"}
|
||||
tempDir := t.TempDir()
|
||||
typesfile := filepath.Join(tempDir, "types.go")
|
||||
err := ioutil.WriteFile(typesfile, []byte(testTypes), 0o666)
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = Do(&Context{
|
||||
Types: []string{"User", "Class"},
|
||||
Cache: false,
|
||||
Output: tempDir,
|
||||
Cfg: cfg,
|
||||
})
|
||||
assert.Error(t, err)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -8,14 +8,18 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
category = "mongo"
|
||||
modelTemplateFile = "model.tpl"
|
||||
errTemplateFile = "err.tpl"
|
||||
category = "mongo"
|
||||
modelTemplateFile = "model.tpl"
|
||||
modelCustomTemplateFile = "model_custom.tpl"
|
||||
modelTypesTemplateFile = "model_types.tpl"
|
||||
errTemplateFile = "err.tpl"
|
||||
)
|
||||
|
||||
var templates = map[string]string{
|
||||
modelTemplateFile: template.Text,
|
||||
errTemplateFile: template.Error,
|
||||
modelTemplateFile: template.ModelText,
|
||||
modelCustomTemplateFile: template.ModelCustomText,
|
||||
modelTypesTemplateFile: template.ModelTypesText,
|
||||
errTemplateFile: template.Error,
|
||||
}
|
||||
|
||||
// Category returns the mongo category.
|
||||
|
||||
41
tools/goctl/model/mongo/generate/template_test.go
Normal file
41
tools/goctl/model/mongo/generate/template_test.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package generate
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/zeromicro/go-zero/tools/goctl/util/pathx"
|
||||
)
|
||||
|
||||
func TestTemplate(t *testing.T) {
|
||||
tempDir := t.TempDir()
|
||||
pathx.RegisterGoctlHome(tempDir)
|
||||
t.Cleanup(func() {
|
||||
pathx.RegisterGoctlHome("")
|
||||
})
|
||||
|
||||
t.Run("Category", func(t *testing.T) {
|
||||
assert.Equal(t, category, Category())
|
||||
})
|
||||
|
||||
t.Run("Clean", func(t *testing.T) {
|
||||
err := Clean()
|
||||
assert.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("Templates", func(t *testing.T) {
|
||||
err := Templates()
|
||||
assert.NoError(t, err)
|
||||
assert.True(t, pathx.FileExists(filepath.Join(tempDir, category, modelTemplateFile)))
|
||||
})
|
||||
|
||||
t.Run("RevertTemplate", func(t *testing.T) {
|
||||
assert.NoError(t, RevertTemplate(modelTemplateFile))
|
||||
assert.Error(t, RevertTemplate("foo"))
|
||||
})
|
||||
|
||||
t.Run("Update", func(t *testing.T) {
|
||||
assert.NoError(t, Update())
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user