Add convenience method to rename file item metadatas in database
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Mon, 6 Mar 2023 14:52:58 +0000 (15:52 +0100)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Fri, 12 May 2023 05:21:20 +0000 (13:21 +0800)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFilesDatabaseManager.swift

index cb10fa87769aa58455b4cdfcbf789044a42b6f4e..4a8d79afc675237cb701d580bf0e7f0c5f4be06d 100644 (file)
@@ -239,6 +239,27 @@ class NextcloudFilesDatabaseManager : NSObject {
         }
     }
 
+    func renameItemMetadata(ocId: String, newFileName: String) {
+        let database = ncDatabase()
+
+        do {
+            try database.write {
+                guard let itemMetadata = database.objects(NextcloudItemMetadataTable.self).filter("ocId == %@", ocId).first else {
+                    NSLog("Could not find an item with ocID %@ to rename to %@", ocId, newFileName)
+                    return
+                }
+
+                let oldFileName = itemMetadata.fileName
+                itemMetadata.fileName = newFileName
+                itemMetadata.fileNameView = newFileName
+                database.add(itemMetadata, update: .all)
+                NSLog("Renamed item %@ to %@", oldFileName, newFileName)
+            }
+        } catch let error {
+            NSLog("Could not rename filename of item metadata with ocID: %@ to proposed name %@, received error: %@", ocId, newFileName, 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)