| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- package managesdk
- type QueryOperator string
- const (
- OperatorEqual QueryOperator = "="
- OperatorNotEqual QueryOperator = "!="
- OperatorGreaterThan QueryOperator = ">"
- OperatorGreaterEqual QueryOperator = ">="
- OperatorLessThan QueryOperator = "<"
- OperatorLessEqual QueryOperator = "<="
- OperatorLike QueryOperator = "like"
- OperatorNotLike QueryOperator = "not_like"
- OperatorStartsWith QueryOperator = "starts_with"
- OperatorEndsWith QueryOperator = "ends_with"
- OperatorIsNull QueryOperator = "is_null"
- OperatorIsNotNull QueryOperator = "is_not_null"
- OperatorIn QueryOperator = "in"
- OperatorNotIn QueryOperator = "not_in"
- )
- type LogicOperator string
- const (
- LogicAnd LogicOperator = "AND"
- LogicOr LogicOperator = "OR"
- )
- type QueryCondition struct {
- Field string `json:"field"`
- Operator QueryOperator `json:"operator"`
- Value any `json:"value,omitempty"`
- }
- type ConditionGroup struct {
- Conditions []ConditionItem `json:"conditions"`
- Logic LogicOperator `json:"logic"`
- }
- type ConditionItem struct {
- Condition *ConditionGroup `json:"condition,omitempty"`
- SingleCondition *QueryCondition `json:"singleCondition,omitempty"`
- }
- type AdvancedQueryParams struct {
- ConditionGroups []ConditionGroup `json:"conditionGroups"`
- GroupLogic LogicOperator `json:"groupLogic"`
- }
- type AdvancedQueryRequest struct {
- AdvancedQuery *AdvancedQueryParams `json:"advancedQuery,omitempty"`
- BaseQueryParams
- }
- func NewConditionGroup(logic LogicOperator, conditions ...ConditionItem) ConditionGroup {
- return ConditionGroup{
- Logic: logic,
- Conditions: conditions,
- }
- }
- func NewSingleCondition(field string, operator QueryOperator, value any) ConditionItem {
- return ConditionItem{
- SingleCondition: &QueryCondition{
- Field: field,
- Operator: operator,
- Value: value,
- },
- }
- }
- func NewNestedConditionGroup(group ConditionGroup) ConditionItem {
- return ConditionItem{
- Condition: &group,
- }
- }
- func NewAdvancedQueryParams(groupLogic LogicOperator, groups ...ConditionGroup) *AdvancedQueryParams {
- return &AdvancedQueryParams{
- GroupLogic: groupLogic,
- ConditionGroups: groups,
- }
- }
- func Equal(field string, value any) ConditionItem {
- return NewSingleCondition(field, OperatorEqual, value)
- }
- func NotEqual(field string, value any) ConditionItem {
- return NewSingleCondition(field, OperatorNotEqual, value)
- }
- func GreaterThan(field string, value any) ConditionItem {
- return NewSingleCondition(field, OperatorGreaterThan, value)
- }
- func GreaterEqual(field string, value any) ConditionItem {
- return NewSingleCondition(field, OperatorGreaterEqual, value)
- }
- func LessThan(field string, value any) ConditionItem {
- return NewSingleCondition(field, OperatorLessThan, value)
- }
- func LessEqual(field string, value any) ConditionItem {
- return NewSingleCondition(field, OperatorLessEqual, value)
- }
- func Like(field string, value any) ConditionItem {
- return NewSingleCondition(field, OperatorLike, value)
- }
- func NotLike(field string, value any) ConditionItem {
- return NewSingleCondition(field, OperatorNotLike, value)
- }
- func StartsWith(field string, value any) ConditionItem {
- return NewSingleCondition(field, OperatorStartsWith, value)
- }
- func EndsWith(field string, value any) ConditionItem {
- return NewSingleCondition(field, OperatorEndsWith, value)
- }
- func IsNull(field string) ConditionItem {
- return NewSingleCondition(field, OperatorIsNull, nil)
- }
- func IsNotNull(field string) ConditionItem {
- return NewSingleCondition(field, OperatorIsNotNull, nil)
- }
- func In(field string, value any) ConditionItem {
- return NewSingleCondition(field, OperatorIn, value)
- }
- func NotIn(field string, value any) ConditionItem {
- return NewSingleCondition(field, OperatorNotIn, value)
- }
- func AndGroup(conditions ...ConditionItem) ConditionGroup {
- return NewConditionGroup(LogicAnd, conditions...)
- }
- func OrGroup(conditions ...ConditionItem) ConditionGroup {
- return NewConditionGroup(LogicOr, conditions...)
- }
- func AndQuery(groups ...ConditionGroup) *AdvancedQueryParams {
- return NewAdvancedQueryParams(LogicAnd, groups...)
- }
- func OrQuery(groups ...ConditionGroup) *AdvancedQueryParams {
- return NewAdvancedQueryParams(LogicOr, groups...)
- }
|