2 // TemporaryDataStore.swift
5 // Created by Hori,Masaki on 2017/01/06.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
11 extension CoreDataConfiguration {
13 static let temporary = CoreDataConfiguration("Temporary",
16 type: NSInMemoryStoreType
20 final class TemporaryDataStore: CoreDataAccessor, CoreDataManager {
22 static let core = CoreDataCore(.temporary)
24 static let `default` = TemporaryDataStore(type: .reader)
26 class func oneTimeEditor() -> TemporaryDataStore {
28 return TemporaryDataStore(type: .editor)
31 required init(type: CoreDataManagerType) {
33 context = TemporaryDataStore.context(for: type)
41 let context: NSManagedObjectContext
44 extension TemporaryDataStore {
46 func battle() -> Battle? {
48 return battles().first
51 func battles() -> [Battle] {
53 guard let battles = try? self.objects(of: Battle.entity) else { return [] }
60 battles().forEach { delete($0) }
63 func createBattle() -> Battle? {
65 return insertNewObject(for: Battle.entity)
68 func sortedDamagesById() -> [Damage] {
70 let sortDescriptor = NSSortDescriptor(key: "id", ascending: true)
72 guard let damages = try? objects(of: Damage.entity, sortDescriptors: [sortDescriptor]) else { return [] }
77 func damages() -> [Damage] {
79 guard let damages = try? objects(of: Damage.entity) else { return [] }
84 func createDamage() -> Damage? {
86 return insertNewObject(for: Damage.entity)
89 func guardEscaped() -> [GuardEscaped] {
91 guard let escapeds = try? objects(of: GuardEscaped.entity) else { return [] }
96 func ensuredGuardEscaped(byShipId shipId: Int) -> GuardEscaped? {
98 let p = NSPredicate(format: "shipID = %ld AND ensured = TRUE", shipId)
100 guard let escapes = try? objects(of: GuardEscaped.entity, predicate: p) else { return nil }
105 func notEnsuredGuardEscaped() -> [GuardEscaped] {
107 let predicate = NSPredicate(format: "ensured = FALSE")
109 guard let escapeds = try? objects(of: GuardEscaped.entity, predicate: predicate) else { return [] }
114 func createGuardEscaped() -> GuardEscaped? {
116 return insertNewObject(for: GuardEscaped.entity)