cratestack_sql/filter/
expr_relations.rs1use cratestack_policy::RelationQuantifier;
16
17use super::expr::{FilterExpr, RelationFilter};
18use crate::RelatedReadScope;
19
20impl FilterExpr {
21 pub fn relation(
24 parent_table: &'static str,
25 parent_column: &'static str,
26 related_table: &'static str,
27 related_column: &'static str,
28 filter: FilterExpr,
29 scope: RelatedReadScope,
30 ) -> Self {
31 Self::Relation(RelationFilter::new(
32 RelationQuantifier::ToOne,
33 parent_table,
34 parent_column,
35 related_table,
36 related_column,
37 filter,
38 scope,
39 ))
40 }
41
42 pub fn relation_some(
45 parent_table: &'static str,
46 parent_column: &'static str,
47 related_table: &'static str,
48 related_column: &'static str,
49 filter: FilterExpr,
50 scope: RelatedReadScope,
51 ) -> Self {
52 Self::Relation(RelationFilter::new(
53 RelationQuantifier::Some,
54 parent_table,
55 parent_column,
56 related_table,
57 related_column,
58 filter,
59 scope,
60 ))
61 }
62
63 pub fn relation_every(
66 parent_table: &'static str,
67 parent_column: &'static str,
68 related_table: &'static str,
69 related_column: &'static str,
70 filter: FilterExpr,
71 scope: RelatedReadScope,
72 ) -> Self {
73 Self::Relation(RelationFilter::new(
74 RelationQuantifier::Every,
75 parent_table,
76 parent_column,
77 related_table,
78 related_column,
79 filter,
80 scope,
81 ))
82 }
83
84 pub fn relation_none(
87 parent_table: &'static str,
88 parent_column: &'static str,
89 related_table: &'static str,
90 related_column: &'static str,
91 filter: FilterExpr,
92 scope: RelatedReadScope,
93 ) -> Self {
94 Self::Relation(RelationFilter::new(
95 RelationQuantifier::None,
96 parent_table,
97 parent_column,
98 related_table,
99 related_column,
100 filter,
101 scope,
102 ))
103 }
104}