mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
838 B
Swift
29 lines
838 B
Swift
3 years ago
|
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
||
|
|
||
|
import Foundation
|
||
|
import GRDB
|
||
|
import PromiseKit
|
||
|
import SessionUtilitiesKit
|
||
|
|
||
|
class SynchronousStorage: Storage {
|
||
|
override func writeAsync<T>(updates: @escaping (Database) throws -> T) {
|
||
|
super.write(updates: updates)
|
||
|
}
|
||
|
|
||
|
override func writeAsync<T>(updates: @escaping (Database) throws -> T, completion: @escaping (Database, Swift.Result<T, Error>) throws -> Void) {
|
||
|
super.write { db in
|
||
|
do {
|
||
|
var result: T?
|
||
|
try db.inTransaction {
|
||
|
result = try updates(db)
|
||
|
return .commit
|
||
|
}
|
||
|
try? completion(db, .success(result!))
|
||
|
}
|
||
|
catch {
|
||
|
try? completion(db, .failure(error))
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|