Use ocIds for item metadata deletion in NextcloudFilesDatabaseManager
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Thu, 9 Mar 2023 15:45:28 +0000 (16:45 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 12 May 2023 05:21:23 +0000 (13:21 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/FileProviderExtension.swift
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFilesDatabaseManager.swift

index b870e8a2c71fbb0a0cf697c958aacd5da8da8607..ee038a740ca966e999da83b259ca8ab116c28bcf 100644 (file)
@@ -549,7 +549,6 @@ class FileProviderExtension: NSObject, NSFileProviderReplicatedExtension, NKComm
             NSLog("Successfully delete item with identifier: %@ and filename: %@", ocId, serverFileNameUrl)
 
             let serverUrl = itemMetadata.serverUrl
-            dbManager.deleteItemMetadata(account: account, serverUrl: serverUrl)
 
             if itemMetadata.directory && dbManager.directoryMetadata(ocId: ocId) != nil {
                 dbManager.deleteDirectoryAndSubdirectoriesMetadata(account: account, serverUrl: serverUrl)
index badb84cff51b9f452bddbcc4dd714729c4fa6cdd..10ea1cf78e34cb5ca178289c23a2508c78014350 100644 (file)
@@ -252,16 +252,16 @@ class NextcloudFilesDatabaseManager : NSObject {
         }
     }
 
-    func deleteItemMetadata(account: String, serverUrl: String) {
+    func deleteItemMetadata(ocId: String) {
         let database = ncDatabase()
 
         do {
             try database.write {
-                let results = database.objects(NextcloudItemMetadataTable.self).filter("account == %@ AND serverUrl == %@", account, serverUrl)
+                let results = database.objects(NextcloudItemMetadataTable.self).filter("ocId == %@", ocId)
                 database.delete(results)
             }
         } catch let error {
-            NSLog("Could not delete item metadata with serverUrl: %@, received error: %@", serverUrl, error.localizedDescription)
+            NSLog("Could not delete item metadata with ocId: %@, received error: %@", ocId, error.localizedDescription)
         }
     }
 
@@ -449,12 +449,13 @@ class NextcloudFilesDatabaseManager : NSObject {
         }
     }
 
+    // Deletes all metadatas related to the info of the directory provided
     func deleteDirectoryAndSubdirectoriesMetadata(account: String, serverUrl: String) {
         let database = ncDatabase()
         let results = database.objects(NextcloudDirectoryMetadataTable.self).filter("account == %@ AND serverUrl BEGINSWITH %@", account, serverUrl)
 
         for result in results {
-            deleteItemMetadata(account: result.account, serverUrl: result.serverUrl)
+            deleteItemMetadata(ocId: result.ocId)
             deleteLocalFileMetadata(ocId: result.ocId)
         }