AndPredicates returns a new predicate for joining multiple generated predicates with AND between them.
(predicates ...P)
| 193 | |
| 194 | // AndPredicates returns a new predicate for joining multiple generated predicates with AND between them. |
| 195 | func AndPredicates[P ~func(*Selector)](predicates ...P) func(*Selector) { |
| 196 | return func(s *Selector) { |
| 197 | s.CollectPredicates() |
| 198 | for _, p := range predicates { |
| 199 | p(s) |
| 200 | } |
| 201 | collected := s.CollectedPredicates() |
| 202 | s.UncollectedPredicates() |
| 203 | switch len(collected) { |
| 204 | case 0: |
| 205 | case 1: |
| 206 | s.Where(collected[0]) |
| 207 | default: |
| 208 | s.Where(And(collected...)) |
| 209 | } |
| 210 | } |
| 211 | } |
| 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) { |
searching dependent graphs…