//
import Cocoa
+import Doutaku
-extension CoreDataConfiguration {
+final class TemporaryDataStore: CoreDataManager {
- static let temporary = CoreDataConfiguration("Temporary",
- fileName: ":memory:",
- options: [:],
- type: NSInMemoryStoreType
- )
-}
-
-final class TemporaryDataStore: CoreDataAccessor, CoreDataManager {
-
- static let core = CoreDataCore(.temporary)
+ static let core = CoreDataCore(CoreDataConfiguration("Temporary",
+ fileName: ":memory:",
+ options: [:],
+ type: NSInMemoryStoreType))
static let `default` = TemporaryDataStore(type: .reader)
- class func oneTimeEditor() -> TemporaryDataStore {
-
- return TemporaryDataStore(type: .editor)
- }
-
required init(type: CoreDataManagerType) {
context = TemporaryDataStore.context(for: type)
deinit {
- save()
+ save(errorHandler: presentOnMainThread)
}
let context: NSManagedObjectContext
}
-
-extension TemporaryDataStore {
-
- func battle() -> Battle? {
-
- return battles().first
- }
-
- func battles() -> [Battle] {
-
- guard let battles = try? self.objects(of: Battle.entity) else { return [] }
-
- return battles
- }
-
- func resetBattle() {
-
- battles().forEach { delete($0) }
- }
-
- func createBattle() -> Battle? {
-
- return insertNewObject(for: Battle.entity)
- }
-
- func sortedDamagesById() -> [Damage] {
-
- let sortDescriptor = NSSortDescriptor(key: #keyPath(Damage.id), ascending: true)
-
- guard let damages = try? objects(of: Damage.entity, sortDescriptors: [sortDescriptor]) else { return [] }
-
- return damages
- }
-
- func damages() -> [Damage] {
-
- guard let damages = try? objects(of: Damage.entity) else { return [] }
-
- return damages
- }
-
- func createDamage() -> Damage? {
-
- return insertNewObject(for: Damage.entity)
- }
-
- func guardEscaped() -> [GuardEscaped] {
-
- guard let escapeds = try? objects(of: GuardEscaped.entity) else { return [] }
-
- return escapeds
- }
-
- func ensuredGuardEscaped(byShipId shipId: Int) -> GuardEscaped? {
-
- let p = NSPredicate(format: "shipID = %ld AND ensured = TRUE", shipId)
-
- guard let escapes = try? objects(of: GuardEscaped.entity, predicate: p) else { return nil }
-
- return escapes.first
- }
-
- func notEnsuredGuardEscaped() -> [GuardEscaped] {
-
- let predicate = NSPredicate(format: "ensured = FALSE")
-
- guard let escapeds = try? objects(of: GuardEscaped.entity, predicate: predicate) else { return [] }
-
- return escapeds
- }
-
- func createGuardEscaped() -> GuardEscaped? {
-
- return insertNewObject(for: GuardEscaped.entity)
- }
-}