From 3354f3e4de85761f59e7112dc457511d54fc3473 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Thu, 26 Jan 2023 16:07:46 +0100 Subject: [PATCH] Add updateDirectoryMetadatasFromItemMetadatas to NextcloudFilesDatabaseManager Signed-off-by: Claudio Cambra --- .../NextcloudFilesDatabaseManager.swift | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFilesDatabaseManager.swift b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFilesDatabaseManager.swift index 17b4db700..729ac9df5 100644 --- a/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFilesDatabaseManager.swift +++ b/shell_integration/MacOSX/NextcloudIntegration/FileProviderExt/NextcloudFilesDatabaseManager.swift @@ -176,10 +176,43 @@ class NextcloudFilesDatabaseManager : NSObject { return ncDatabase().objects(NextcloudDirectoryMetadataTable.self).filter("account == %@ AND serverUrl == %@", account, serverUrl).first } + func directoryMetadata(ocId: String) -> NextcloudDirectoryMetadataTable? { + return ncDatabase().objects(NextcloudDirectoryMetadataTable.self).filter("ocId == %@", ocId).first + } + func parentDirectoryMetadataForItem(_ itemMetadata: NextcloudItemMetadataTable) -> NextcloudDirectoryMetadataTable? { return directoryMetadata(account: itemMetadata.account, serverUrl: itemMetadata.serverUrl) } + func updateDirectoryMetadatasFromItemMetadatas(_ directoryItemMetadatas: [NextcloudItemMetadataTable]) { + let database = ncDatabase() + do { + try database.write { + for directoryItemMetadata in directoryItemMetadatas { + var newDirectoryMetadata = NextcloudDirectoryMetadataTable() + let directoryOcId = directoryItemMetadata.ocId + + if let existingDirectoryMetadata = directoryMetadata(ocId: directoryOcId) { + newDirectoryMetadata = existingDirectoryMetadata + } + + newDirectoryMetadata.ocId = directoryOcId + newDirectoryMetadata.fileId = directoryItemMetadata.fileId + newDirectoryMetadata.etag = directoryItemMetadata.etag + newDirectoryMetadata.serverUrl = directoryItemMetadata.serverUrl + "/" + directoryItemMetadata.fileNameView + newDirectoryMetadata.account = directoryItemMetadata.account + newDirectoryMetadata.e2eEncrypted = directoryItemMetadata.e2eEncrypted + newDirectoryMetadata.favorite = directoryItemMetadata.favorite + newDirectoryMetadata.permissions = directoryItemMetadata.permissions + + database.add(newDirectoryMetadata, update: .all) + } + } + } catch let error { + print("Could not update directory metadatas in database, received error: %@", error) + } + } + func localFileMetadataFromOcId(_ ocId: String) -> NextcloudLocalFileMetadataTable? { return ncDatabase().objects(NextcloudLocalFileMetadataTable.self).filter("ocId == %@", ocId).first } -- 2.30.2