Make record updating methods safer by checking for existing metadatas internally
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Thu, 26 Jan 2023 18:09:24 +0000 (19:09 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 12 May 2023 05:21:14 +0000 (13:21 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFilesDatabaseManager.swift

index 8c99b7d85b0e5f08a3010c666ffadfeab4421365..cc3630cccad20daa5d951223bc34caebe68086c4 100644 (file)
@@ -159,11 +159,12 @@ class NextcloudFilesDatabaseManager : NSObject {
         }
     }
 
-    func updateItemMetadatas(existingMetadatas: [NextcloudItemMetadataTable], updatedMetadatas: [NextcloudItemMetadataTable]) {
+    func updateItemMetadatas(account: String, serverUrl: String, updatedMetadatas: [NextcloudItemMetadataTable]) {
         let database = ncDatabase()
 
         do {
             try database.write {
+                let existingMetadatas = itemMetadatas(account: account, serverUrl: serverUrl, status: .normal)
                 processItemMetadatasToDelete(databaseToWriteTo: database,
                                              existingMetadatas: existingMetadatas,
                                              updatedMetadatas: updatedMetadatas)
@@ -260,11 +261,12 @@ class NextcloudFilesDatabaseManager : NSObject {
         }
     }
 
-    func updateDirectoryMetadatas(existingDirectoryMetadatas: [NextcloudDirectoryMetadataTable], updatedDirectoryMetadatas: [NextcloudDirectoryMetadataTable]) {
+    func updateDirectoryMetadatas(account: String, parentDirectoryServerUrl: String, updatedDirectoryMetadatas: [NextcloudDirectoryMetadataTable]) {
         let database = ncDatabase()
 
         do {
             try database.write {
+                let existingDirectoryMetadatas = directoryMetadatas(account: account, parentDirectoryServerUrl: parentDirectoryServerUrl)
                 processDirectoryMetadatasToDelete(databaseToWriteTo: database,
                                                   existingDirectoryMetadatas: existingDirectoryMetadatas,
                                                   updatedDirectoryMetadatas: updatedDirectoryMetadatas)
@@ -278,7 +280,7 @@ class NextcloudFilesDatabaseManager : NSObject {
         }
     }
 
-    func updateDirectoryMetadatasFromItemMetadatas(existingDirectoryMetadatas: [NextcloudDirectoryMetadataTable], updatedDirectoryItemMetadatas: [NextcloudItemMetadataTable]) {
+    func updateDirectoryMetadatasFromItemMetadatas(account: String, parentDirectoryServerUrl: String, updatedDirectoryItemMetadatas: [NextcloudItemMetadataTable]) {
 
         var updatedDirMetadatas: [NextcloudDirectoryMetadataTable] = []
 
@@ -303,7 +305,7 @@ class NextcloudFilesDatabaseManager : NSObject {
             updatedDirMetadatas.append(newDirectoryMetadata)
         }
 
-        updateDirectoryMetadatas(existingDirectoryMetadatas: existingDirectoryMetadatas, updatedDirectoryMetadatas: updatedDirMetadatas)
+        updateDirectoryMetadatas(account: account, parentDirectoryServerUrl: parentDirectoryServerUrl, updatedDirectoryMetadatas: updatedDirMetadatas)
     }
 
     func localFileMetadataFromOcId(_ ocId: String) -> NextcloudLocalFileMetadataTable? {