goctl model reactor (#15)
* reactor sql generation * reactor sql generation * add console & example * optimize unit test & add document * modify default config * remove test file * Revert "remove test file" This reverts commit 81041f9e * fix stringx.go & optimize example * remove unused code
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
package gen
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"strings"
|
||||
"text/template"
|
||||
|
||||
sqltemplate "github.com/tal-tech/go-zero/tools/goctl/model/sql/template"
|
||||
"github.com/tal-tech/go-zero/tools/goctl/model/sql/parser"
|
||||
"github.com/tal-tech/go-zero/tools/goctl/model/sql/template"
|
||||
"github.com/tal-tech/go-zero/tools/goctl/util/templatex"
|
||||
)
|
||||
|
||||
func genFields(fields []*InnerField) (string, error) {
|
||||
list := make([]string, 0)
|
||||
func genFields(fields []parser.Field) (string, error) {
|
||||
var list []string
|
||||
for _, field := range fields {
|
||||
result, err := genField(field)
|
||||
if err != nil {
|
||||
@@ -17,23 +17,25 @@ func genFields(fields []*InnerField) (string, error) {
|
||||
}
|
||||
list = append(list, result)
|
||||
}
|
||||
return strings.Join(list, "\r\n"), nil
|
||||
return strings.Join(list, "\n"), nil
|
||||
}
|
||||
|
||||
func genField(field *InnerField) (string, error) {
|
||||
t, err := template.New("types").Parse(sqltemplate.Field)
|
||||
if err != nil {
|
||||
return "", nil
|
||||
}
|
||||
var typeBuffer = new(bytes.Buffer)
|
||||
err = t.Execute(typeBuffer, map[string]string{
|
||||
"name": field.UpperCamelCase,
|
||||
"type": field.DataType,
|
||||
"tag": field.Tag,
|
||||
"comment": field.Comment,
|
||||
})
|
||||
func genField(field parser.Field) (string, error) {
|
||||
tag, err := genTag(field.Name.Source())
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return typeBuffer.String(), nil
|
||||
output, err := templatex.With("types").
|
||||
Parse(template.Field).
|
||||
Execute(map[string]interface{}{
|
||||
"name": field.Name.Snake2Camel(),
|
||||
"type": field.DataType,
|
||||
"tag": tag,
|
||||
"hasComment": field.Comment != "",
|
||||
"comment": field.Comment,
|
||||
})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return output.String(), nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user