Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ConditionAnd = Condition("AND") ConditionOr = Condition("OR") )
View Source
var ( OperatorEqual = Operator("equal") OperatorNotEqual = Operator("not_equal") // set operator OperatorIn = Operator("in") OperatorNotIn = Operator("not_in") // numeric compare OperatorLess = Operator("less") OperatorLessOrEqual = Operator("less_or_equal") OperatorGreater = Operator("greater") OperatorGreaterOrEqual = Operator("greater_or_equal") // datetime operate OperatorDatetimeLess = Operator("datetime_less") OperatorDatetimeLessOrEqual = Operator("datetime_less_or_equal") OperatorDatetimeGreater = Operator("datetime_greater") OperatorDatetimeGreaterOrEqual = Operator("datetime_greater_or_equal") // string operator OperatorBeginsWith = Operator("begins_with") OperatorNotBeginsWith = Operator("not_begins_with") OperatorContains = Operator("contains") OperatorNotContains = Operator("not_contains") OperatorsEndsWith = Operator("ends_with") OperatorNotEndsWith = Operator("not_ends_with") // array operator OperatorIsEmpty = Operator("is_empty") OperatorIsNotEmpty = Operator("is_not_empty") // null check OperatorIsNull = Operator("is_null") OperatorIsNotNull = Operator("is_not_null") // exist check OperatorExist = Operator("exist") OperatorNotExist = Operator("not_exist") )
View Source
var ( TypeNumeric = "numeric" TypeBoolean = "boolean" TypeString = "string" TypeUnknown = "unknown" )
View Source
var (
// 嵌套层级的深度按树的高度计算,查询条件最大深度为3即最多嵌套2层
MaxDeep = 3
)
View Source
var SupportOperators = map[Operator]bool{ OperatorEqual: true, OperatorNotEqual: true, OperatorIn: true, OperatorNotIn: true, OperatorLess: true, OperatorLessOrEqual: true, OperatorGreater: true, OperatorGreaterOrEqual: true, OperatorDatetimeLess: false, OperatorDatetimeLessOrEqual: false, OperatorDatetimeGreater: false, OperatorDatetimeGreaterOrEqual: false, OperatorBeginsWith: true, OperatorNotBeginsWith: true, OperatorContains: true, OperatorNotContains: true, OperatorsEndsWith: true, OperatorNotEndsWith: true, OperatorIsEmpty: false, OperatorIsNotEmpty: false, OperatorIsNull: false, OperatorIsNotNull: false, OperatorExist: true, OperatorNotExist: false, }
View Source
var ( // TODO: should we support dot field separator here? ValidFieldPattern = regexp.MustCompile(`^[a-zA-Z0-9][\d\w\-_.]*$`) )
Functions ¶
func MapToQueryFilterHookFunc ¶
func MapToQueryFilterHookFunc() mapstructure.DecodeHookFunc
Types ¶
type AtomRule ¶
type AtomRule struct { Field string `json:"field"` Operator Operator `json:"operator"` Value interface{} `json:"value"` }
*************** define rule ************************
type CombinedRule ¶
*************** define query ************************
func (CombinedRule) GetDeep ¶
func (r CombinedRule) GetDeep() int
func (CombinedRule) Match ¶
func (r CombinedRule) Match(matcher Matcher) bool
func (CombinedRule) ToMgo ¶
func (r CombinedRule) ToMgo() (mgoFilter map[string]interface{}, key string, err error)
func (CombinedRule) Validate ¶
func (r CombinedRule) Validate() (string, error)
type QueryFilter ¶
type QueryFilter struct {
Rule `json:",inline"`
}
QueryFilter is aimed at export as a struct member
func (*QueryFilter) MarshalJSON ¶
func (qf *QueryFilter) MarshalJSON() ([]byte, error)
func (*QueryFilter) UnmarshalJSON ¶
func (qf *QueryFilter) UnmarshalJSON(raw []byte) error
func (*QueryFilter) Validate ¶
func (qf *QueryFilter) Validate() (string, error)
Click to show internal directories.
Click to hide internal directories.