func export support
支持快捷函数导出。
This commit is contained in:
@@ -4,6 +4,7 @@ out_dir : ./model # 输出目录
|
|||||||
singular_table : false # 单表模式:true:禁用表名复数,false:采用表明复数 参考:gorm.SingularTable
|
singular_table : false # 单表模式:true:禁用表名复数,false:采用表明复数 参考:gorm.SingularTable
|
||||||
simple : true # 简单输出(默认gorm标签不输出)
|
simple : true # 简单输出(默认gorm标签不输出)
|
||||||
is_out_sql : false # 是否输出 sql 原信息
|
is_out_sql : false # 是否输出 sql 原信息
|
||||||
|
is_out_func : true # 是否输出 快捷函数
|
||||||
is_json_tag : true # 是否打json标记
|
is_json_tag : true # 是否打json标记
|
||||||
is_foreign_key : true # 是否导出外键关联
|
is_foreign_key : true # 是否导出外键关联
|
||||||
mysql_info:
|
mysql_info:
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ type Config struct {
|
|||||||
SingularTable bool `yaml:"singular_table"`
|
SingularTable bool `yaml:"singular_table"`
|
||||||
IsForeignKey bool `yaml:"is_foreign_key"`
|
IsForeignKey bool `yaml:"is_foreign_key"`
|
||||||
IsOutSQL bool `yaml:"is_out_sql"`
|
IsOutSQL bool `yaml:"is_out_sql"`
|
||||||
|
IsOutFunc bool `yaml:"is_out_func"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// MysqlDbInfo mysql database information. mysql 数据库信息
|
// MysqlDbInfo mysql database information. mysql 数据库信息
|
||||||
@@ -88,3 +89,13 @@ func SetForeignKey(b bool) {
|
|||||||
func GetIsOutSQL() bool {
|
func GetIsOutSQL() bool {
|
||||||
return _map.IsOutSQL
|
return _map.IsOutSQL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetIsOutFunc if is output func .
|
||||||
|
func GetIsOutFunc() bool {
|
||||||
|
return _map.IsOutFunc
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetIsOutFunc if is output func .
|
||||||
|
func SetIsOutFunc(b bool) {
|
||||||
|
_map.IsOutFunc = b
|
||||||
|
}
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ type _{{$obj.StructName}}Mgr struct {
|
|||||||
// {{$obj.StructName}}Mgr open func
|
// {{$obj.StructName}}Mgr open func
|
||||||
func {{$obj.StructName}}Mgr(db *gorm.DB) *_{{$obj.StructName}}Mgr {
|
func {{$obj.StructName}}Mgr(db *gorm.DB) *_{{$obj.StructName}}Mgr {
|
||||||
if db == nil {
|
if db == nil {
|
||||||
panic(fmt.Errorf("{{$obj.StructName}}Mgr init need db"))
|
panic(fmt.Errorf("{{$obj.StructName}}Mgr need init by db"))
|
||||||
}
|
}
|
||||||
return &_{{$obj.StructName}}Mgr{_BaseMgr: &_BaseMgr{DB: db}}
|
return &_{{$obj.StructName}}Mgr{_BaseMgr: &_BaseMgr{DB: db}}
|
||||||
}
|
}
|
||||||
@@ -64,5 +64,118 @@ func {{$obj.StructName}}Mgr(db *gorm.DB) *_{{$obj.StructName}}Mgr {
|
|||||||
func (obj *_{{$obj.StructName}}Mgr) GetTableName() string {
|
func (obj *_{{$obj.StructName}}Mgr) GetTableName() string {
|
||||||
return "{{$obj.TableName}}"
|
return "{{$obj.TableName}}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get 获取
|
||||||
|
func (obj *_{{$obj.StructName}}Mgr) Get() (result {{$obj.StructName}}, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Find(&result).Error
|
||||||
|
{{GenPreloadList $obj.PreloadList false}}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gets 获取批量结果
|
||||||
|
func (obj *_{{$obj.StructName}}Mgr) Gets() (results []*{{$obj.StructName}}, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Find(&results).Error
|
||||||
|
{{GenPreloadList $obj.PreloadList true}}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////option case ////////////////////////////////////////////
|
||||||
|
{{range $oem := $obj.Em}}
|
||||||
|
// With{{$oem.ColStructName}} {{$oem.ColName}}获取 {{$oem.Notes}}
|
||||||
|
func (obj *_{{$obj.StructName}}Mgr) With{{$oem.ColStructName}}({{$oem.ColStructName}} {{$oem.Type}}) Option {
|
||||||
|
return optionFunc(func(o *options) { o.query["{{$oem.ColName}}"] = {{$oem.ColStructName}} })
|
||||||
|
}
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
// GetByOption 功能选项模式获取
|
||||||
|
func (obj *_{{$obj.StructName}}Mgr) GetByOption(opts ...Option) (result {{$obj.StructName}}, err error) {
|
||||||
|
options := options{
|
||||||
|
query: make(map[string]interface{}, len(opts)),
|
||||||
|
}
|
||||||
|
for _, o := range opts {
|
||||||
|
o.apply(&options)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where(options.query).Find(&result).Error
|
||||||
|
{{GenPreloadList $obj.PreloadList false}}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetByOptions 批量功能选项模式获取
|
||||||
|
func (obj *_{{$obj.StructName}}Mgr) GetByOptions(opts ...Option) (results []*{{$obj.StructName}}, err error) {
|
||||||
|
options := options{
|
||||||
|
query: make(map[string]interface{}, len(opts)),
|
||||||
|
}
|
||||||
|
for _, o := range opts {
|
||||||
|
o.apply(&options)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where(options.query).Find(&results).Error
|
||||||
|
|
||||||
|
{{GenPreloadList $obj.PreloadList true}}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
//////////////////////////enume case ////////////////////////////////////////////
|
||||||
|
|
||||||
|
{{range $oem := $obj.Em}}
|
||||||
|
// GetFrom{{$oem.ColStructName}} 通过{{$oem.ColName}}获取内容 {{$oem.Notes}} {{if $oem.IsMulti}}
|
||||||
|
func (obj *_{{$obj.StructName}}Mgr) GetFrom{{$oem.ColStructName}}({{$oem.ColStructName}} {{$oem.Type}}) (results []*{{$obj.StructName}}, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("{{$oem.ColName}} = ?", {{$oem.ColStructName}}).Find(&results).Error
|
||||||
|
{{GenPreloadList $obj.PreloadList true}}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
{{else}}
|
||||||
|
func (obj *_{{$obj.StructName}}Mgr) GetFrom{{$oem.ColStructName}}({{$oem.ColStructName}} {{$oem.Type}}) (result {{$obj.StructName}}, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("{{$oem.ColName}} = ?", {{$oem.ColStructName}}).Find(&result).Error
|
||||||
|
{{GenPreloadList $obj.PreloadList false}}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
{{end}}
|
||||||
|
// GetsBatchFrom{{$oem.ColStructName}} 批量唯一主键查找 {{$oem.Notes}}
|
||||||
|
func (obj *_{{$obj.StructName}}Mgr) GetsBatchFrom{{$oem.ColStructName}}({{$oem.ColStructName}}s []{{$oem.Type}}) (results []*{{$obj.StructName}}, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("{{$oem.ColName}} IN (?)", {{$oem.ColStructName}}s).Find(&results).Error
|
||||||
|
{{GenPreloadList $obj.PreloadList true}}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
{{end}}
|
||||||
`
|
`
|
||||||
|
genPreload = `if err == nil && obj.isRelated { {{range $obj := .}}{{if $obj.IsMulti}}
|
||||||
|
{
|
||||||
|
var info []{{$obj.ForeignkeyStructName}} // {{$obj.Notes}}
|
||||||
|
err = obj.DB.Table("{{$obj.ForeignkeyTableName}}").Where("{{$obj.ForeignkeyCol}} = ?", result.{{$obj.ColStructName}}).Find(&info).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
result.{{$obj.ForeignkeyStructName}}List = info
|
||||||
|
} {{else}}
|
||||||
|
{
|
||||||
|
var info {{$obj.ForeignkeyStructName}} // {{$obj.Notes}}
|
||||||
|
err = obj.DB.Table("{{$obj.ForeignkeyTableName}}").Where("{{$obj.ForeignkeyCol}} = ?", result.{{$obj.ColStructName}}).Find(&info).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
result.{{$obj.ForeignkeyStructName}} = info
|
||||||
|
} {{end}} {{end}}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
genPreloadMulti = `if err == nil && obj.isRelated {
|
||||||
|
for i := 0; i < len(results); i++ { {{range $obj := .}}{{if $obj.IsMulti}}
|
||||||
|
{
|
||||||
|
var info []{{$obj.ForeignkeyStructName}} // {{$obj.Notes}}
|
||||||
|
err = obj.DB.Table("{{$obj.ForeignkeyTableName}}").Where("{{$obj.ForeignkeyCol}} = ?", results[i].{{$obj.ColStructName}}).Find(&info).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
results[i].{{$obj.ForeignkeyStructName}}List = info
|
||||||
|
} {{else}}
|
||||||
|
{
|
||||||
|
var info {{$obj.ForeignkeyStructName}} // {{$obj.Notes}}
|
||||||
|
err = obj.DB.Table("{{$obj.ForeignkeyTableName}}").Where("{{$obj.ForeignkeyCol}} = ?", results[i].{{$obj.ColStructName}}).Find(&info).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
results[i].{{$obj.ForeignkeyStructName}} = info
|
||||||
|
} {{end}} {{end}}
|
||||||
|
}
|
||||||
|
}`
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ type _ExampleMgr struct {
|
|||||||
// ExampleMgr open func
|
// ExampleMgr open func
|
||||||
func ExampleMgr(db *gorm.DB) *_ExampleMgr {
|
func ExampleMgr(db *gorm.DB) *_ExampleMgr {
|
||||||
if db == nil {
|
if db == nil {
|
||||||
panic(fmt.Errorf("ExampleMgr init need db"))
|
panic(fmt.Errorf("ExampleMgr need init by db"))
|
||||||
}
|
}
|
||||||
return &_ExampleMgr{_BaseMgr: &_BaseMgr{DB: db}}
|
return &_ExampleMgr{_BaseMgr: &_BaseMgr{DB: db}}
|
||||||
}
|
}
|
||||||
@@ -116,7 +116,7 @@ func (obj *_ExampleMgr) GetByPrimaryKeys(ids []int64) (results []*Example, err e
|
|||||||
|
|
||||||
//////////////////////////option case ////////////////////////////////////////////
|
//////////////////////////option case ////////////////////////////////////////////
|
||||||
|
|
||||||
// GetByPrimaryKey 功能选项模式获取
|
// GetByOption 功能选项模式获取
|
||||||
func (obj *_ExampleMgr) GetByOption(opts ...Option) (result Example, err error) {
|
func (obj *_ExampleMgr) GetByOption(opts ...Option) (result Example, err error) {
|
||||||
options := options{
|
options := options{
|
||||||
query: make(map[string]interface{}, len(opts)),
|
query: make(map[string]interface{}, len(opts)),
|
||||||
|
|||||||
@@ -9,3 +9,11 @@ func GetGenBaseTemp() string {
|
|||||||
func GetGenLogicTemp() string {
|
func GetGenLogicTemp() string {
|
||||||
return genlogic
|
return genlogic
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetGenPreloadTemp get gen preload template str
|
||||||
|
func GetGenPreloadTemp(multi bool) string {
|
||||||
|
if multi {
|
||||||
|
return genPreloadMulti
|
||||||
|
}
|
||||||
|
return genPreload
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,26 +4,24 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/xxjwxc/gormt/data/view/genfunc/model"
|
||||||
|
|
||||||
"github.com/xxjwxc/public/mysqldb"
|
"github.com/xxjwxc/public/mysqldb"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFunc(t *testing.T) {
|
func TestFunc(t *testing.T) {
|
||||||
orm := mysqldb.OnInitDBOrm("root:qwer@tcp(127.0.0.1:3306)/matrix?charset=utf8&parseTime=True&loc=Local")
|
orm := mysqldb.OnInitDBOrm("root:qwer@tcp(127.0.0.1:3306)/matrix?charset=utf8&parseTime=True&loc=Local")
|
||||||
defer orm.OnDestoryDB()
|
defer orm.OnDestoryDB()
|
||||||
|
mgr := model.OrganMgr(orm.DB)
|
||||||
|
mgr.IsRelated(true) // 设置允许加载外键
|
||||||
|
res, err := mgr.GetFromUserID(2) // 通过列获取
|
||||||
|
fmt.Println(res, err)
|
||||||
|
|
||||||
mgr := ExampleMgr(orm.DB)
|
obj1, err := mgr.GetByOptions(mgr.WithID(1), mgr.WithUserID(1)) // 批量获取
|
||||||
obj, err := mgr.GetFromID(1)
|
|
||||||
fmt.Println(obj, err)
|
|
||||||
|
|
||||||
obj1, err := mgr.GetByPrimaryKey(1)
|
|
||||||
fmt.Println(obj1, err)
|
fmt.Println(obj1, err)
|
||||||
|
|
||||||
obj2, err := mgr.GetByPrimaryKeys([]int64{1, 2})
|
obj2, err := mgr.GetByOption(mgr.WithID(1), mgr.WithUserID(1)) // 多条件获取一条
|
||||||
fmt.Println(obj2, err)
|
fmt.Println(obj2, err)
|
||||||
|
|
||||||
obj3, err := mgr.GetByOptions(mgr.WithID(1), mgr.WithUserID(1))
|
// 复合键获取
|
||||||
fmt.Println(obj3, err)
|
|
||||||
|
|
||||||
obj4, err := mgr.GetByOption(mgr.WithID(1), mgr.WithUserID(1))
|
|
||||||
fmt.Println(obj4, err)
|
|
||||||
}
|
}
|
||||||
|
|||||||
44
data/view/genfunc/model/gen.base.go
Normal file
44
data/view/genfunc/model/gen.base.go
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/jinzhu/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
// prepare for outher
|
||||||
|
type _BaseMgr struct {
|
||||||
|
*gorm.DB
|
||||||
|
ctx *context.Context
|
||||||
|
isRelated bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCtx set context
|
||||||
|
func (obj *_BaseMgr) SetCtx(c *context.Context) {
|
||||||
|
obj.ctx = c
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDB get gorm.DB info
|
||||||
|
func (obj *_BaseMgr) GetDB() *gorm.DB {
|
||||||
|
return obj.DB
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsRelated Query foreign key Association.是否查询外键关联(gorm.Related)
|
||||||
|
func (obj *_BaseMgr) IsRelated(b bool) {
|
||||||
|
obj.isRelated = b
|
||||||
|
}
|
||||||
|
|
||||||
|
type options struct {
|
||||||
|
query map[string]interface{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Option overrides behavior of Connect.
|
||||||
|
type Option interface {
|
||||||
|
apply(*options)
|
||||||
|
}
|
||||||
|
|
||||||
|
type optionFunc func(*options)
|
||||||
|
|
||||||
|
func (f optionFunc) apply(o *options) {
|
||||||
|
f(o)
|
||||||
|
}
|
||||||
165
data/view/genfunc/model/matrix.gen.example.go
Normal file
165
data/view/genfunc/model/matrix.gen.example.go
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/jinzhu/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type _ExampleMgr struct {
|
||||||
|
*_BaseMgr
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExampleMgr open func
|
||||||
|
func ExampleMgr(db *gorm.DB) *_ExampleMgr {
|
||||||
|
if db == nil {
|
||||||
|
panic(fmt.Errorf("ExampleMgr need init by db"))
|
||||||
|
}
|
||||||
|
return &_ExampleMgr{_BaseMgr: &_BaseMgr{DB: db}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTableName get sql table name.获取数据库名字
|
||||||
|
func (obj *_ExampleMgr) GetTableName() string {
|
||||||
|
return "example"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get 获取
|
||||||
|
func (obj *_ExampleMgr) Get() (result Example, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Find(&result).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gets 获取批量结果
|
||||||
|
func (obj *_ExampleMgr) Gets() (results []*Example, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////option case ////////////////////////////////////////////
|
||||||
|
|
||||||
|
// WithUserID user_id获取
|
||||||
|
func (obj *_ExampleMgr) WithUserID(UserID int) Option {
|
||||||
|
return optionFunc(func(o *options) { o.query["user_id"] = UserID })
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithName name获取
|
||||||
|
func (obj *_ExampleMgr) WithName(Name string) Option {
|
||||||
|
return optionFunc(func(o *options) { o.query["name"] = Name })
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithSex sex获取
|
||||||
|
func (obj *_ExampleMgr) WithSex(Sex int) Option {
|
||||||
|
return optionFunc(func(o *options) { o.query["sex"] = Sex })
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithJob job获取
|
||||||
|
func (obj *_ExampleMgr) WithJob(Job int) Option {
|
||||||
|
return optionFunc(func(o *options) { o.query["job"] = Job })
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithID id获取
|
||||||
|
func (obj *_ExampleMgr) WithID(ID int) Option {
|
||||||
|
return optionFunc(func(o *options) { o.query["id"] = ID })
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetByOption 功能选项模式获取
|
||||||
|
func (obj *_ExampleMgr) GetByOption(opts ...Option) (result Example, err error) {
|
||||||
|
options := options{
|
||||||
|
query: make(map[string]interface{}, len(opts)),
|
||||||
|
}
|
||||||
|
for _, o := range opts {
|
||||||
|
o.apply(&options)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where(options.query).Find(&result).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetByOptions 批量功能选项模式获取
|
||||||
|
func (obj *_ExampleMgr) GetByOptions(opts ...Option) (results []*Example, err error) {
|
||||||
|
options := options{
|
||||||
|
query: make(map[string]interface{}, len(opts)),
|
||||||
|
}
|
||||||
|
for _, o := range opts {
|
||||||
|
o.apply(&options)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where(options.query).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////enume case ////////////////////////////////////////////
|
||||||
|
|
||||||
|
// GetFromUserID 通过user_id获取内容
|
||||||
|
func (obj *_ExampleMgr) GetFromUserID(UserID int) (result Example, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("user_id = ?", UserID).Find(&result).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetsBatchFromUserID 批量唯一主键查找
|
||||||
|
func (obj *_ExampleMgr) GetsBatchFromUserID(UserIDs []int) (results []*Example, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("user_id IN (?)", UserIDs).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFromName 通过name获取内容
|
||||||
|
func (obj *_ExampleMgr) GetFromName(Name string) (results []*Example, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("name = ?", Name).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetsBatchFromName 批量唯一主键查找
|
||||||
|
func (obj *_ExampleMgr) GetsBatchFromName(Names []string) (results []*Example, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("name IN (?)", Names).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFromSex 通过sex获取内容
|
||||||
|
func (obj *_ExampleMgr) GetFromSex(Sex int) (results []*Example, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("sex = ?", Sex).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetsBatchFromSex 批量唯一主键查找
|
||||||
|
func (obj *_ExampleMgr) GetsBatchFromSex(Sexs []int) (results []*Example, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("sex IN (?)", Sexs).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFromJob 通过job获取内容
|
||||||
|
func (obj *_ExampleMgr) GetFromJob(Job int) (results []*Example, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("job = ?", Job).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetsBatchFromJob 批量唯一主键查找
|
||||||
|
func (obj *_ExampleMgr) GetsBatchFromJob(Jobs []int) (results []*Example, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("job IN (?)", Jobs).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFromID 通过id获取内容
|
||||||
|
func (obj *_ExampleMgr) GetFromID(ID int) (results []*Example, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("id = ?", ID).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetsBatchFromID 批量唯一主键查找
|
||||||
|
func (obj *_ExampleMgr) GetsBatchFromID(IDs []int) (results []*Example, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("id IN (?)", IDs).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
276
data/view/genfunc/model/matrix.gen.organ.go
Normal file
276
data/view/genfunc/model/matrix.gen.organ.go
Normal file
@@ -0,0 +1,276 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/jinzhu/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type _OrganMgr struct {
|
||||||
|
*_BaseMgr
|
||||||
|
}
|
||||||
|
|
||||||
|
// OrganMgr open func
|
||||||
|
func OrganMgr(db *gorm.DB) *_OrganMgr {
|
||||||
|
if db == nil {
|
||||||
|
panic(fmt.Errorf("OrganMgr need init by db"))
|
||||||
|
}
|
||||||
|
return &_OrganMgr{_BaseMgr: &_BaseMgr{DB: db}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTableName get sql table name.获取数据库名字
|
||||||
|
func (obj *_OrganMgr) GetTableName() string {
|
||||||
|
return "organ"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get 获取
|
||||||
|
func (obj *_OrganMgr) Get() (result Organ, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Find(&result).Error
|
||||||
|
if err == nil && obj.isRelated {
|
||||||
|
{
|
||||||
|
var info []User //
|
||||||
|
err = obj.DB.Table("user").Where("sex = ?", result.UserID).Find(&info).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
result.UserList = info
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gets 获取批量结果
|
||||||
|
func (obj *_OrganMgr) Gets() (results []*Organ, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Find(&results).Error
|
||||||
|
if err == nil && obj.isRelated {
|
||||||
|
for i := 0; i < len(results); i++ {
|
||||||
|
{
|
||||||
|
var info []User //
|
||||||
|
err = obj.DB.Table("user").Where("sex = ?", results[i].UserID).Find(&info).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
results[i].UserList = info
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////option case ////////////////////////////////////////////
|
||||||
|
|
||||||
|
// WithID id获取
|
||||||
|
func (obj *_OrganMgr) WithID(ID int) Option {
|
||||||
|
return optionFunc(func(o *options) { o.query["id"] = ID })
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithUserID user_id获取
|
||||||
|
func (obj *_OrganMgr) WithUserID(UserID int) Option {
|
||||||
|
return optionFunc(func(o *options) { o.query["user_id"] = UserID })
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithType type获取
|
||||||
|
func (obj *_OrganMgr) WithType(Type int) Option {
|
||||||
|
return optionFunc(func(o *options) { o.query["type"] = Type })
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithScore score获取
|
||||||
|
func (obj *_OrganMgr) WithScore(Score int) Option {
|
||||||
|
return optionFunc(func(o *options) { o.query["score"] = Score })
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetByOption 功能选项模式获取
|
||||||
|
func (obj *_OrganMgr) GetByOption(opts ...Option) (result Organ, err error) {
|
||||||
|
options := options{
|
||||||
|
query: make(map[string]interface{}, len(opts)),
|
||||||
|
}
|
||||||
|
for _, o := range opts {
|
||||||
|
o.apply(&options)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where(options.query).Find(&result).Error
|
||||||
|
if err == nil && obj.isRelated {
|
||||||
|
{
|
||||||
|
var info []User //
|
||||||
|
err = obj.DB.Table("user").Where("sex = ?", result.UserID).Find(&info).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
result.UserList = info
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetByOptions 批量功能选项模式获取
|
||||||
|
func (obj *_OrganMgr) GetByOptions(opts ...Option) (results []*Organ, err error) {
|
||||||
|
options := options{
|
||||||
|
query: make(map[string]interface{}, len(opts)),
|
||||||
|
}
|
||||||
|
for _, o := range opts {
|
||||||
|
o.apply(&options)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where(options.query).Find(&results).Error
|
||||||
|
|
||||||
|
if err == nil && obj.isRelated {
|
||||||
|
for i := 0; i < len(results); i++ {
|
||||||
|
{
|
||||||
|
var info []User //
|
||||||
|
err = obj.DB.Table("user").Where("sex = ?", results[i].UserID).Find(&info).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
results[i].UserList = info
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////enume case ////////////////////////////////////////////
|
||||||
|
|
||||||
|
// GetFromID 通过id获取内容
|
||||||
|
func (obj *_OrganMgr) GetFromID(ID int) (result Organ, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("id = ?", ID).Find(&result).Error
|
||||||
|
if err == nil && obj.isRelated {
|
||||||
|
{
|
||||||
|
var info []User //
|
||||||
|
err = obj.DB.Table("user").Where("sex = ?", result.UserID).Find(&info).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
result.UserList = info
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetsBatchFromID 批量唯一主键查找
|
||||||
|
func (obj *_OrganMgr) GetsBatchFromID(IDs []int) (results []*Organ, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("id IN (?)", IDs).Find(&results).Error
|
||||||
|
if err == nil && obj.isRelated {
|
||||||
|
for i := 0; i < len(results); i++ {
|
||||||
|
{
|
||||||
|
var info []User //
|
||||||
|
err = obj.DB.Table("user").Where("sex = ?", results[i].UserID).Find(&info).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
results[i].UserList = info
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFromUserID 通过user_id获取内容
|
||||||
|
func (obj *_OrganMgr) GetFromUserID(UserID int) (results []*Organ, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("user_id = ?", UserID).Find(&results).Error
|
||||||
|
if err == nil && obj.isRelated {
|
||||||
|
for i := 0; i < len(results); i++ {
|
||||||
|
{
|
||||||
|
var info []User //
|
||||||
|
err = obj.DB.Table("user").Where("sex = ?", results[i].UserID).Find(&info).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
results[i].UserList = info
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetsBatchFromUserID 批量唯一主键查找
|
||||||
|
func (obj *_OrganMgr) GetsBatchFromUserID(UserIDs []int) (results []*Organ, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("user_id IN (?)", UserIDs).Find(&results).Error
|
||||||
|
if err == nil && obj.isRelated {
|
||||||
|
for i := 0; i < len(results); i++ {
|
||||||
|
{
|
||||||
|
var info []User //
|
||||||
|
err = obj.DB.Table("user").Where("sex = ?", results[i].UserID).Find(&info).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
results[i].UserList = info
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFromType 通过type获取内容
|
||||||
|
func (obj *_OrganMgr) GetFromType(Type int) (results []*Organ, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("type = ?", Type).Find(&results).Error
|
||||||
|
if err == nil && obj.isRelated {
|
||||||
|
for i := 0; i < len(results); i++ {
|
||||||
|
{
|
||||||
|
var info []User //
|
||||||
|
err = obj.DB.Table("user").Where("sex = ?", results[i].UserID).Find(&info).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
results[i].UserList = info
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetsBatchFromType 批量唯一主键查找
|
||||||
|
func (obj *_OrganMgr) GetsBatchFromType(Types []int) (results []*Organ, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("type IN (?)", Types).Find(&results).Error
|
||||||
|
if err == nil && obj.isRelated {
|
||||||
|
for i := 0; i < len(results); i++ {
|
||||||
|
{
|
||||||
|
var info []User //
|
||||||
|
err = obj.DB.Table("user").Where("sex = ?", results[i].UserID).Find(&info).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
results[i].UserList = info
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFromScore 通过score获取内容
|
||||||
|
func (obj *_OrganMgr) GetFromScore(Score int) (results []*Organ, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("score = ?", Score).Find(&results).Error
|
||||||
|
if err == nil && obj.isRelated {
|
||||||
|
for i := 0; i < len(results); i++ {
|
||||||
|
{
|
||||||
|
var info []User //
|
||||||
|
err = obj.DB.Table("user").Where("sex = ?", results[i].UserID).Find(&info).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
results[i].UserList = info
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetsBatchFromScore 批量唯一主键查找
|
||||||
|
func (obj *_OrganMgr) GetsBatchFromScore(Scores []int) (results []*Organ, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("score IN (?)", Scores).Find(&results).Error
|
||||||
|
if err == nil && obj.isRelated {
|
||||||
|
for i := 0; i < len(results); i++ {
|
||||||
|
{
|
||||||
|
var info []User //
|
||||||
|
err = obj.DB.Table("user").Where("sex = ?", results[i].UserID).Find(&info).Error
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
results[i].UserList = info
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
146
data/view/genfunc/model/matrix.gen.user.go
Normal file
146
data/view/genfunc/model/matrix.gen.user.go
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/jinzhu/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type _UserMgr struct {
|
||||||
|
*_BaseMgr
|
||||||
|
}
|
||||||
|
|
||||||
|
// UserMgr open func
|
||||||
|
func UserMgr(db *gorm.DB) *_UserMgr {
|
||||||
|
if db == nil {
|
||||||
|
panic(fmt.Errorf("UserMgr need init by db"))
|
||||||
|
}
|
||||||
|
return &_UserMgr{_BaseMgr: &_BaseMgr{DB: db}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTableName get sql table name.获取数据库名字
|
||||||
|
func (obj *_UserMgr) GetTableName() string {
|
||||||
|
return "user"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get 获取
|
||||||
|
func (obj *_UserMgr) Get() (result User, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Find(&result).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gets 获取批量结果
|
||||||
|
func (obj *_UserMgr) Gets() (results []*User, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////option case ////////////////////////////////////////////
|
||||||
|
|
||||||
|
// WithUserID userId获取
|
||||||
|
func (obj *_UserMgr) WithUserID(UserID int) Option {
|
||||||
|
return optionFunc(func(o *options) { o.query["userId"] = UserID })
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithName name获取
|
||||||
|
func (obj *_UserMgr) WithName(Name string) Option {
|
||||||
|
return optionFunc(func(o *options) { o.query["name"] = Name })
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithSex sex获取
|
||||||
|
func (obj *_UserMgr) WithSex(Sex int) Option {
|
||||||
|
return optionFunc(func(o *options) { o.query["sex"] = Sex })
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithJob job获取
|
||||||
|
func (obj *_UserMgr) WithJob(Job int) Option {
|
||||||
|
return optionFunc(func(o *options) { o.query["job"] = Job })
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetByOption 功能选项模式获取
|
||||||
|
func (obj *_UserMgr) GetByOption(opts ...Option) (result User, err error) {
|
||||||
|
options := options{
|
||||||
|
query: make(map[string]interface{}, len(opts)),
|
||||||
|
}
|
||||||
|
for _, o := range opts {
|
||||||
|
o.apply(&options)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where(options.query).Find(&result).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetByOptions 批量功能选项模式获取
|
||||||
|
func (obj *_UserMgr) GetByOptions(opts ...Option) (results []*User, err error) {
|
||||||
|
options := options{
|
||||||
|
query: make(map[string]interface{}, len(opts)),
|
||||||
|
}
|
||||||
|
for _, o := range opts {
|
||||||
|
o.apply(&options)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where(options.query).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////enume case ////////////////////////////////////////////
|
||||||
|
|
||||||
|
// GetFromUserID 通过userId获取内容
|
||||||
|
func (obj *_UserMgr) GetFromUserID(UserID int) (result User, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("userId = ?", UserID).Find(&result).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetsBatchFromUserID 批量唯一主键查找
|
||||||
|
func (obj *_UserMgr) GetsBatchFromUserID(UserIDs []int) (results []*User, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("userId IN (?)", UserIDs).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFromName 通过name获取内容
|
||||||
|
func (obj *_UserMgr) GetFromName(Name string) (results []*User, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("name = ?", Name).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetsBatchFromName 批量唯一主键查找
|
||||||
|
func (obj *_UserMgr) GetsBatchFromName(Names []string) (results []*User, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("name IN (?)", Names).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFromSex 通过sex获取内容
|
||||||
|
func (obj *_UserMgr) GetFromSex(Sex int) (results []*User, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("sex = ?", Sex).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetsBatchFromSex 批量唯一主键查找
|
||||||
|
func (obj *_UserMgr) GetsBatchFromSex(Sexs []int) (results []*User, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("sex IN (?)", Sexs).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetFromJob 通过job获取内容
|
||||||
|
func (obj *_UserMgr) GetFromJob(Job int) (results []*User, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("job = ?", Job).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetsBatchFromJob 批量唯一主键查找
|
||||||
|
func (obj *_UserMgr) GetsBatchFromJob(Jobs []int) (results []*User, err error) {
|
||||||
|
err = obj.DB.Table(obj.GetTableName()).Where("job IN (?)", Jobs).Find(&results).Error
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
27
data/view/genfunc/model/matrix.go
Normal file
27
data/view/genfunc/model/matrix.go
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
package model
|
||||||
|
|
||||||
|
// Example [...]
|
||||||
|
type Example struct {
|
||||||
|
UserID int `gorm:"primary_key" json:"user_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Sex int `gorm:"index" json:"sex"`
|
||||||
|
Job int `json:"job"`
|
||||||
|
ID int `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Organ [...]
|
||||||
|
type Organ struct {
|
||||||
|
ID int `gorm:"primary_key" json:"-"`
|
||||||
|
UserID int `gorm:"index" json:"user_id"`
|
||||||
|
UserList []User `gorm:"association_foreignkey:user_id;foreignkey:sex" json:"user_list"`
|
||||||
|
Type int `json:"type"`
|
||||||
|
Score int `json:"score"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// User [...]
|
||||||
|
type User struct {
|
||||||
|
UserID int `gorm:"primary_key" json:"user_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Sex int `gorm:"index" json:"sex"`
|
||||||
|
Job int `json:"job"`
|
||||||
|
}
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
package gtools
|
package gtools
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os/exec"
|
||||||
|
|
||||||
"github.com/xxjwxc/gormt/data/view/model"
|
"github.com/xxjwxc/gormt/data/view/model"
|
||||||
|
|
||||||
"github.com/xxjwxc/gormt/data/config"
|
"github.com/xxjwxc/gormt/data/config"
|
||||||
@@ -28,12 +31,12 @@ func Execute() {
|
|||||||
path := config.GetOutDir() + "/" + v.FileName
|
path := config.GetOutDir() + "/" + v.FileName
|
||||||
tools.WriteFile(path, []string{v.FileCtx}, true)
|
tools.WriteFile(path, []string{v.FileCtx}, true)
|
||||||
|
|
||||||
// fmt.Println("formatting differs from goimport's:")
|
fmt.Println("formatting differs from goimport's:")
|
||||||
// cmd, _ := exec.Command("goimports", "-l", "-w", path).Output()
|
cmd, _ := exec.Command("goimports", "-l", "-w", path).Output()
|
||||||
// fmt.Println(string(cmd))
|
fmt.Println(string(cmd))
|
||||||
|
|
||||||
// fmt.Println("formatting differs from gofmt's:")
|
fmt.Println("formatting differs from gofmt's:")
|
||||||
// cmd, _ = exec.Command("gofmt", "-l", "-w", path).Output()
|
cmd, _ = exec.Command("gofmt", "-l", "-w", path).Output()
|
||||||
// fmt.Println(string(cmd))
|
fmt.Println(string(cmd))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,24 +55,37 @@ func getUninStr(left, middle, right string) string {
|
|||||||
return re
|
return re
|
||||||
}
|
}
|
||||||
|
|
||||||
func getGormModelElement() []ColumusInfo {
|
func getGormModelElement() []EmInfo {
|
||||||
var result []ColumusInfo
|
var result []EmInfo
|
||||||
result = append(result, ColumusInfo{
|
result = append(result, EmInfo{
|
||||||
BaseInfo: BaseInfo{Name: "id", Notes: "Primary key"},
|
IsMulti: false,
|
||||||
Type: "int64", // Type.类型标记
|
Notes: "Primary key",
|
||||||
Index: []KList{KList{Key: ColumusKeyPrimary}}, // index list.index列表
|
Type: "int64", // Type.类型标记
|
||||||
|
ColName: "id",
|
||||||
|
ColStructName: "ID",
|
||||||
})
|
})
|
||||||
result = append(result, ColumusInfo{
|
result = append(result, EmInfo{
|
||||||
BaseInfo: BaseInfo{Name: "created_at", Notes: "created time"},
|
IsMulti: false,
|
||||||
Type: "time.Time", // Type.类型标记
|
Notes: "created time",
|
||||||
|
Type: "time.Time", // Type.类型标记
|
||||||
|
ColName: "created_at",
|
||||||
|
ColStructName: "CreatedAt",
|
||||||
})
|
})
|
||||||
result = append(result, ColumusInfo{
|
|
||||||
BaseInfo: BaseInfo{Name: "updated_at", Notes: "updated time"},
|
result = append(result, EmInfo{
|
||||||
Type: "time.Time", // Type.类型标记
|
IsMulti: false,
|
||||||
|
Notes: "updated at",
|
||||||
|
Type: "time.Time", // Type.类型标记
|
||||||
|
ColName: "updated_at",
|
||||||
|
ColStructName: "UpdatedAt",
|
||||||
})
|
})
|
||||||
result = append(result, ColumusInfo{
|
|
||||||
BaseInfo: BaseInfo{Name: "deleted_at", Notes: "deleted time"},
|
result = append(result, EmInfo{
|
||||||
Type: "time.Time", // Type.类型标记
|
IsMulti: false,
|
||||||
|
Notes: "deleted time",
|
||||||
|
Type: "time.Time", // Type.类型标记
|
||||||
|
ColName: "deleted_at",
|
||||||
|
ColStructName: "DeletedAt",
|
||||||
})
|
})
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,3 +67,34 @@ type GenOutInfo struct {
|
|||||||
FileName string // output file name .输出文件名
|
FileName string // output file name .输出文件名
|
||||||
FileCtx string // output file context. 输出文件内容
|
FileCtx string // output file context. 输出文件内容
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// def func sturct
|
||||||
|
|
||||||
|
// PreloadInfo 预加载列表
|
||||||
|
type PreloadInfo struct {
|
||||||
|
IsMulti bool
|
||||||
|
Notes string // 注释
|
||||||
|
ForeignkeyStructName string // 外键类目
|
||||||
|
ForeignkeyTableName string // 外键表名
|
||||||
|
ForeignkeyCol string // 外键列表
|
||||||
|
ColName string // 表名
|
||||||
|
ColStructName string // 表结构体
|
||||||
|
}
|
||||||
|
|
||||||
|
// EmInfo func 表结构定义
|
||||||
|
type EmInfo struct {
|
||||||
|
IsMulti bool
|
||||||
|
Notes string // 注释
|
||||||
|
Type string // 类型
|
||||||
|
ColName string // 表名
|
||||||
|
ColStructName string // 表结构体
|
||||||
|
}
|
||||||
|
|
||||||
|
type funDef struct {
|
||||||
|
StructName string
|
||||||
|
TableName string
|
||||||
|
PreloadList []PreloadInfo
|
||||||
|
Em []EmInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
|||||||
@@ -208,11 +208,7 @@ func (m *_Model) generateFunc() (genOut []GenOutInfo) {
|
|||||||
pkg.AddImport(`"github.com/jinzhu/gorm"`)
|
pkg.AddImport(`"github.com/jinzhu/gorm"`)
|
||||||
pkg.AddImport(`"fmt"`)
|
pkg.AddImport(`"fmt"`)
|
||||||
|
|
||||||
data := struct {
|
data := funDef{
|
||||||
StructName string
|
|
||||||
TableName string
|
|
||||||
Em []ColumusInfo
|
|
||||||
}{
|
|
||||||
StructName: getCamelName(tab.Name),
|
StructName: getCamelName(tab.Name),
|
||||||
TableName: tab.Name,
|
TableName: tab.Name,
|
||||||
}
|
}
|
||||||
@@ -220,17 +216,57 @@ func (m *_Model) generateFunc() (genOut []GenOutInfo) {
|
|||||||
for _, el := range tab.Em {
|
for _, el := range tab.Em {
|
||||||
if strings.EqualFold(el.Type, "gorm.Model") {
|
if strings.EqualFold(el.Type, "gorm.Model") {
|
||||||
data.Em = append(data.Em, getGormModelElement()...)
|
data.Em = append(data.Em, getGormModelElement()...)
|
||||||
|
pkg.AddImport(`"time"`)
|
||||||
} else {
|
} else {
|
||||||
data.Em = append(data.Em, el)
|
isMulti := true
|
||||||
if v2, ok := cnf.EImportsHead[el.Type]; ok {
|
for _, v1 := range el.Index {
|
||||||
|
switch v1.Key {
|
||||||
|
// case ColumusKeyDefault:
|
||||||
|
case ColumusKeyPrimary: // primary key.主键
|
||||||
|
isMulti = false
|
||||||
|
case ColumusKeyUnique: // unique key.唯一索引
|
||||||
|
isMulti = false
|
||||||
|
//case ColumusKeyIndex: // index key.复合索引
|
||||||
|
case ColumusKeyUniqueIndex: // unique index key.唯一复合索引
|
||||||
|
isMulti = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
typeName := getTypeName(el.Type)
|
||||||
|
data.Em = append(data.Em, EmInfo{
|
||||||
|
IsMulti: isMulti,
|
||||||
|
Notes: el.Notes,
|
||||||
|
Type: typeName, // Type.类型标记
|
||||||
|
ColName: el.Name,
|
||||||
|
ColStructName: getCamelName(el.Name),
|
||||||
|
})
|
||||||
|
if v2, ok := cnf.EImportsHead[typeName]; ok {
|
||||||
if len(v2) > 0 {
|
if len(v2) > 0 {
|
||||||
pkg.AddImport(v2)
|
pkg.AddImport(v2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 外键列表
|
||||||
|
for _, v := range el.ForeignKeyList {
|
||||||
|
isMulti, isFind, notes := m.getColumusKeyMulti(v.TableName, v.ColumnName)
|
||||||
|
if isFind {
|
||||||
|
var info PreloadInfo
|
||||||
|
info.IsMulti = isMulti
|
||||||
|
info.Notes = notes
|
||||||
|
info.ForeignkeyTableName = v.TableName
|
||||||
|
info.ForeignkeyCol = v.ColumnName
|
||||||
|
info.ForeignkeyStructName = getCamelName(v.TableName)
|
||||||
|
info.ColName = el.Name
|
||||||
|
info.ColStructName = getCamelName(el.Name)
|
||||||
|
data.PreloadList = append(data.PreloadList, info)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ---------end--
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tmpl, err := template.New("gen_logic").Parse(genfunc.GetGenLogicTemp())
|
tmpl, err := template.New("gen_logic").Funcs(template.FuncMap{"GenPreloadList": GenPreloadList}).Parse(genfunc.GetGenLogicTemp())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
@@ -239,10 +275,26 @@ func (m *_Model) generateFunc() (genOut []GenOutInfo) {
|
|||||||
|
|
||||||
pkg.AddFuncStr(buf.String())
|
pkg.AddFuncStr(buf.String())
|
||||||
genOut = append(genOut, GenOutInfo{
|
genOut = append(genOut, GenOutInfo{
|
||||||
FileName: fmt.Sprintf("gen.%v.go", tab.Name),
|
FileName: fmt.Sprintf(m.info.DbName+".gen.%v.go", tab.Name),
|
||||||
FileCtx: pkg.Generate(),
|
FileCtx: pkg.Generate(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GenPreloadList 生成list
|
||||||
|
func GenPreloadList(list []PreloadInfo, multi bool) string {
|
||||||
|
if len(list) > 0 {
|
||||||
|
tmpl, err := template.New("gen_preload").Parse(genfunc.GetGenPreloadTemp(multi))
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
var buf bytes.Buffer
|
||||||
|
tmpl.Execute(&buf, list)
|
||||||
|
|
||||||
|
return buf.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user