2020using firebase::firestore::model::FieldPath;
2121using firebase::firestore::util::MakeString;
2222using firebase::firestore::core::FieldFilter;
23+ using firebase::firestore::core::CompositeFilter;
2324
2425NS_ASSUME_NONNULL_BEGIN
2526
3132
3233} // namespace
3334
34- @interface FIRFilter ()
35+ @interface FSTUnaryFilter ()
3536
3637@property (nonatomic , strong , readwrite ) FIRFieldPath *fieldPath;
37- @property (nonatomic , readwrite ) FieldFilter::Operator op ;
38+ @property (nonatomic , readwrite ) FieldFilter::Operator unaryOp ;
3839@property (nonatomic , strong , readwrite ) id value;
3940
4041@end
4142
42- @implementation FIRFilter
43-
44- #pragma mark - Constructor Methods
43+ @implementation FSTUnaryFilter
4544
4645- (instancetype )initWithFIRFieldPath : (nonnull FIRFieldPath *)fieldPath
4746 op : (FieldFilter::Operator)op
4847 value : (nonnull id )value {
4948 if (self = [super init ]) {
5049 self.fieldPath = fieldPath;
51- self.op = op;
50+ self.unaryOp = op;
5251 self.value = value;
5352 }
5453 return self;
5554}
5655
56+ @end
57+
58+ @interface FSTCompositeFilter ()
59+
60+ @property (nonatomic , strong , readwrite ) NSArray <FIRFilter *> *filters;
61+ @property (nonatomic , readwrite ) CompositeFilter::Operator compOp;
62+
63+ @end
64+
65+ @implementation FSTCompositeFilter
66+
67+ - (instancetype )initWithFilters : (nonnull NSArray <FIRFilter *> *)filters
68+ op : (CompositeFilter::Operator)op {
69+ if (self = [super init ]) {
70+ self.filters = filters;
71+ self.compOp = op;
72+ }
73+ return self;
74+ }
75+
76+ @end
77+
78+ @implementation FIRFilter
79+
80+ #pragma mark - Constructor Methods
81+
5782+ (FIRFilter *)filterWhereField : (nonnull NSString *)field isEqualTo : (nonnull id )value {
5883 return [self filterWhereFieldPath: MakeFIRFieldPath (field) isEqualTo: value];
5984}
6085
6186+ (FIRFilter *)filterWhereFieldPath : (nonnull FIRFieldPath *)field isEqualTo : (nonnull id )value {
62- return [[FIRFilter alloc ] initWithFIRFieldPath: field op:FieldFilter: :Operator: :Equal value: value];
87+ return [[FSTUnaryFilter alloc ] initWithFIRFieldPath: field
88+ op:FieldFilter: :Operator: :Equal
89+ value: value];
6390}
6491
6592+ (FIRFilter *)filterWhereField : (nonnull NSString *)field isNotEqualTo : (nonnull id )value {
6693 return [self filterWhereFieldPath: MakeFIRFieldPath (field) isNotEqualTo: value];
6794}
6895
6996+ (FIRFilter *)filterWhereFieldPath : (nonnull FIRFieldPath *)field isNotEqualTo : (nonnull id )value {
70- return [[FIRFilter alloc ] initWithFIRFieldPath: field
71- op:FieldFilter: :Operator: :NotEqual
72- value: value];
97+ return [[FSTUnaryFilter alloc ] initWithFIRFieldPath: field
98+ op:FieldFilter: :Operator: :NotEqual
99+ value: value];
73100}
74101
75102+ (FIRFilter *)filterWhereField : (nonnull NSString *)field isGreaterThan : (nonnull id )value {
76103 return [self filterWhereFieldPath: MakeFIRFieldPath (field) isGreaterThan: value];
77104}
78105
79106+ (FIRFilter *)filterWhereFieldPath : (nonnull FIRFieldPath *)field isGreaterThan : (nonnull id )value {
80- return [[FIRFilter alloc ] initWithFIRFieldPath: field
81- op:FieldFilter: :Operator: :GreaterThan
82- value: value];
107+ return [[FSTUnaryFilter alloc ] initWithFIRFieldPath: field
108+ op:FieldFilter: :Operator: :GreaterThan
109+ value: value];
83110}
84111
85112+ (FIRFilter *)filterWhereField : (nonnull NSString *)field isGreaterThanOrEqualTo : (nonnull id )value {
@@ -88,19 +115,19 @@ + (FIRFilter *)filterWhereField:(nonnull NSString *)field isGreaterThanOrEqualTo
88115
89116+ (FIRFilter *)filterWhereFieldPath : (nonnull FIRFieldPath *)field
90117 isGreaterThanOrEqualTo : (nonnull id )value {
91- return [[FIRFilter alloc ] initWithFIRFieldPath: field
92- op:FieldFilter: :Operator: :GreaterThanOrEqual
93- value: value];
118+ return [[FSTUnaryFilter alloc ] initWithFIRFieldPath: field
119+ op:FieldFilter: :Operator: :GreaterThanOrEqual
120+ value: value];
94121}
95122
96123+ (FIRFilter *)filterWhereField : (nonnull NSString *)field isLessThan : (nonnull id )value {
97124 return [self filterWhereFieldPath: MakeFIRFieldPath (field) isLessThan: value];
98125}
99126
100127+ (FIRFilter *)filterWhereFieldPath : (nonnull FIRFieldPath *)field isLessThan : (nonnull id )value {
101- return [[FIRFilter alloc ] initWithFIRFieldPath: field
102- op:FieldFilter: :Operator: :LessThan
103- value: value];
128+ return [[FSTUnaryFilter alloc ] initWithFIRFieldPath: field
129+ op:FieldFilter: :Operator: :LessThan
130+ value: value];
104131}
105132
106133+ (FIRFilter *)filterWhereField : (nonnull NSString *)field isLessThanOrEqualTo : (nonnull id )value {
@@ -109,19 +136,19 @@ + (FIRFilter *)filterWhereField:(nonnull NSString *)field isLessThanOrEqualTo:(n
109136
110137+ (FIRFilter *)filterWhereFieldPath : (nonnull FIRFieldPath *)field
111138 isLessThanOrEqualTo : (nonnull id )value {
112- return [[FIRFilter alloc ] initWithFIRFieldPath: field
113- op:FieldFilter: :Operator: :LessThanOrEqual
114- value: value];
139+ return [[FSTUnaryFilter alloc ] initWithFIRFieldPath: field
140+ op:FieldFilter: :Operator: :LessThanOrEqual
141+ value: value];
115142}
116143
117144+ (FIRFilter *)filterWhereField : (nonnull NSString *)field arrayContains : (nonnull id )value {
118145 return [self filterWhereFieldPath: MakeFIRFieldPath (field) arrayContains: value];
119146}
120147
121148+ (FIRFilter *)filterWhereFieldPath : (nonnull FIRFieldPath *)field arrayContains : (nonnull id )value {
122- return [[FIRFilter alloc ] initWithFIRFieldPath: field
123- op:FieldFilter: :Operator: :ArrayContains
124- value: value];
149+ return [[FSTUnaryFilter alloc ] initWithFIRFieldPath: field
150+ op:FieldFilter: :Operator: :ArrayContains
151+ value: value];
125152}
126153
127154+ (FIRFilter *)filterWhereField : (nonnull NSString *)field
@@ -131,17 +158,19 @@ + (FIRFilter *)filterWhereField:(nonnull NSString *)field
131158
132159+ (FIRFilter *)filterWhereFieldPath : (nonnull FIRFieldPath *)field
133160 arrayContainsAny : (nonnull NSArray <id> *)values {
134- return [[FIRFilter alloc ] initWithFIRFieldPath: field
135- op:FieldFilter: :Operator: :ArrayContainsAny
136- value: values];
161+ return [[FSTUnaryFilter alloc ] initWithFIRFieldPath: field
162+ op:FieldFilter: :Operator: :ArrayContainsAny
163+ value: values];
137164}
138165
139166+ (FIRFilter *)filterWhereField : (nonnull NSString *)field in : (nonnull NSArray <id> *)values {
140167 return [self filterWhereFieldPath: MakeFIRFieldPath (field) in: values];
141168}
142169
143170+ (FIRFilter *)filterWhereFieldPath : (nonnull FIRFieldPath *)field in : (nonnull NSArray <id> *)values {
144- return [[FIRFilter alloc ] initWithFIRFieldPath: field op:FieldFilter: :Operator: :In value: values];
171+ return [[FSTUnaryFilter alloc ] initWithFIRFieldPath: field
172+ op:FieldFilter: :Operator: :In
173+ value: values];
145174}
146175
147176+ (FIRFilter *)filterWhereField : (nonnull NSString *)field notIn : (nonnull NSArray <id> *)values {
@@ -150,11 +179,18 @@ + (FIRFilter *)filterWhereField:(nonnull NSString *)field notIn:(nonnull NSArray
150179
151180+ (FIRFilter *)filterWhereFieldPath : (nonnull FIRFieldPath *)field
152181 notIn : (nonnull NSArray <id> *)values {
153- return [[FIRFilter alloc ] initWithFIRFieldPath: field
154- op:FieldFilter: :Operator: :NotIn
155- value: values];
182+ return [[FSTUnaryFilter alloc ] initWithFIRFieldPath: field
183+ op:FieldFilter: :Operator: :NotIn
184+ value: values];
156185}
157186
187+ + (FIRFilter *)orFilterWithFilters : (NSArray <FIRFilter *> *)filters {
188+ return [[FSTCompositeFilter alloc ] initWithFilters: filters op:CompositeFilter: :Operator: :Or];
189+ }
190+
191+ + (FIRFilter *)andFilterWithFilters : (NSArray <FIRFilter *> *)filters {
192+ return [[FSTCompositeFilter alloc ] initWithFilters: filters op:CompositeFilter: :Operator: :And];
193+ }
158194@end
159195
160196NS_ASSUME_NONNULL_END
0 commit comments