[feat] 依赖调整 git.fsdpf.net/go/contracts => git.fsdpf.net/go/req

This commit is contained in:
2024-05-08 22:32:51 +08:00
parent 028bc603cf
commit 1d047e071b
9 changed files with 99 additions and 92 deletions

View File

@@ -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),
}
}

View File

@@ -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)
}

View File

@@ -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()
}

View File

@@ -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
})