Skip to content

Commit c0e6ac1

Browse files
Add Public API for Or Query (#10352)
* Add Public API for Or Query * Add Or query swift tests * Add Swift tests for IN * Adding back FIRFirestore+Internal as include file * Add Documentation * Address feedback * Update the changelog. --------- Co-authored-by: Ehsan Nasiri <[email protected]>
1 parent 6642308 commit c0e6ac1

File tree

17 files changed

+758
-126
lines changed

17 files changed

+758
-126
lines changed

Firestore/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# Unreleased
2+
- [feature] Add support for disjunctions in queries (`OR` queries).
13

24
# 10.6.0
35
- [fixed] Fix a potential high memory usage issue.

Firestore/Example/Firestore.xcodeproj/project.pbxproj

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -638,6 +638,9 @@
638638
61D35E0DE04E70D3BC243A65 /* FIRGeoPointTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5492E048202154AA00B64F25 /* FIRGeoPointTests.mm */; };
639639
61ECC7CE18700CBD73D0D810 /* leveldb_migrations_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = EF83ACD5E1E9F25845A9ACED /* leveldb_migrations_test.cc */; };
640640
61F72C5620BC48FD001A68CB /* serializer_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 61F72C5520BC48FD001A68CB /* serializer_test.cc */; };
641+
621D620A28F9CE7400D2FA26 /* QueryIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621D620928F9CE7400D2FA26 /* QueryIntegrationTests.swift */; };
642+
621D620B28F9CE7400D2FA26 /* QueryIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621D620928F9CE7400D2FA26 /* QueryIntegrationTests.swift */; };
643+
621D620C28F9CE7400D2FA26 /* QueryIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621D620928F9CE7400D2FA26 /* QueryIntegrationTests.swift */; };
641644
623AA12C3481646B0715006D /* string_apple_test.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0EE5300F8233D14025EF0456 /* string_apple_test.mm */; };
642645
627253FDEC6BB5549FE77F4E /* tree_sorted_map_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 549CCA4D20A36DBB00BCEB75 /* tree_sorted_map_test.cc */; };
643646
62B1C1100A8C68D94565916C /* document_overlay_cache_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = FFCA39825D9678A03D1845D0 /* document_overlay_cache_test.cc */; };
@@ -1457,7 +1460,7 @@
14571460
2220F583583EFC28DE792ABE /* Pods_Firestore_IntegrationTests_tvOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Firestore_IntegrationTests_tvOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
14581461
2286F308EFB0534B1BDE05B9 /* memory_target_cache_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = memory_target_cache_test.cc; sourceTree = "<group>"; };
14591462
277EAACC4DD7C21332E8496A /* lru_garbage_collector_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = lru_garbage_collector_test.cc; sourceTree = "<group>"; };
1460-
28B45B2104E2DAFBBF86DBB7 /* logic_utils_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; path = logic_utils_test.cc; sourceTree = "<group>"; };
1463+
28B45B2104E2DAFBBF86DBB7 /* logic_utils_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = logic_utils_test.cc; sourceTree = "<group>"; };
14611464
29D9C76922DAC6F710BC1EF4 /* memory_document_overlay_cache_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = memory_document_overlay_cache_test.cc; sourceTree = "<group>"; };
14621465
2A0CF41BA5AED6049B0BEB2C /* objc_type_traits_apple_test.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; path = objc_type_traits_apple_test.mm; sourceTree = "<group>"; };
14631466
2B50B3A0DF77100EEE887891 /* Pods_Firestore_Tests_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Firestore_Tests_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -1636,6 +1639,7 @@
16361639
618BBE9A20B89AAC00B5BCE7 /* status.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = status.pb.h; sourceTree = "<group>"; };
16371640
61F72C5520BC48FD001A68CB /* serializer_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = serializer_test.cc; sourceTree = "<group>"; };
16381641
620C1427763BA5D3CCFB5A1F /* BridgingHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BridgingHeader.h; sourceTree = "<group>"; };
1642+
621D620928F9CE7400D2FA26 /* QueryIntegrationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryIntegrationTests.swift; sourceTree = "<group>"; };
16391643
62E103B28B48A81D682A0DE9 /* Pods_Firestore_Example_tvOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Firestore_Example_tvOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
16401644
63136A2371C0C013EC7A540C /* target_index_matcher_test.cc */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = target_index_matcher_test.cc; sourceTree = "<group>"; };
16411645
64AA92CFA356A2360F3C5646 /* filesystem_testing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = filesystem_testing.h; sourceTree = "<group>"; };
@@ -1937,6 +1941,7 @@
19371941
children = (
19381942
062072B62773A055001655D7 /* AsyncAwaitIntegrationTests.swift */,
19391943
124C932B22C1642C00CA8C2D /* CodableIntegrationTests.swift */,
1944+
621D620928F9CE7400D2FA26 /* QueryIntegrationTests.swift */,
19401945
);
19411946
path = Integration;
19421947
sourceTree = "<group>";
@@ -4057,6 +4062,7 @@
40574062
D77941FD93DBE862AEF1F623 /* FSTTransactionTests.mm in Sources */,
40584063
432056C4D1259F76C80FC2A8 /* FSTUserDataReaderTests.mm in Sources */,
40594064
3B1E27D951407FD237E64D07 /* FirestoreEncoderTests.swift in Sources */,
4065+
621D620C28F9CE7400D2FA26 /* QueryIntegrationTests.swift in Sources */,
40604066
4D42E5C756229C08560DD731 /* XCTestCase+Await.mm in Sources */,
40614067
0EC3921AE220410F7394729B /* aggregation_result.pb.cc in Sources */,
40624068
276A563D546698B6AAC20164 /* annotations.pb.cc in Sources */,
@@ -4280,6 +4286,7 @@
42804286
5E5B3B8B3A41C8EB70035A6B /* FSTTransactionTests.mm in Sources */,
42814287
75A176239B37354588769206 /* FSTUserDataReaderTests.mm in Sources */,
42824288
5E89B1A5A5430713C79C4854 /* FirestoreEncoderTests.swift in Sources */,
4289+
621D620B28F9CE7400D2FA26 /* QueryIntegrationTests.swift in Sources */,
42834290
736C4E82689F1CA1859C4A3F /* XCTestCase+Await.mm in Sources */,
42844291
DF983A9C1FBF758AF3AF110D /* aggregation_result.pb.cc in Sources */,
42854292
EA46611779C3EEF12822508C /* annotations.pb.cc in Sources */,
@@ -4739,6 +4746,7 @@
47394746
5492E07F202154EC00B64F25 /* FSTTransactionTests.mm in Sources */,
47404747
F5BDECEB3B43BD1591EEADBD /* FSTUserDataReaderTests.mm in Sources */,
47414748
6F45846C159D3C063DBD3CBE /* FirestoreEncoderTests.swift in Sources */,
4749+
621D620A28F9CE7400D2FA26 /* QueryIntegrationTests.swift in Sources */,
47424750
5492E0442021457E00B64F25 /* XCTestCase+Await.mm in Sources */,
47434751
1A3D8028303B45FCBB21CAD3 /* aggregation_result.pb.cc in Sources */,
47444752
02EB33CC2590E1484D462912 /* annotations.pb.cc in Sources */,

Firestore/Example/Tests/Integration/API/FIRQueryTests.mm

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@
1818

1919
#import <XCTest/XCTest.h>
2020

21-
#import "Firestore/Source/API/FIRFilter+Internal.h"
22-
#import "Firestore/Source/API/FIRQuery+Internal.h"
23-
2421
#import "Firestore/Example/Tests/Util/FSTEventAccumulator.h"
2522
#import "Firestore/Example/Tests/Util/FSTHelpers.h"
2623
#import "Firestore/Example/Tests/Util/FSTIntegrationTestCase.h"

Firestore/Example/Tests/Integration/API/FIRValidationTests.mm

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,7 @@
2323
#import "FirebaseCore/Extension/FIROptionsInternal.h"
2424
#import "Firestore/Example/Tests/Util/FSTHelpers.h"
2525
#import "Firestore/Example/Tests/Util/FSTIntegrationTestCase.h"
26-
#import "Firestore/Source/API/FIRFieldValue+Internal.h"
27-
#import "Firestore/Source/API/FIRFilter+Internal.h"
2826
#import "Firestore/Source/API/FIRFirestore+Internal.h"
29-
#import "Firestore/Source/API/FIRQuery+Internal.h"
3027
#include "Firestore/core/test/unit/testutil/app_testing.h"
3128

3229
using firebase::firestore::testutil::AppForUnitTesting;

Firestore/Source/API/FIRFilter+Internal.h

Lines changed: 3 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -15,92 +15,15 @@
1515
*/
1616

1717
#import <Foundation/Foundation.h>
18-
#include "Firestore/Protos/nanopb/google/firestore/v1/query.nanopb.h"
19-
#import "Firestore/core/src/core/composite_filter.h"
20-
#import "Firestore/core/src/core/field_filter.h"
2118

22-
// TODO(orquery): This class will become public API. Change visibility and add documentation.
19+
#import "FIRFilter.h"
20+
#include "Firestore/core/src/core/composite_filter.h"
21+
#include "Firestore/core/src/core/field_filter.h"
2322

2423
@class FIRFieldPath;
2524

2625
NS_ASSUME_NONNULL_BEGIN
2726

28-
NS_SWIFT_NAME(Filter)
29-
@interface FIRFilter : NSObject
30-
31-
#pragma mark - Public Methods
32-
33-
+ (FIRFilter *)filterWhereField:(nonnull NSString *)field
34-
isEqualTo:(nonnull id)value NS_SWIFT_NAME(whereField(_:isEqualTo:));
35-
36-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field
37-
isEqualTo:(nonnull id)value NS_SWIFT_NAME(whereField(_:isEqualTo:));
38-
39-
+ (FIRFilter *)filterWhereField:(nonnull NSString *)field
40-
isNotEqualTo:(nonnull id)value NS_SWIFT_NAME(whereField(_:isNotEqualTo:));
41-
42-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field
43-
isNotEqualTo:(nonnull id)value NS_SWIFT_NAME(whereField(_:isNotEqualTo:));
44-
45-
+ (FIRFilter *)filterWhereField:(nonnull NSString *)field
46-
isGreaterThan:(nonnull id)value NS_SWIFT_NAME(whereField(_:isGreaterThan:));
47-
48-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field
49-
isGreaterThan:(nonnull id)value NS_SWIFT_NAME(whereField(_:isGreaterThan:));
50-
51-
+ (FIRFilter *)filterWhereField:(nonnull NSString *)field
52-
isGreaterThanOrEqualTo:(nonnull id)value NS_SWIFT_NAME(whereField(_:isGreaterOrEqualTo:));
53-
54-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field
55-
isGreaterThanOrEqualTo:(nonnull id)value
56-
NS_SWIFT_NAME(whereField(_:isGreaterOrEqualTo:));
57-
58-
+ (FIRFilter *)filterWhereField:(nonnull NSString *)field
59-
isLessThan:(nonnull id)value NS_SWIFT_NAME(whereField(_:isLessThan:));
60-
61-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field
62-
isLessThan:(nonnull id)value NS_SWIFT_NAME(whereField(_:isLessThan:));
63-
64-
+ (FIRFilter *)filterWhereField:(nonnull NSString *)field
65-
isLessThanOrEqualTo:(nonnull id)value NS_SWIFT_NAME(whereField(_:isLessThanOrEqualTo:));
66-
67-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field
68-
isLessThanOrEqualTo:(nonnull id)value
69-
NS_SWIFT_NAME(whereField(_:isLessThanOrEqualTo:));
70-
71-
+ (FIRFilter *)filterWhereField:(nonnull NSString *)field
72-
arrayContains:(nonnull id)value NS_SWIFT_NAME(whereField(_:arrayContains:));
73-
74-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field
75-
arrayContains:(nonnull id)value NS_SWIFT_NAME(whereField(_:arrayContains:));
76-
77-
+ (FIRFilter *)filterWhereField:(nonnull NSString *)field
78-
arrayContainsAny:(nonnull NSArray<id> *)values
79-
NS_SWIFT_NAME(whereField(_:arrayContainsAny:));
80-
81-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field
82-
arrayContainsAny:(nonnull NSArray<id> *)values
83-
NS_SWIFT_NAME(whereField(_:arrayContainsAny:));
84-
85-
+ (FIRFilter *)filterWhereField:(nonnull NSString *)field
86-
in:(nonnull NSArray<id> *)values NS_SWIFT_NAME(whereField(_:in:));
87-
88-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field
89-
in:(nonnull NSArray<id> *)values NS_SWIFT_NAME(whereField(_:in:));
90-
91-
+ (FIRFilter *)filterWhereField:(nonnull NSString *)field
92-
notIn:(nonnull NSArray<id> *)values NS_SWIFT_NAME(whereField(_:notIn:));
93-
94-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field
95-
notIn:(nonnull NSArray<id> *)values
96-
NS_SWIFT_NAME(whereField(_:notIn:));
97-
98-
+ (FIRFilter *)orFilterWithFilters:(NSArray<FIRFilter *> *)filters NS_SWIFT_NAME(orFilter(_:));
99-
100-
+ (FIRFilter *)andFilterWithFilters:(NSArray<FIRFilter *> *)filters NS_SWIFT_NAME(andFilter(_:));
101-
102-
@end
103-
10427
/** Exposed internally */
10528
@interface FSTUnaryFilter : FIRFilter
10629

Firestore/Source/API/FIRFilter.mm

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ @interface FSTUnaryFilter ()
4242

4343
@implementation FSTUnaryFilter
4444

45-
- (instancetype)initWithFIRFieldPath:(nonnull FIRFieldPath *)fieldPath
45+
- (instancetype)initWithFIRFieldPath:(nonnull FIRFieldPath *)path
4646
op:(FieldFilter::Operator)op
4747
value:(nonnull id)value {
4848
if (self = [super init]) {
49-
self.fieldPath = fieldPath;
49+
self.fieldPath = path;
5050
self.unaryOp = op;
5151
self.value = value;
5252
}
@@ -83,8 +83,8 @@ + (FIRFilter *)filterWhereField:(nonnull NSString *)field isEqualTo:(nonnull id)
8383
return [self filterWhereFieldPath:MakeFIRFieldPath(field) isEqualTo:value];
8484
}
8585

86-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field isEqualTo:(nonnull id)value {
87-
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:field
86+
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)path isEqualTo:(nonnull id)value {
87+
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:path
8888
op:FieldFilter::Operator::Equal
8989
value:value];
9090
}
@@ -93,8 +93,8 @@ + (FIRFilter *)filterWhereField:(nonnull NSString *)field isNotEqualTo:(nonnull
9393
return [self filterWhereFieldPath:MakeFIRFieldPath(field) isNotEqualTo:value];
9494
}
9595

96-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field isNotEqualTo:(nonnull id)value {
97-
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:field
96+
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)path isNotEqualTo:(nonnull id)value {
97+
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:path
9898
op:FieldFilter::Operator::NotEqual
9999
value:value];
100100
}
@@ -103,8 +103,8 @@ + (FIRFilter *)filterWhereField:(nonnull NSString *)field isGreaterThan:(nonnull
103103
return [self filterWhereFieldPath:MakeFIRFieldPath(field) isGreaterThan:value];
104104
}
105105

106-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field isGreaterThan:(nonnull id)value {
107-
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:field
106+
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)path isGreaterThan:(nonnull id)value {
107+
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:path
108108
op:FieldFilter::Operator::GreaterThan
109109
value:value];
110110
}
@@ -113,9 +113,9 @@ + (FIRFilter *)filterWhereField:(nonnull NSString *)field isGreaterThanOrEqualTo
113113
return [self filterWhereFieldPath:MakeFIRFieldPath(field) isGreaterThanOrEqualTo:value];
114114
}
115115

116-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field
116+
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)path
117117
isGreaterThanOrEqualTo:(nonnull id)value {
118-
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:field
118+
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:path
119119
op:FieldFilter::Operator::GreaterThanOrEqual
120120
value:value];
121121
}
@@ -124,8 +124,8 @@ + (FIRFilter *)filterWhereField:(nonnull NSString *)field isLessThan:(nonnull id
124124
return [self filterWhereFieldPath:MakeFIRFieldPath(field) isLessThan:value];
125125
}
126126

127-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field isLessThan:(nonnull id)value {
128-
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:field
127+
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)path isLessThan:(nonnull id)value {
128+
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:path
129129
op:FieldFilter::Operator::LessThan
130130
value:value];
131131
}
@@ -134,9 +134,9 @@ + (FIRFilter *)filterWhereField:(nonnull NSString *)field isLessThanOrEqualTo:(n
134134
return [self filterWhereFieldPath:MakeFIRFieldPath(field) isLessThanOrEqualTo:value];
135135
}
136136

137-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field
137+
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)path
138138
isLessThanOrEqualTo:(nonnull id)value {
139-
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:field
139+
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:path
140140
op:FieldFilter::Operator::LessThanOrEqual
141141
value:value];
142142
}
@@ -145,8 +145,8 @@ + (FIRFilter *)filterWhereField:(nonnull NSString *)field arrayContains:(nonnull
145145
return [self filterWhereFieldPath:MakeFIRFieldPath(field) arrayContains:value];
146146
}
147147

148-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field arrayContains:(nonnull id)value {
149-
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:field
148+
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)path arrayContains:(nonnull id)value {
149+
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:path
150150
op:FieldFilter::Operator::ArrayContains
151151
value:value];
152152
}
@@ -156,9 +156,9 @@ + (FIRFilter *)filterWhereField:(nonnull NSString *)field
156156
return [self filterWhereFieldPath:MakeFIRFieldPath(field) arrayContainsAny:values];
157157
}
158158

159-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field
159+
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)path
160160
arrayContainsAny:(nonnull NSArray<id> *)values {
161-
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:field
161+
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:path
162162
op:FieldFilter::Operator::ArrayContainsAny
163163
value:values];
164164
}
@@ -167,8 +167,8 @@ + (FIRFilter *)filterWhereField:(nonnull NSString *)field in:(nonnull NSArray<id
167167
return [self filterWhereFieldPath:MakeFIRFieldPath(field) in:values];
168168
}
169169

170-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field in:(nonnull NSArray<id> *)values {
171-
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:field
170+
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)path in:(nonnull NSArray<id> *)values {
171+
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:path
172172
op:FieldFilter::Operator::In
173173
value:values];
174174
}
@@ -177,9 +177,9 @@ + (FIRFilter *)filterWhereField:(nonnull NSString *)field notIn:(nonnull NSArray
177177
return [self filterWhereFieldPath:MakeFIRFieldPath(field) notIn:values];
178178
}
179179

180-
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)field
180+
+ (FIRFilter *)filterWhereFieldPath:(nonnull FIRFieldPath *)path
181181
notIn:(nonnull NSArray<id> *)values {
182-
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:field
182+
return [[FSTUnaryFilter alloc] initWithFIRFieldPath:path
183183
op:FieldFilter::Operator::NotIn
184184
value:values];
185185
}

Firestore/Source/API/FIRQuery+Internal.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,6 @@ NS_ASSUME_NONNULL_BEGIN
4444

4545
- (const api::Query &)apiQuery;
4646

47-
// TODO(orquery): This method will become public API. Change visibility and add documentation.
48-
- (FIRQuery *)queryWhereFilter:(FIRFilter *)filter;
49-
5047
@end
5148

5249
NS_ASSUME_NONNULL_END

Firestore/Source/API/FIRQuery.mm

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,15 @@ - (void)getDocumentsWithSource:(FIRFirestoreSource)publicSource
228228
std::move(query_listener))];
229229
}
230230

231+
- (FIRQuery *)queryWhereFilter:(FIRFilter *)filter {
232+
Filter parsedFilter = [self parseFilter:filter];
233+
if (parsedFilter.IsEmpty()) {
234+
// Return the existing query if not adding any more filters (e.g. an empty composite filter).
235+
return self;
236+
}
237+
return Wrap(_query.AddNewFilter(std::move(parsedFilter)));
238+
}
239+
231240
- (FIRQuery *)queryWhereField:(NSString *)field isEqualTo:(id)value {
232241
return [self queryWhereFilter:[FIRFilter filterWhereField:field isEqualTo:value]];
233242
}
@@ -668,15 +677,6 @@ @implementation FIRQuery (Internal)
668677
return _query;
669678
}
670679

671-
- (FIRQuery *)queryWhereFilter:(FIRFilter *)filter {
672-
Filter parsedFilter = [self parseFilter:filter];
673-
if (parsedFilter.IsEmpty()) {
674-
// Return the existing query if not adding any more filters (e.g. an empty composite filter).
675-
return self;
676-
}
677-
return Wrap(_query.AddNewFilter(std::move(parsedFilter)));
678-
}
679-
680680
@end
681681

682682
NS_ASSUME_NONNULL_END

0 commit comments

Comments
 (0)