}
private func processItemMetadatasToDelete(databaseToWriteTo: Realm,
- existingMetadatas: [NextcloudItemMetadataTable],
+ existingMetadatas: Results<NextcloudItemMetadataTable>,
updatedMetadatas: [NextcloudItemMetadataTable]) {
assert(databaseToWriteTo.isInWriteTransaction)
etag: %@
"""
, metadataToDelete.ocId, metadataToDelete.fileName, metadataToDelete.etag)
- databaseToWriteTo.delete(metadataToDelete)
+
+ // Can't pass copies, we need the originals from the database
+ databaseToWriteTo.delete(ncDatabase().objects(NextcloudItemMetadataTable.self).filter("ocId == %@", metadataToDelete.ocId))
}
}
private func processItemMetadatasToUpdate(databaseToWriteTo: Realm,
- existingMetadatas: [NextcloudItemMetadataTable],
+ existingMetadatas: Results<NextcloudItemMetadataTable>,
updatedMetadatas: [NextcloudItemMetadataTable]) {
assert(databaseToWriteTo.isInWriteTransaction)
do {
try database.write {
- let existingMetadatas = itemMetadatas(account: account, serverUrl: serverUrl, status: .normal)
+ let existingMetadatas = ncDatabase().objects(NextcloudItemMetadataTable.self).filter("account == %@ AND serverUrl == %@ AND status == %@", account, serverUrl, NextcloudItemMetadataTable.Status.normal.rawValue)
+
processItemMetadatasToDelete(databaseToWriteTo: database,
existingMetadatas: existingMetadatas,
updatedMetadatas: updatedMetadatas)
-
processItemMetadatasToUpdate(databaseToWriteTo: database,
existingMetadatas: existingMetadatas,
updatedMetadatas: updatedMetadatas)
}
private func processDirectoryMetadatasToDelete(databaseToWriteTo: Realm,
- existingDirectoryMetadatas: [NextcloudDirectoryMetadataTable],
+ existingDirectoryMetadatas: Results<NextcloudDirectoryMetadataTable>,
updatedDirectoryMetadatas: [NextcloudDirectoryMetadataTable]) {
assert(databaseToWriteTo.isInWriteTransaction)
etag: %@
"""
, metadataToDelete.ocId, metadataToDelete.serverUrl, metadataToDelete.etag)
- databaseToWriteTo.delete(metadataToDelete)
+
+ // Can't pass copies, we need the originals from the database
+ databaseToWriteTo.delete(databaseToWriteTo.objects(NextcloudDirectoryMetadataTable.self).filter("ocId == %@", metadataToDelete.ocId))
}
}
private func processDirectoryMetadatasToUpdate(databaseToWriteTo: Realm,
- existingDirectoryMetadatas: [NextcloudDirectoryMetadataTable],
+ existingDirectoryMetadatas: Results<NextcloudDirectoryMetadataTable>,
updatedDirectoryMetadatas: [NextcloudDirectoryMetadataTable]) {
assert(databaseToWriteTo.isInWriteTransaction)
do {
try database.write {
- let existingDirectoryMetadatas = directoryMetadatas(account: account, parentDirectoryServerUrl: parentDirectoryServerUrl)
+ let existingDirectoryMetadatas = ncDatabase().objects(NextcloudDirectoryMetadataTable.self).filter("account == %@ AND parentDirectoryServerUrl == %@", account, parentDirectoryServerUrl)
+
processDirectoryMetadatasToDelete(databaseToWriteTo: database,
existingDirectoryMetadatas: existingDirectoryMetadatas,
updatedDirectoryMetadatas: updatedDirectoryMetadatas)