]> dgit.raspbian.org Git - nextcloud-desktop.git/commitdiff
Add methods to delete metadata types in NextcloudFilesDatabaseManager
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Mon, 27 Feb 2023 17:24:12 +0000 (18:24 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 12 May 2023 05:21:19 +0000 (13:21 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFilesDatabaseManager.swift

index d7224406e1f15f3f166c537bd755ab3d460ebabc..f2681c4a5e41f78a9507c4c1e39bea42980c0a52 100644 (file)
@@ -226,6 +226,19 @@ class NextcloudFilesDatabaseManager : NSObject {
         }
     }
 
+    func deleteItemMetadata(account: String, serverUrl: String) {
+        let database = ncDatabase()
+
+        do {
+            try database.write {
+                let results = database.objects(NextcloudItemMetadataTable.self).filter("account == %@ AND serverUrl == %@", account, serverUrl)
+                database.delete(results)
+            }
+        } catch let error {
+            NSLog("Could not delete item metadata with serverUrl: %@, received error: %@", serverUrl, error.localizedDescription)
+        }
+    }
+
     func directoryMetadata(account: String, serverUrl: String) -> NextcloudDirectoryMetadataTable? {
         if let metadata = ncDatabase().objects(NextcloudDirectoryMetadataTable.self).filter("account == %@ AND serverUrl == %@", account, serverUrl).first {
             return NextcloudDirectoryMetadataTable(value: metadata)
@@ -385,6 +398,24 @@ class NextcloudFilesDatabaseManager : NSObject {
         }
     }
 
+    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)
+            deleteLocalFileMetadata(ocId: result.ocId)
+        }
+
+        do {
+            try database.write {
+                database.delete(results)
+            }
+        } catch let error {
+            NSLog("Could not relete directory metadata with serverUrl: %@, received error: %@", serverUrl, error.localizedDescription)
+        }
+    }
+
     func localFileMetadataFromOcId(_ ocId: String) -> NextcloudLocalFileMetadataTable? {
         if let metadata = ncDatabase().objects(NextcloudLocalFileMetadataTable.self).filter("ocId == %@", ocId).first {
             return NextcloudLocalFileMetadataTable(value: metadata)
@@ -415,6 +446,19 @@ class NextcloudFilesDatabaseManager : NSObject {
         }
     }
 
+    func deleteLocalFileMetadata(ocId: String) {
+        let database = ncDatabase()
+
+        do {
+            try database.write {
+                let results = database.objects(NextcloudLocalFileMetadataTable.self).filter("ocId == %@", ocId)
+                database.delete(results)
+            }
+        } catch let error {
+            NSLog("Could not delete local file metadata with ocId: %@, received error: %@", ocId, error.localizedDescription)
+        }
+    }
+
     @objc func convertNKFileToItemMetadata(_ file: NKFile, account: String) -> NextcloudItemMetadataTable {
 
         let metadata = NextcloudItemMetadataTable()