Skip to content
This repository was archived by the owner on Jan 2, 2025. It is now read-only.

Commit f9aa4b0

Browse files
committed
- Added the option to merge objects when updating (default is false)
1 parent c215fc8 commit f9aa4b0

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

Sources/FirestoreManager/CollectionRepository.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ open class CollectionRepository<T: Codable>: ObservableObject {
5454
}
5555
}
5656

57-
open func update(_ object: T, id: String) {
58-
FirestoreManager.updateDocument(object, id: id, reference: ref) { result in
57+
open func update(_ object: T, id: String, merge: Bool = false) {
58+
FirestoreManager.updateDocument(object, id: id, reference: ref, merge: merge) { result in
5959
switch result {
6060
case .success:
6161
print("Object updated \(self.getPath(id: id))!")

Sources/FirestoreManager/FirestoreCRUD/Update.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,11 @@ extension FirestoreManager {
2020
public static func updateDocument<T>(_ object: T,
2121
id: String,
2222
reference: ReferenceProtocol,
23+
merge: Bool = false,
2324
completion: @escaping(Result<String, FirestoreError>) -> Void) where T: Encodable {
2425

2526
do {
26-
try reference.reference().document(id).setData(from: object, merge: false)
27+
try reference.reference().document(id).setData(from: object, merge: merge)
2728
completion(.success(id))
2829
} catch {
2930
completion(.failure(.fail(error: error, action: .update, reference: reference, id: id)))
@@ -38,7 +39,10 @@ extension FirestoreManager {
3839
- Parameter reference: The collection name
3940
- Parameter newValues: Array of keys and values for all values to be updated
4041
*/
41-
public static func updateData(id: String, reference: ReferenceProtocol, newValues: [String: Any], completion: @escaping(Result<String, FirestoreError>) -> Void) {
42+
public static func updateData(id: String,
43+
reference: ReferenceProtocol,
44+
newValues: [String: Any],
45+
completion: @escaping(Result<String, FirestoreError>) -> Void) {
4246

4347
do {
4448
try reference.reference().document(id).setData(newValues, merge: true) { error in

0 commit comments

Comments
 (0)