[feat] 新增 New Option 可选项
This commit is contained in:
+61
-26
@@ -17,26 +17,26 @@ type ConditionTokenType string
|
||||
|
||||
const (
|
||||
SQL ConditionTokenType = "sql"
|
||||
FUNC = "func"
|
||||
PARAM = "param"
|
||||
STRING = "string"
|
||||
FUNC ConditionTokenType = "func"
|
||||
PARAM ConditionTokenType = "param"
|
||||
STRING ConditionTokenType = "string"
|
||||
)
|
||||
|
||||
const (
|
||||
IS_NULL ConditionOperator = "IS NULL"
|
||||
IS_NOT_NULL = "IS NOT NULL"
|
||||
EQ = "="
|
||||
NE = "!="
|
||||
GT = ">"
|
||||
GE = ">="
|
||||
LT = "<"
|
||||
LE = "<="
|
||||
LIKE = "LIKE"
|
||||
NOT_LIKE = "NOT LIKE"
|
||||
IN = "IN"
|
||||
NOT_IN = "NOT IN"
|
||||
REGEXP = "REGEXP"
|
||||
NOT_REGEXP = "NOT REGEXP"
|
||||
IS_NOT_NULL ConditionOperator = "IS NOT NULL"
|
||||
EQ ConditionOperator = "="
|
||||
NE ConditionOperator = "!="
|
||||
GT ConditionOperator = ">"
|
||||
GE ConditionOperator = ">="
|
||||
LT ConditionOperator = "<"
|
||||
LE ConditionOperator = "<="
|
||||
LIKE ConditionOperator = "LIKE"
|
||||
NOT_LIKE ConditionOperator = "NOT LIKE"
|
||||
IN ConditionOperator = "IN"
|
||||
NOT_IN ConditionOperator = "NOT IN"
|
||||
REGEXP ConditionOperator = "REGEXP"
|
||||
NOT_REGEXP ConditionOperator = "NOT REGEXP"
|
||||
)
|
||||
|
||||
type ConditionTokenValue interface {
|
||||
@@ -232,15 +232,50 @@ func (this ConditionExpr) IsIgnoreEmptyParma(m ConditionTokenValue) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func NewExpr(rResource, rField, token string, operator ConditionOperator, tType ConditionTokenType, ignoreEmptyParma bool, fn, fnParam string) *ConditionExpr {
|
||||
return &ConditionExpr{
|
||||
operator: operator,
|
||||
field: rField,
|
||||
fieldResource: rResource,
|
||||
fieldSqlFunc: fn,
|
||||
fieldSqlFuncParam: fnParam,
|
||||
ignoreEmptyParma: ignoreEmptyParma,
|
||||
tokenType: tType,
|
||||
token: string(token),
|
||||
type ExprOption func(option *ConditionExpr)
|
||||
|
||||
func Operator(v ConditionOperator) ExprOption {
|
||||
return func(option *ConditionExpr) {
|
||||
option.operator = v
|
||||
}
|
||||
}
|
||||
|
||||
func TokenType(v ConditionTokenType) ExprOption {
|
||||
return func(option *ConditionExpr) {
|
||||
option.tokenType = v
|
||||
}
|
||||
}
|
||||
|
||||
func IgnoreEmptyParma(v bool) ExprOption {
|
||||
return func(option *ConditionExpr) {
|
||||
option.ignoreEmptyParma = v
|
||||
}
|
||||
}
|
||||
|
||||
func FieldSqlFn(fn, fnParam string) ExprOption {
|
||||
return func(option *ConditionExpr) {
|
||||
option.fieldSqlFunc = fn
|
||||
option.fieldSqlFuncParam = fnParam
|
||||
}
|
||||
}
|
||||
|
||||
func NewExpr(rResource, rField, token string, opts ...ExprOption) *ConditionExpr {
|
||||
expr := &ConditionExpr{
|
||||
field: rField,
|
||||
fieldResource: rResource,
|
||||
token: token,
|
||||
tokenType: STRING,
|
||||
operator: EQ,
|
||||
ignoreEmptyParma: false,
|
||||
fieldSqlFunc: "",
|
||||
fieldSqlFuncParam: "",
|
||||
}
|
||||
|
||||
if l := len(opts); l > 0 {
|
||||
for i := 0; i < l; i++ {
|
||||
opts[i](expr)
|
||||
}
|
||||
}
|
||||
|
||||
return expr
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user