[feat] 统一 orm 入口

This commit is contained in:
what 2024-05-07 10:15:55 +08:00
parent 14b6334887
commit 6b87809781
4 changed files with 32 additions and 41 deletions

View File

@ -1,7 +1,5 @@
package base
import "git.fsdpf.net/go/contracts"
type ResCondition struct {
Id int `db:"id"`
Pid int `db:"pid"`
@ -38,5 +36,3 @@ type ResWhereExpr struct {
}
type GetResConditions func(categoryUuid string) []ResCondition
type GetOrmConditionByRes func(categoryUuid string, describe string) contracts.Condition

View File

@ -11,7 +11,6 @@ import (
"github.com/samber/lo"
"git.fsdpf.net/go/contracts"
"git.fsdpf.net/go/contracts/helper"
"git.fsdpf.net/go/contracts/support"
"git.fsdpf.net/go/db"
)
@ -218,14 +217,14 @@ func (this Resource) WithRolesCondition(b *db.Builder, t string, u contracts.Use
isFullRight := false
isFullNot := false
NewOrm := do.MustInvoke[helper.NewOrm](this.container)
NewOrmModel := do.MustInvoke[helper.NewOrmModel](this.container)
NewOrmJoin := do.MustInvoke[helper.NewOrmJoin](this.container)
NewOrm := do.MustInvoke[contracts.NewOrm](this.container)
NewOrmModel := do.MustInvoke[contracts.NewOrmModel](this.container)
NewOrmJoin := do.MustInvoke[contracts.NewOrmJoin](this.container)
GetResRelationResource := do.MustInvoke[GetResRelationResource](this.container)
GetResRelations := do.MustInvoke[GetResRelations](this.container)
GetResource := do.MustInvoke[contracts.GetResource](this.container)
GetOrmConditionByRes := do.MustInvoke[GetOrmConditionByRes](this.container)
GetOrmConditionByRes := do.MustInvoke[contracts.GetOrmConditionByRes](this.container)
items := do.MustInvoke[GetResRoles](this.container)(this.GetUuid(), u.Roles()...)

View File

@ -1,32 +0,0 @@
package helper
import (
"git.fsdpf.net/go/contracts"
"git.fsdpf.net/go/db"
)
// @title 创建关联模型
// @param t 关联类型
// @param m 关联模型
// @param rResource 链接父模型
// @param rField 连接父模型字段, 如 xx_id
// @param rForeignKey 关联外键, 如 id
type NewOrmRelation func(t contracts.RelationType, m contracts.Model, rResource, rField, rForeignKey string) contracts.Model
type NewOrmJoin func(t contracts.RelationType, res contracts.Resource, alias, rResource, rField, rForeignKey string) contracts.Join
type NewOrmCondition func(typ contracts.ConditionType, describe string) contracts.Condition
type NewOrmConditionExpr func(rResource, rField, token string, operator contracts.ConditionOperator, tType contracts.ConditionTokenType, ignoreEmptyParma bool) contracts.ConditionExpr
type NewOrmConditionFuncExpr func(rResource, rField, token string, operator contracts.ConditionOperator, tType contracts.ConditionTokenType, ignoreEmptyParma bool, fn, fnParam string) contracts.ConditionExpr
type NewOrmQueryWithRecursive func(pField, cField string, root any, isWithoutCondition bool, depth int) contracts.QueryWithRecursive
type NewOrmOrderBy func(sql string, direction contracts.OrderByDirection) contracts.OrderBy
type NewOrmGroupBy func(sql string) contracts.GroupBy
type NewOrmModel func(res contracts.Resource, code, name string) contracts.Model
type NewOrm func(res contracts.Resource, tx *db.Transaction) contracts.Orm

28
orm.go
View File

@ -184,3 +184,31 @@ type QueryWithRecursive interface {
ToQueryBuilder(*db.Builder, Model) (*db.Builder, any)
ToTreeData(any) any
}
// @title 创建关联模型
// @param t 关联类型
// @param m 关联模型
// @param rResource 链接父模型
// @param rField 连接父模型字段, 如 xx_id
// @param rForeignKey 关联外键, 如 id
type NewOrmRelation func(t RelationType, m Model, rResource, rField, rForeignKey string) Model
type NewOrmJoin func(t RelationType, res Resource, alias, rResource, rField, rForeignKey string) Join
type NewOrmCondition func(typ ConditionType, describe string) Condition
type NewOrmConditionExpr func(rResource, rField, token string, operator ConditionOperator, tType ConditionTokenType, ignoreEmptyParma bool) ConditionExpr
type NewOrmConditionFuncExpr func(rResource, rField, token string, operator ConditionOperator, tType ConditionTokenType, ignoreEmptyParma bool, fn, fnParam string) ConditionExpr
type NewOrmQueryWithRecursive func(pField, cField string, root any, isWithoutCondition bool, depth int) QueryWithRecursive
type NewOrmOrderBy func(sql string, direction OrderByDirection) OrderBy
type NewOrmGroupBy func(sql string) GroupBy
type NewOrmModel func(res Resource, code, name string) Model
type NewOrm func(res Resource, tx *db.Transaction) Orm
type GetOrmConditionByRes func(categoryUuid string, describe string) Condition