From 25f8691970a9f765a87ab3125776598c92e02744 Mon Sep 17 00:00:00 2001 From: Michael Lehenbauer Date: Tue, 10 Jul 2018 16:58:56 -0700 Subject: Expose array transforms and array contains queries. (#1514) Also remove test code that was combining multiple array contains queries since those were disallowed in https://github.com/firebase/firebase-ios-sdk/commit/0ec836f9ca71b27fa54a11ae9e07e60b8c5cc002 --- Firestore/Source/API/FIRFieldValue+Internal.h | 28 -------------------- Firestore/Source/API/FIRQuery+Internal.h | 37 --------------------------- Firestore/Source/Public/FIRFieldValue.h | 23 +++++++++++++++++ Firestore/Source/Public/FIRQuery.h | 32 +++++++++++++++++++++++ 4 files changed, 55 insertions(+), 65 deletions(-) (limited to 'Firestore/Source') diff --git a/Firestore/Source/API/FIRFieldValue+Internal.h b/Firestore/Source/API/FIRFieldValue+Internal.h index 883a307..1618cd4 100644 --- a/Firestore/Source/API/FIRFieldValue+Internal.h +++ b/Firestore/Source/API/FIRFieldValue+Internal.h @@ -54,32 +54,4 @@ NS_ASSUME_NONNULL_BEGIN @property(strong, nonatomic, readonly) NSArray *elements; @end -// TODO(array-features): Move to FIRFieldValue.h once backend support lands. -@interface FIRFieldValue () - -/** - * Returns a special value that can be used with setData() or updateData() that tells the server to - * union the given elements with any array value that already exists on the server. Each - * specified element that doesn't already exist in the array will be added to the end. If the - * field being modified is not already an array it will be overwritten with an array containing - * exactly the specified elements. - * - * @param elements The elements to union into the array. - * @return The FieldValue sentinel for use in a call to setData() or updateData(). - */ -+ (instancetype)fieldValueForArrayUnion:(NSArray *)elements NS_SWIFT_NAME(arrayUnion(_:)); - -/** - * Returns a special value that can be used with setData() or updateData() that tells the server to - * remove the given elements from any array value that already exists on the server. All - * instances of each element specified will be removed from the array. If the field being - * modified is not already an array it will be overwritten with an empty array. - * - * @param elements The elements to remove from the array. - * @return The FieldValue sentinel for use in a call to setData() or updateData(). - */ -+ (instancetype)fieldValueForArrayRemove:(NSArray *)elements NS_SWIFT_NAME(arrayRemove(_:)); - -@end - NS_ASSUME_NONNULL_END diff --git a/Firestore/Source/API/FIRQuery+Internal.h b/Firestore/Source/API/FIRQuery+Internal.h index e207837..fa6c415 100644 --- a/Firestore/Source/API/FIRQuery+Internal.h +++ b/Firestore/Source/API/FIRQuery+Internal.h @@ -28,41 +28,4 @@ NS_ASSUME_NONNULL_BEGIN @end -// TODO(array-features): Move to FIRQuery.h once backend support is available. -@interface FIRQuery () - -/** - * Creates and returns a new `FIRQuery` with the additional filter that documents must contain - * the specified field, it must be an array, and the array must contain the provided value. - * - * A query can have only one arrayContains filter. - * - * @param field The name of the field containing an array to search - * @param value The value that must be contained in the array - * - * @return The created `FIRQuery`. - */ -// clang-format off -- (FIRQuery *)queryWhereField:(NSString *)field - arrayContains:(id)value NS_SWIFT_NAME(whereField(_:arrayContains:)); -// clang-format on - -/** - * Creates and returns a new `FIRQuery` with the additional filter that documents must contain - * the specified field, it must be an array, and the array must contain the provided value. - * - * A query can have only one arrayContains filter. - * - * @param path The path of the field containing an array to search - * @param value The value that must be contained in the array - * - * @return The created `FIRQuery`. - */ -// clang-format off -- (FIRQuery *)queryWhereFieldPath:(FIRFieldPath *)path - arrayContains:(id)value NS_SWIFT_NAME(whereField(_:arrayContains:)); -// clang-format on - -@end - NS_ASSUME_NONNULL_END diff --git a/Firestore/Source/Public/FIRFieldValue.h b/Firestore/Source/Public/FIRFieldValue.h index 11a0da0..d896587 100644 --- a/Firestore/Source/Public/FIRFieldValue.h +++ b/Firestore/Source/Public/FIRFieldValue.h @@ -38,6 +38,29 @@ NS_SWIFT_NAME(FieldValue) */ + (instancetype)fieldValueForServerTimestamp NS_SWIFT_NAME(serverTimestamp()); +/** + * Returns a special value that can be used with setData() or updateData() that tells the server to + * union the given elements with any array value that already exists on the server. Each + * specified element that doesn't already exist in the array will be added to the end. If the + * field being modified is not already an array it will be overwritten with an array containing + * exactly the specified elements. + * + * @param elements The elements to union into the array. + * @return The FieldValue sentinel for use in a call to setData() or updateData(). + */ ++ (instancetype)fieldValueForArrayUnion:(NSArray *)elements NS_SWIFT_NAME(arrayUnion(_:)); + +/** + * Returns a special value that can be used with setData() or updateData() that tells the server to + * remove the given elements from any array value that already exists on the server. All + * instances of each element specified will be removed from the array. If the field being + * modified is not already an array it will be overwritten with an empty array. + * + * @param elements The elements to remove from the array. + * @return The FieldValue sentinel for use in a call to setData() or updateData(). + */ ++ (instancetype)fieldValueForArrayRemove:(NSArray *)elements NS_SWIFT_NAME(arrayRemove(_:)); + @end NS_ASSUME_NONNULL_END diff --git a/Firestore/Source/Public/FIRQuery.h b/Firestore/Source/Public/FIRQuery.h index 799abcc..2b02a3c 100644 --- a/Firestore/Source/Public/FIRQuery.h +++ b/Firestore/Source/Public/FIRQuery.h @@ -238,6 +238,38 @@ addSnapshotListenerWithIncludeMetadataChanges:(BOOL)includeMetadataChanges isGreaterThanOrEqualTo:(id)value NS_SWIFT_NAME(whereField(_:isGreaterThanOrEqualTo:)); // clang-format on +/** + * Creates and returns a new `FIRQuery` with the additional filter that documents must contain + * the specified field, it must be an array, and the array must contain the provided value. + * + * A query can have only one arrayContains filter. + * + * @param field The name of the field containing an array to search + * @param value The value that must be contained in the array + * + * @return The created `FIRQuery`. + */ +// clang-format off +- (FIRQuery *)queryWhereField:(NSString *)field + arrayContains:(id)value NS_SWIFT_NAME(whereField(_:arrayContains:)); +// clang-format on + +/** + * Creates and returns a new `FIRQuery` with the additional filter that documents must contain + * the specified field, it must be an array, and the array must contain the provided value. + * + * A query can have only one arrayContains filter. + * + * @param path The path of the field containing an array to search + * @param value The value that must be contained in the array + * + * @return The created `FIRQuery`. + */ +// clang-format off +- (FIRQuery *)queryWhereFieldPath:(FIRFieldPath *)path + arrayContains:(id)value NS_SWIFT_NAME(whereField(_:arrayContains:)); +// clang-format on + /** * Creates and returns a new `FIRQuery` with the additional filter that documents must * satisfy the specified predicate. -- cgit v1.2.3