OrPredicates returns a new predicate for joining multiple generated predicates with OR between them.
(predicates ...P)
| 212 | |
| 213 | // OrPredicates returns a new predicate for joining multiple generated predicates with OR between them. |
| 214 | func OrPredicates[P ~func(*Selector)](predicates ...P) func(*Selector) { |
| 215 | return func(s *Selector) { |
| 216 | s.CollectPredicates() |
| 217 | for _, p := range predicates { |
| 218 | p(s) |
| 219 | } |
| 220 | collected := s.CollectedPredicates() |
| 221 | s.UncollectedPredicates() |
| 222 | switch len(collected) { |
| 223 | case 0: |
| 224 | case 1: |
| 225 | s.Where(collected[0]) |
| 226 | default: |
| 227 | s.Where(Or(collected...)) |
| 228 | } |
| 229 | } |
| 230 | } |
| 231 | |
| 232 | // NotPredicates wraps the generated predicates with NOT. For example, NOT(P), NOT((P1 AND P2)). |
| 233 | func NotPredicates[P ~func(*Selector)](predicates ...P) func(*Selector) { |
searching dependent graphs…