Make sync status inserts async when done during the scope of a iCloud sync

This commit is contained in:
Maurice Parker
2020-05-28 16:24:10 -05:00
parent 9253222f96
commit 8a03a26a10
5 changed files with 95 additions and 37 deletions

View File

@@ -168,6 +168,25 @@ struct SyncStatusTable: DatabaseTable {
throw error
}
}
func insertStatuses(_ statuses: [SyncStatus], completion: @escaping DatabaseCompletionBlock) {
queue.runInTransaction { databaseResult in
func makeDatabaseCall(_ database: FMDatabase) {
let statusArray = statuses.map { $0.databaseDictionary() }
self.insertRows(statusArray, insertType: .orReplace, in: database)
}
switch databaseResult {
case .success(let database):
makeDatabaseCall(database)
completion(nil)
case .failure(let databaseError):
completion(databaseError)
}
}
}
}
private extension SyncStatusTable {