1 Star 0 Fork 1

go-genie/sqlx

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
sql_func_generator.go 1.59 KB
一键复制 编辑 原始数据 按行查看 历史
文兄 提交于 2025-06-17 16:11 +08:00 . init
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()
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/go-genie/sqlx.git
git@gitee.com:go-genie/sqlx.git
go-genie
sqlx
sqlx
v1.1.3

搜索帮助