代码拉取完成,页面将自动刷新
package generator
import (
"gitee.com/go-genie/codegen"
"gitee.com/go-genie/sqlx/builder"
"os"
"path"
"strings"
)
func (m *Model) Generator() error {
cwd, _ := os.Getwd()
file := codegen.NewFile("models", path.Join(cwd, "pkg", "models", codegen.LowerSnakeCase(m.TypeName.Name()))+".go")
snippets := make([]*codegen.SnippetField, 0)
comments := []string{m.TypeName.Name()}
fieldCover := func(arr []string) []string {
newArr := make([]string, len(arr))
for i, v := range arr {
newArr[i] = codegen.LowerCamelCase(v)[1:]
}
return newArr
}
for _, item := range m.StructFields {
lastDotIndex := strings.LastIndex(item.Type.Elem().String(), ".")
field := &codegen.SnippetField{}
if lastDotIndex != -1 {
field = codegen.Var(codegen.BuiltInType(file.Use(item.Type.Elem().String()[0:lastDotIndex], item.Type.Elem().String()[lastDotIndex+1:])), item.Name)
} else {
field = codegen.Var(codegen.BuiltInType(item.Type.Elem().String()), item.Name)
}
field = field.WithTag(m.fieldTag(item))
snippets = append(snippets, field)
}
if len(m.Keys.Primary) > 0 {
comments = append(comments, "@def primary "+strings.Join(fieldCover(m.Keys.Primary), " "))
}
for k, v := range m.Keys.Indexes {
comments = append(comments, "@def index "+k+" "+strings.Join(fieldCover(v), " "))
}
for k, v := range m.Keys.UniqueIndexes {
comments = append(comments, "@def unique_index "+k+" "+strings.Join(fieldCover(v), " "))
}
comments = append(comments, "go:generate tools gen model2 "+m.TypeName.Name()+" --database=DB --with-comments")
file.WriteBlock(
codegen.Comments(comments...),
codegen.DeclType(
codegen.Var(
codegen.Struct(
snippets...,
), m.TypeName.Name(),
),
),
)
_, _ = file.WriteFile()
return nil
}
func (m *Model) fieldTag(field *builder.StructField) string {
s := ""
if len(field.Tags) > 0 {
for k, v := range field.Tags {
if s != "" {
s += " "
}
s += k + ":" + "\"" + string(v) + "\""
}
}
return s
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。