mirror of
https://github.com/ent/ent.git
synced 2026-05-24 09:31:56 +03:00
Reviewed By: idoshveki Differential Revision: D16687892 fbshipit-source-id: e8cfaaf1241e94c2de0a9fe9077326339d593716
64 lines
1.5 KiB
Go
64 lines
1.5 KiB
Go
package gen
|
|
|
|
// Op is a predicate for the where clause.
|
|
type Op int
|
|
|
|
// List of all builtin predicates.
|
|
const (
|
|
EQ Op = iota // =
|
|
NEQ // <>
|
|
GT // >
|
|
GTE // >=
|
|
LT // <
|
|
LTE // <=
|
|
IsNil // IS NULL / has
|
|
NotNil // IS NOT NULL / hasNot
|
|
In // within
|
|
NotIn // without
|
|
Contains // containing
|
|
HasPrefix // startingWith
|
|
HasSuffix // endingWith
|
|
)
|
|
|
|
// Name returns the string representation of an predicate.
|
|
func (o Op) Name() string {
|
|
if int(o) < len(opText) {
|
|
return opText[o]
|
|
}
|
|
return "Unknown"
|
|
}
|
|
|
|
// Variadic reports if the predicate is a variadic function.
|
|
func (o Op) Variadic() bool {
|
|
return o == In || o == NotIn
|
|
}
|
|
|
|
// Niladic reports if the predicate is a niladic predicate.
|
|
func (o Op) Niladic() bool {
|
|
return o == IsNil || o == NotNil
|
|
}
|
|
|
|
var (
|
|
// operations text.
|
|
opText = [...]string{
|
|
EQ: "EQ",
|
|
NEQ: "NEQ",
|
|
GT: "GT",
|
|
GTE: "GTE",
|
|
LT: "LT",
|
|
LTE: "LTE",
|
|
IsNil: "IsNil",
|
|
NotNil: "NotNil",
|
|
Contains: "Contains",
|
|
HasPrefix: "HasPrefix",
|
|
HasSuffix: "HasSuffix",
|
|
In: "In",
|
|
NotIn: "NotIn",
|
|
}
|
|
// operations per type.
|
|
boolOps = []Op{EQ, NEQ}
|
|
numericOps = append(boolOps[:], GT, GTE, LT, LTE, In, NotIn)
|
|
stringOps = append(numericOps[:], Contains, HasPrefix, HasSuffix)
|
|
nillableOps = []Op{IsNil, NotNil}
|
|
)
|