| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- package ast
- // FilterOp is an enum that represents operations that can be performed
- // when filtering (equality, inequality, etc.)
- type FilterOp string
- // If you add a FilterOp, MAKE SURE TO UPDATE ALL FILTER IMPLEMENTATIONS! Go
- // does not enforce exhaustive pattern matching on "enum" types.
- const (
- // FilterOpEquals is the equality operator
- //
- // "kube-system" FilterOpEquals "kube-system" = true
- // "kube-syste" FilterOpEquals "kube-system" = false
- FilterOpEquals FilterOp = "equals"
- // FilterOpNotEquals is the inverse of equals.
- FilterOpNotEquals = "notequals"
- // FilterOpContains supports string fields, slice fields, and map fields.
- // For maps, this is equivalent to map.HasKey(x)
- //
- // "kube-system" FilterOpContains "e-s" = true
- // ["a", "b", "c"] FilterOpContains "a" = true
- // { "namespace": "kubecost", "cluster": "cluster-one" } FilterOpContains "namespace" = true
- FilterOpContains = "contains"
- // FilterOpNotContains is the inverse of contains.
- FilterOpNotContains = "notcontains"
- // FilterOpContainsPrefix is like FilterOpContains, but checks against the start of a string.
- // For maps, this checks to see if any of the keys start with the prefix
- //
- // "kube-system" ContainsPrefix "kube" = true
- // ["kube-system", "abc123"] ContainsPrefix "kube" = true
- // { "kube-label": "test", "abc": "123" } ContainsPrefix "ab" = true
- FilterOpContainsPrefix = "containsprefix"
- // FilterOpNotContainsPrefix is the inverse of FilterOpContainsPrefix
- FilterOpNotContainsPrefix = "notcontainsprefix"
- // FilterOpContainsSuffix is like FilterOpContains, but checks against the end of a string.
- // For maps, this checks to see if any of the keys end with the suffix
- //
- // "kube-system" ContainsSuffix "system" = true
- // ["kube-system", "abc123"] ContainsSuffix "system" = true
- // { "kube-label": "test", "abc": "123" } ContainsSuffix "-label" = true
- FilterOpContainsSuffix = "containssuffix"
- // FilterOpNotContainsSuffix is the inverse of FilterOpContainsSuffix
- FilterOpNotContainsSuffix = "notcontainssuffix"
- // FilterOpVoid is base-depth operator that is used for an empty filter
- FilterOpVoid = "void"
- // FilterOpContradiction is a base-depth operator that filters all data.
- FilterOpContradiction = "contradiction"
- // FilterOpAnd is an operator that succeeds if all parameters succeed.
- FilterOpAnd = "and"
- // FilterOpOr is an operator that succeeds if any parameter succeeds
- FilterOpOr = "or"
- // FilterOpNot is an operator that contains a single operand
- FilterOpNot = "not"
- )
- // VoidOp is base-depth operator that is used for an empty filter
- type VoidOp struct{}
- // Op returns the FilterOp enumeration value for the operator.
- func (_ *VoidOp) Op() FilterOp {
- return FilterOpVoid
- }
- // ContradictionOp is a base-depth operator that filters all data.
- type ContradictionOp struct{}
- // Op returns the FilterOp enumeration value for the operator.
- func (_ *ContradictionOp) Op() FilterOp {
- return FilterOpContradiction
- }
- // AndOp is a filter operation that contains a flat list of nodes which should all resolve
- // to true in order for the result to be true.
- type AndOp struct {
- Operands []FilterNode
- }
- // Op returns the FilterOp enumeration value for the operator.
- func (_ *AndOp) Op() FilterOp {
- return FilterOpAnd
- }
- // Add appends a filter node to the flat list of operands within the AND operator
- func (ao *AndOp) Add(node FilterNode) {
- ao.Operands = append(ao.Operands, node)
- }
- // OrOp is a filter operation that contains a flat list of nodes which at least one node
- // should resolve to true in order for the result to be true.
- type OrOp struct {
- Operands []FilterNode
- }
- // Op returns the FilterOp enumeration value for the operator.
- func (_ *OrOp) Op() FilterOp {
- return FilterOpOr
- }
- // Add appends a filter node to the flat list of operands within the OR operator
- func (oo *OrOp) Add(node FilterNode) {
- oo.Operands = append(oo.Operands, node)
- }
- // NotOp is a filter operation that logically inverts result of the child operand.
- type NotOp struct {
- Operand FilterNode
- }
- // Op returns the FilterOp enumeration value for the operator.
- func (_ *NotOp) Op() FilterOp {
- return FilterOpNot
- }
- // Add sets the not operand to the parameter
- func (no *NotOp) Add(node FilterNode) {
- no.Operand = node
- }
- // EqualOp is a filter operation that compares a resolvable identifier (Left) to a
- // string value (Right)
- type EqualOp struct {
- // Left contains a resolvable Identifier (property of an input type) which can be
- // used to compare against the Right value.
- Left Identifier
- // Right contains the value which we wish to compare the resolved identifier to.
- Right string
- }
- // Op returns the FilterOp enumeration value for the operator.
- func (_ *EqualOp) Op() FilterOp {
- return FilterOpEquals
- }
- // ContainsOp is a filter operation that checks to see if a resolvable identifier (Left) contains a
- // string value (Right)
- type ContainsOp struct {
- // Left contains a resolvable Identifier (property of an input type) which can be
- // used to query against using the Right value.
- Left Identifier
- // Right contains the value which we use to search the resolved Left identifier with.
- Right string
- }
- // Op returns the FilterOp enumeration value for the operator.
- func (_ *ContainsOp) Op() FilterOp {
- return FilterOpContains
- }
- // ContainsPrefixOp is a filter operation that checks to see if a resolvable identifier (Left) starts with a
- // string value (Right)
- type ContainsPrefixOp struct {
- // Left contains a resolvable Identifier (property of an input type) which can be
- // used to query against using the Right value.
- Left Identifier
- // Right contains the value which we use to search the resolved Left identifier with.
- Right string
- }
- // Op returns the FilterOp enumeration value for the operator.
- func (_ *ContainsPrefixOp) Op() FilterOp {
- return FilterOpContainsPrefix
- }
- // ContainsSuffixOp is a filter operation that checks to see if a resolvable identifier (Left) ends with a
- // string value (Right)
- type ContainsSuffixOp struct {
- // Left contains a resolvable Identifier (property of an input type) which can be
- // used to query against using the Right value.
- Left Identifier
- // Right contains the value which we use to search the resolved Left identifier with.
- Right string
- }
- // Op returns the FilterOp enumeration value for the operator.
- func (_ *ContainsSuffixOp) Op() FilterOp {
- return FilterOpContainsSuffix
- }
|