1pub(crate) trait Filter {
9 fn generate_condition(&self, has_joins: bool) -> impl sea_query::IntoCondition;
15}
16
17pub(crate) trait StatementExt {
18 fn apply_filter<F: Filter>(&mut self, filter: F) -> &mut Self;
22}
23
24pub(crate) trait StatementWithJoinsExt {
25 fn apply_filter_with_joins<F: Filter>(&mut self, filter: F) -> &mut Self;
29}
30
31impl StatementWithJoinsExt for sea_query::SelectStatement {
32 fn apply_filter_with_joins<F: Filter>(&mut self, filter: F) -> &mut Self {
33 let condition = filter.generate_condition(true);
34 self.cond_where(condition)
35 }
36}
37
38impl StatementExt for sea_query::SelectStatement {
39 fn apply_filter<F: Filter>(&mut self, filter: F) -> &mut Self {
40 let condition = filter.generate_condition(false);
41 self.cond_where(condition)
42 }
43}
44
45impl StatementExt for sea_query::UpdateStatement {
46 fn apply_filter<F: Filter>(&mut self, filter: F) -> &mut Self {
47 let condition = filter.generate_condition(false);
48 self.cond_where(condition)
49 }
50}
51
52impl StatementExt for sea_query::DeleteStatement {
53 fn apply_filter<F: Filter>(&mut self, filter: F) -> &mut Self {
54 let condition = filter.generate_condition(false);
55 self.cond_where(condition)
56 }
57}