diff options
author | Michael Lehenbauer <mikelehen@gmail.com> | 2018-05-16 17:05:33 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-16 17:05:33 -0700 |
commit | 0ec836f9ca71b27fa54a11ae9e07e60b8c5cc002 (patch) | |
tree | b677f04b8659299146b661dded71e4860fe956f0 /Firestore/Source/Core | |
parent | dd83f4e30bed1b5caf5cc862e74743c84ca6e450 (diff) |
b/79432277: Limit Queries to only a single array-contains clause. (#1286)
Diffstat (limited to 'Firestore/Source/Core')
-rw-r--r-- | Firestore/Source/Core/FSTQuery.h | 3 | ||||
-rw-r--r-- | Firestore/Source/Core/FSTQuery.mm | 10 |
2 files changed, 13 insertions, 0 deletions
diff --git a/Firestore/Source/Core/FSTQuery.h b/Firestore/Source/Core/FSTQuery.h index 572fabb..e38d3dd 100644 --- a/Firestore/Source/Core/FSTQuery.h +++ b/Firestore/Source/Core/FSTQuery.h @@ -245,6 +245,9 @@ typedef NS_ENUM(NSInteger, FSTRelationFilterOperator) { */ - (const firebase::firestore::model::FieldPath *)inequalityFilterField; +/** Returns YES if the query has an arrayContains filter already. */ +- (BOOL)hasArrayContainsFilter; + /** Returns the first field in an order-by constraint, or nullptr if none. */ - (const firebase::firestore::model::FieldPath *)firstSortOrderField; diff --git a/Firestore/Source/Core/FSTQuery.mm b/Firestore/Source/Core/FSTQuery.mm index d3961e8..13ebadb 100644 --- a/Firestore/Source/Core/FSTQuery.mm +++ b/Firestore/Source/Core/FSTQuery.mm @@ -724,6 +724,16 @@ NSString *FSTStringFromQueryRelationOperator(FSTRelationFilterOperator filterOpe return nullptr; } +- (BOOL)hasArrayContainsFilter { + for (id<FSTFilter> filter in self.filters) { + if ([filter isKindOfClass:[FSTRelationFilter class]] && + ((FSTRelationFilter *)filter).filterOperator == FSTRelationFilterOperatorArrayContains) { + return YES; + } + } + return NO; +} + - (const FieldPath *)firstSortOrderField { if (self.explicitSortOrders.count > 0) { return &self.explicitSortOrders.firstObject.field; |