diff --git a/condition.go b/condition.go index a797805..051dcd1 100644 --- a/condition.go +++ b/condition.go @@ -213,6 +213,13 @@ func (this Condition) GetFields(operator ConditionOperator, types ...ConditionTo 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) func Type(v ConditionType) Option { @@ -229,12 +236,6 @@ func Describe(v string) Option { func New(opts ...Option) *Condition { cond := &Condition{typ: AND} - - if l := len(opts); l > 0 { - for i := 0; i < l; i++ { - opts[i](cond) - } - } - + cond.SetOption(opts...) return cond } diff --git a/condition_expr.go b/condition_expr.go index c106d2b..8c27154 100644 --- a/condition_expr.go +++ b/condition_expr.go @@ -39,6 +39,8 @@ const ( NOT_REGEXP ConditionOperator = "NOT REGEXP" ) +type ExprOption func(option *ConditionExpr) + type ConditionTokenValue interface { GetParam(k string) req.GlobalParams GetGlobalParamsUser() req.User @@ -232,7 +234,12 @@ func (this ConditionExpr) IsIgnoreEmptyParma(m ConditionTokenValue) bool { 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 { return func(option *ConditionExpr) { @@ -271,12 +278,6 @@ func NewExpr(rResource, rField string, opts ...ExprOption) *ConditionExpr { fieldSqlFunc: "", fieldSqlFuncParam: "", } - - if l := len(opts); l > 0 { - for i := 0; i < l; i++ { - opts[i](expr) - } - } - + expr.SetOption(opts...) return expr }