[feat] 新增 SetOption

This commit is contained in:
what 2024-05-09 10:35:14 +08:00
parent 37018837d1
commit a871ccfa75
2 changed files with 17 additions and 15 deletions

View File

@ -213,6 +213,13 @@ func (this Condition) GetFields(operator ConditionOperator, types ...ConditionTo
return result return result
} }
func (this *Condition) SetOption(opts ...Option) *Condition {
for i := 0; i < len(opts); i++ {
opts[i](this)
}
return this
}
type Option func(option *Condition) type Option func(option *Condition)
func Type(v ConditionType) Option { func Type(v ConditionType) Option {
@ -229,12 +236,6 @@ func Describe(v string) Option {
func New(opts ...Option) *Condition { func New(opts ...Option) *Condition {
cond := &Condition{typ: AND} cond := &Condition{typ: AND}
cond.SetOption(opts...)
if l := len(opts); l > 0 {
for i := 0; i < l; i++ {
opts[i](cond)
}
}
return cond return cond
} }

View File

@ -39,6 +39,8 @@ const (
NOT_REGEXP ConditionOperator = "NOT REGEXP" NOT_REGEXP ConditionOperator = "NOT REGEXP"
) )
type ExprOption func(option *ConditionExpr)
type ConditionTokenValue interface { type ConditionTokenValue interface {
GetParam(k string) req.GlobalParams GetParam(k string) req.GlobalParams
GetGlobalParamsUser() req.User GetGlobalParamsUser() req.User
@ -232,7 +234,12 @@ func (this ConditionExpr) IsIgnoreEmptyParma(m ConditionTokenValue) bool {
return false return false
} }
type ExprOption func(option *ConditionExpr) func (this *ConditionExpr) SetOption(opts ...ExprOption) *ConditionExpr {
for i := 0; i < len(opts); i++ {
opts[i](this)
}
return this
}
func Operator(v ConditionOperator) ExprOption { func Operator(v ConditionOperator) ExprOption {
return func(option *ConditionExpr) { return func(option *ConditionExpr) {
@ -271,12 +278,6 @@ func NewExpr(rResource, rField string, opts ...ExprOption) *ConditionExpr {
fieldSqlFunc: "", fieldSqlFunc: "",
fieldSqlFuncParam: "", fieldSqlFuncParam: "",
} }
expr.SetOption(opts...)
if l := len(opts); l > 0 {
for i := 0; i < l; i++ {
opts[i](expr)
}
}
return expr return expr
} }