aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Source/API/FIRQuery.mm
diff options
context:
space:
mode:
authorGravatar rsgowman <rgowman@google.com>2018-07-11 21:59:49 -0400
committerGravatar GitHub <noreply@github.com>2018-07-11 21:59:49 -0400
commit82ef0886bf89339bfe7a1855e697e61959eeb486 (patch)
tree67869be000dd249cf088ab899d96b250a16c2ca4 /Firestore/Source/API/FIRQuery.mm
parent7fc953fc6ffa69d159c0523d3902d867fe8c0ca5 (diff)
Move creation of FSTFilter objects to static create method on FSTFilter. (#1512)
Rather than previously inlining it in the calling code. This is to unify filter creation across platforms. (This change involves altering FSTFilter from a protocol to an abstract class.)
Diffstat (limited to 'Firestore/Source/API/FIRQuery.mm')
-rw-r--r--Firestore/Source/API/FIRQuery.mm25
1 files changed, 6 insertions, 19 deletions
diff --git a/Firestore/Source/API/FIRQuery.mm b/Firestore/Source/API/FIRQuery.mm
index 08c912d..cdf8bc9 100644
--- a/Firestore/Source/API/FIRQuery.mm
+++ b/Firestore/Source/API/FIRQuery.mm
@@ -487,26 +487,13 @@ addSnapshotListenerInternalWithOptions:(FSTListenOptions *)internalOptions
fieldValue = [self.firestore.dataConverter parsedQueryValue:value];
}
- id<FSTFilter> filter;
- if ([fieldValue isEqual:[FSTNullValue nullValue]]) {
- if (filterOperator != FSTRelationFilterOperatorEqual) {
- FSTThrowInvalidUsage(@"InvalidQueryException",
- @"Invalid Query. You can only perform equality comparisons on nil / "
- "NSNull.");
- }
- filter = [[FSTNullFilter alloc] initWithField:fieldPath];
- } else if ([fieldValue isEqual:[FSTDoubleValue nanValue]]) {
- if (filterOperator != FSTRelationFilterOperatorEqual) {
- FSTThrowInvalidUsage(@"InvalidQueryException",
- @"Invalid Query. You can only perform equality comparisons on NaN.");
- }
- filter = [[FSTNanFilter alloc] initWithField:fieldPath];
- } else {
- filter = [FSTRelationFilter filterWithField:fieldPath
- filterOperator:filterOperator
- value:fieldValue];
- [self validateNewRelationFilter:filter];
+ FSTFilter *filter =
+ [FSTFilter filterWithField:fieldPath filterOperator:filterOperator value:fieldValue];
+
+ if ([filter isKindOfClass:[FSTRelationFilter class]]) {
+ [self validateNewRelationFilter:(FSTRelationFilter *)filter];
}
+
return [FIRQuery referenceWithQuery:[self.query queryByAddingFilter:filter]
firestore:self.firestore];
}