func export support
支持快捷函数导出。
This commit is contained in:
@@ -55,7 +55,7 @@ type _{{$obj.StructName}}Mgr struct {
|
||||
// {{$obj.StructName}}Mgr open func
|
||||
func {{$obj.StructName}}Mgr(db *gorm.DB) *_{{$obj.StructName}}Mgr {
|
||||
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}}
|
||||
}
|
||||
@@ -64,5 +64,118 @@ func {{$obj.StructName}}Mgr(db *gorm.DB) *_{{$obj.StructName}}Mgr {
|
||||
func (obj *_{{$obj.StructName}}Mgr) GetTableName() string {
|
||||
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}}
|
||||
}
|
||||
}`
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user