|
|
|
@ -11,11 +11,13 @@ class PendingOperationManager<T: Storable> { |
|
|
|
|
|
|
|
|
|
|
|
fileprivate(set) var items: [PendingOperation<T>] = [] |
|
|
|
fileprivate(set) var items: [PendingOperation<T>] = [] |
|
|
|
|
|
|
|
|
|
|
|
fileprivate var _fileName: String = "pending_\(T.resourceName()).json" |
|
|
|
fileprivate var _fileName: String |
|
|
|
|
|
|
|
|
|
|
|
fileprivate var _inMemory: Bool = false |
|
|
|
fileprivate var _inMemory: Bool = false |
|
|
|
|
|
|
|
|
|
|
|
init(store: Store, inMemory: Bool) { |
|
|
|
init(store: Store, inMemory: Bool) { |
|
|
|
|
|
|
|
self._fileName = "\(store.storeCenter.directoryName)/pending_\(T.resourceName()).json" |
|
|
|
|
|
|
|
|
|
|
|
self._inMemory = inMemory |
|
|
|
self._inMemory = inMemory |
|
|
|
if !inMemory { |
|
|
|
if !inMemory { |
|
|
|
do { |
|
|
|
do { |
|
|
|
@ -32,6 +34,8 @@ class PendingOperationManager<T: Storable> { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var typeName: String { return String(describing: T.self) } |
|
|
|
|
|
|
|
|
|
|
|
func addPendingOperation(method: StorageMethod, instance: T, actionOption: ActionOption) { |
|
|
|
func addPendingOperation(method: StorageMethod, instance: T, actionOption: ActionOption) { |
|
|
|
Logger.log("addPendingOperation: \(method), \(instance)") |
|
|
|
Logger.log("addPendingOperation: \(method), \(instance)") |
|
|
|
|
|
|
|
|
|
|
|
@ -48,15 +52,15 @@ class PendingOperationManager<T: Storable> { |
|
|
|
|
|
|
|
|
|
|
|
fileprivate func _writeIfNecessary() { |
|
|
|
fileprivate func _writeIfNecessary() { |
|
|
|
guard !self._inMemory else { return } |
|
|
|
guard !self._inMemory else { return } |
|
|
|
|
|
|
|
do { |
|
|
|
Task(priority: .background) { |
|
|
|
let jsonString: String = try self.items.jsonString() |
|
|
|
do { |
|
|
|
Task(priority: .background) { |
|
|
|
let jsonString: String = try self.items.jsonString() |
|
|
|
|
|
|
|
let _ = try FileUtils.writeToDocumentDirectory(content: jsonString, fileName: self._fileName) |
|
|
|
let _ = try FileUtils.writeToDocumentDirectory(content: jsonString, fileName: self._fileName) |
|
|
|
} catch { |
|
|
|
|
|
|
|
Logger.error(error) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} catch { |
|
|
|
|
|
|
|
Logger.error(error) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|