diff options
author | rsgowman <rgowman@google.com> | 2018-07-11 21:59:49 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-11 21:59:49 -0400 |
commit | 82ef0886bf89339bfe7a1855e697e61959eeb486 (patch) | |
tree | 67869be000dd249cf088ab899d96b250a16c2ca4 /Firestore/Source/API/FIRQuery.mm | |
parent | 7fc953fc6ffa69d159c0523d3902d867fe8c0ca5 (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.mm | 25 |
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]; } |