代码拉取完成,页面将自动刷新
package generator
import (
"go/types"
"path"
"path/filepath"
"gitee.com/go-genie/codegen"
"gitee.com/go-genie/packagesx"
)
func NewSqlFuncGenerator(pkg *packagesx.Package) *SqlFuncGenerator {
return &SqlFuncGenerator{
pkg: pkg,
}
}
type SqlFuncGenerator struct {
Config
pkg *packagesx.Package
model *Model
}
type Config struct {
StructName string
TableName string
Database string
WithComments bool
WithTableName bool
WithTableInterfaces bool
WithMethods bool
FieldPrimaryKey string
FieldKeyDeletedAt string
FieldKeyCreatedAt string
FieldKeyUpdatedAt string
}
func (g *Config) SetDefaults() {
if g.FieldKeyDeletedAt == "" {
g.FieldKeyDeletedAt = "DeletedAt"
}
if g.FieldKeyCreatedAt == "" {
g.FieldKeyCreatedAt = "CreatedAt"
}
if g.FieldKeyUpdatedAt == "" {
g.FieldKeyUpdatedAt = "UpdatedAt"
}
if g.TableName == "" {
g.TableName = toDefaultTableName(g.StructName)
}
}
func (g *SqlFuncGenerator) Scan() {
for ident, obj := range g.pkg.TypesInfo.Defs {
if typeName, ok := obj.(*types.TypeName); ok {
if typeName.Name() == g.StructName {
if _, ok := typeName.Type().Underlying().(*types.Struct); ok {
g.model = NewModel(g.pkg, typeName, g.pkg.CommentsOf(ident), &g.Config)
}
}
}
}
}
func (g *SqlFuncGenerator) Output(cwd string) {
if g.model == nil {
return
}
dir, _ := filepath.Rel(cwd, filepath.Dir(g.pkg.GoFiles[0]))
filename := codegen.GeneratedFileSuffix(path.Join(dir, codegen.LowerSnakeCase(g.StructName)+".go"))
file := codegen.NewFile(g.pkg.Name, filename)
g.model.WriteTo(file)
_, _ = file.WriteFile()
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。