[feat] 依赖调整 git.fsdpf.net/go/contracts => git.fsdpf.net/go/req
This commit is contained in:
@@ -6,9 +6,9 @@ import (
|
||||
"reflect"
|
||||
"strings"
|
||||
|
||||
"git.fsdpf.net/go/contracts"
|
||||
"git.fsdpf.net/go/contracts/support"
|
||||
"git.fsdpf.net/go/condition/contracts"
|
||||
"git.fsdpf.net/go/db"
|
||||
"git.fsdpf.net/go/req"
|
||||
"github.com/samber/lo"
|
||||
"github.com/spf13/cast"
|
||||
)
|
||||
@@ -33,8 +33,8 @@ func init() {
|
||||
type Engine[T any] struct {
|
||||
code string
|
||||
opts engineOptions
|
||||
g contracts.GlobalParams
|
||||
def func(data T, g contracts.GlobalParams) error
|
||||
g req.GlobalParams
|
||||
def func(data T, g req.GlobalParams) error
|
||||
predicates []*EngineCase[T]
|
||||
}
|
||||
|
||||
@@ -43,18 +43,18 @@ func (this Engine[T]) GetCode() string {
|
||||
}
|
||||
|
||||
// 公共参数
|
||||
func (this *Engine[T]) SetGlobalParams(g contracts.GlobalParams) *Engine[T] {
|
||||
func (this *Engine[T]) SetGlobalParams(g req.GlobalParams) *Engine[T] {
|
||||
this.g = g
|
||||
return this
|
||||
}
|
||||
|
||||
func (this *Engine[T]) Case(cond contracts.Condition, cb func(data T, g contracts.GlobalParams) error) *Engine[T] {
|
||||
func (this *Engine[T]) Case(cond contracts.Condition, cb func(data T, g req.GlobalParams) error) *Engine[T] {
|
||||
this.predicates = append(this.predicates, &EngineCase[T]{cond, cb})
|
||||
return this
|
||||
}
|
||||
|
||||
// 基础条件
|
||||
func (this *Engine[T]) Default(cb func(data T, g contracts.GlobalParams) error) *Engine[T] {
|
||||
func (this *Engine[T]) Default(cb func(data T, g req.GlobalParams) error) *Engine[T] {
|
||||
this.def = cb
|
||||
return this
|
||||
}
|
||||
@@ -169,7 +169,7 @@ func (this *Engine[T]) Execute(data T) error {
|
||||
}
|
||||
|
||||
if this.g == nil {
|
||||
this.g = support.NewGlobalParam(`{}`, nil)
|
||||
this.g = req.NewGlobalParam(`{}`, nil)
|
||||
}
|
||||
|
||||
param := &EngineParam{this.g}
|
||||
@@ -220,6 +220,6 @@ func New[T any](table string, opt ...EngineOption) *Engine[T] {
|
||||
return &Engine[T]{
|
||||
code: table,
|
||||
opts: opts,
|
||||
g: support.NewGlobalParam("", nil),
|
||||
g: req.NewGlobalParam("", nil),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
package engine
|
||||
|
||||
import (
|
||||
"git.fsdpf.net/go/contracts"
|
||||
"git.fsdpf.net/go/condition/contracts"
|
||||
"git.fsdpf.net/go/db"
|
||||
"git.fsdpf.net/go/req"
|
||||
)
|
||||
|
||||
type EngineCase[T any] struct {
|
||||
predicate contracts.Condition
|
||||
cb func(data T, g contracts.GlobalParams) error
|
||||
cb func(data T, g req.GlobalParams) error
|
||||
}
|
||||
|
||||
func (this EngineCase[T]) ToSql(param contracts.ModelParam) db.Expression {
|
||||
func (this EngineCase[T]) ToSql(param contracts.ConditionTokenValue) db.Expression {
|
||||
if this.predicate == nil || this.predicate.IsEmpty() {
|
||||
return db.Raw("NULL")
|
||||
}
|
||||
@@ -18,6 +19,6 @@ func (this EngineCase[T]) ToSql(param contracts.ModelParam) db.Expression {
|
||||
return this.predicate.ToSql(param)
|
||||
}
|
||||
|
||||
func (this EngineCase[T]) Execute(data T, g contracts.GlobalParams) error {
|
||||
func (this EngineCase[T]) Execute(data T, g req.GlobalParams) error {
|
||||
return this.cb(data, g)
|
||||
}
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
package engine
|
||||
|
||||
import "git.fsdpf.net/go/contracts"
|
||||
import (
|
||||
"git.fsdpf.net/go/req"
|
||||
)
|
||||
|
||||
type EngineParam struct {
|
||||
data contracts.GlobalParams
|
||||
data req.GlobalParams
|
||||
}
|
||||
|
||||
func (this EngineParam) GetParam(k string) contracts.GlobalParams {
|
||||
func (this EngineParam) GetParam(k string) req.GlobalParams {
|
||||
return this.data.Get(k)
|
||||
}
|
||||
|
||||
func (this EngineParam) GetGlobalParamsUser() contracts.User {
|
||||
func (this EngineParam) GetGlobalParamsUser() req.User {
|
||||
return this.data.User()
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@ import (
|
||||
"testing"
|
||||
|
||||
"git.fsdpf.net/go/condition"
|
||||
"git.fsdpf.net/go/contracts"
|
||||
"git.fsdpf.net/go/contracts/support"
|
||||
"git.fsdpf.net/go/condition/contracts"
|
||||
"git.fsdpf.net/go/req"
|
||||
)
|
||||
|
||||
type TestTable struct {
|
||||
@@ -21,23 +21,23 @@ type TestTable struct {
|
||||
func TestEngine(t *testing.T) {
|
||||
engine := Engine[any]{
|
||||
code: "TestTable",
|
||||
g: support.NewGlobalParam(`{"age": 30}`, nil),
|
||||
g: req.NewGlobalParam(`{"age": 30}`, nil),
|
||||
}
|
||||
|
||||
cond1 := condition.New(contracts.ConditionType_AND, "条件1")
|
||||
cond1 := condition.New(contracts.AND, "条件1")
|
||||
|
||||
cond1.SetExpr(condition.NewConditionExpr(
|
||||
"TestTable", "age", "age",
|
||||
contracts.ConditionOperator_EQ, contracts.ConditionTokenType_PARAM,
|
||||
contracts.EQ, contracts.PARAM,
|
||||
false, "", "",
|
||||
))
|
||||
|
||||
engine.Case(cond1, func(data any, g contracts.GlobalParams) error {
|
||||
engine.Case(cond1, func(data any, g req.GlobalParams) error {
|
||||
t.Log("cond1", data)
|
||||
return nil
|
||||
})
|
||||
|
||||
engine.Default(func(data any, g contracts.GlobalParams) error {
|
||||
engine.Default(func(data any, g req.GlobalParams) error {
|
||||
t.Log("default", data)
|
||||
return nil
|
||||
})
|
||||
@@ -60,43 +60,43 @@ func TestEngine(t *testing.T) {
|
||||
func TestRelationEngine(t *testing.T) {
|
||||
engine := Engine[any]{
|
||||
code: "TestTable",
|
||||
g: support.NewGlobalParam(`{"age": 30}`, nil),
|
||||
g: req.NewGlobalParam(`{"age": 30}`, nil),
|
||||
opts: engineOptions{
|
||||
debug: false,
|
||||
relations: []string{"TestTableA"},
|
||||
},
|
||||
}
|
||||
|
||||
cond1 := condition.New(contracts.ConditionType_AND, "条件1").
|
||||
cond1 := condition.New(contracts.AND, "条件1").
|
||||
SetExpr(condition.NewConditionExpr(
|
||||
"TestTable", "age", "age",
|
||||
contracts.ConditionOperator_EQ, contracts.ConditionTokenType_PARAM,
|
||||
contracts.EQ, contracts.PARAM,
|
||||
false, "", "",
|
||||
))
|
||||
|
||||
engine.Case(cond1, func(data any, g contracts.GlobalParams) error {
|
||||
engine.Case(cond1, func(data any, g req.GlobalParams) error {
|
||||
t.Log("cond1", data)
|
||||
return nil
|
||||
})
|
||||
|
||||
cond2 := condition.New(contracts.ConditionType_OR, "条件2").
|
||||
cond2 := condition.New(contracts.OR, "条件2").
|
||||
SetExpr(condition.NewConditionExpr(
|
||||
"TestTableA", "age", "age",
|
||||
contracts.ConditionOperator_EQ, contracts.ConditionTokenType_PARAM,
|
||||
contracts.EQ, contracts.PARAM,
|
||||
false, "", "",
|
||||
)).
|
||||
SetExpr(condition.NewConditionExpr(
|
||||
"TestTable", "age", "age",
|
||||
contracts.ConditionOperator_EQ, contracts.ConditionTokenType_PARAM,
|
||||
contracts.EQ, contracts.PARAM,
|
||||
false, "", "",
|
||||
))
|
||||
|
||||
engine.Case(cond2, func(data any, g contracts.GlobalParams) error {
|
||||
engine.Case(cond2, func(data any, g req.GlobalParams) error {
|
||||
t.Log("cond2", data)
|
||||
return nil
|
||||
})
|
||||
|
||||
engine.Default(func(data any, g contracts.GlobalParams) error {
|
||||
engine.Default(func(data any, g req.GlobalParams) error {
|
||||
t.Log("default", data)
|
||||
return nil
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user