-
Notifications
You must be signed in to change notification settings - Fork 2
/
operator.go
87 lines (76 loc) · 1.95 KB
/
operator.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// Copyright 2017 NDP Systèmes. All Rights Reserved.
// See LICENSE file for full licensing details.
package operator
// An Operator inside an SQL WHERE clause
type Operator string
// Operators
const (
Equals Operator = "="
NotEquals Operator = "!="
Greater Operator = ">"
GreaterOrEqual Operator = ">="
Lower Operator = "<"
LowerOrEqual Operator = "<="
Like Operator = "=like"
Contains Operator = "like"
NotContains Operator = "not like"
IContains Operator = "ilike"
NotIContains Operator = "not ilike"
ILike Operator = "=ilike"
In Operator = "in"
NotIn Operator = "not in"
ChildOf Operator = "child_of"
)
var allowedOperators = map[Operator]bool{
Equals: true,
NotEquals: true,
Greater: true,
GreaterOrEqual: true,
Lower: true,
LowerOrEqual: true,
Like: true,
Contains: true,
NotContains: true,
IContains: true,
NotIContains: true,
ILike: true,
In: true,
NotIn: true,
ChildOf: true,
}
var negativeOperators = map[Operator]bool{
NotEquals: true,
NotContains: true,
NotIContains: true,
NotIn: true,
}
var positiveOperators = map[Operator]bool{
Equals: true,
IContains: true,
ILike: true,
Contains: true,
Like: true,
}
var multiOperator = map[Operator]bool{
In: true,
NotIn: true,
}
// IsMulti returns true if the operator expects a array as arguments
func (o Operator) IsMulti() bool {
return multiOperator[o]
}
// IsValid returns true if o is a known operator.
func (o Operator) IsValid() bool {
_, res := allowedOperators[o]
return res
}
// IsNegative returns true if this is a negative operator
func (o Operator) IsNegative() bool {
_, res := negativeOperators[o]
return res
}
// IsPositive returns true if this is a positive operator
func (o Operator) IsPositive() bool {
_, res := positiveOperators[o]
return res
}