OSDN Git Service

エンティティ名とクラス名を同じにしたことで生じた無駄を削除
[kcd/KCD.git] / KCD / LocalDataStore.swift
1 //
2 //  LocalDataStore.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2017/01/06.
6 //  Copyright © 2017年 Hori,Masaki. All rights reserved.
7 //
8
9 import Cocoa
10
11 extension CoreDataIntormation {
12     static let local = CoreDataIntormation(
13         modelName: "LocalData",
14         storeFileName: "LocalData.storedata",
15         storeOptions: [NSMigratePersistentStoresAutomaticallyOption: true,
16                        NSInferMappingModelAutomaticallyOption: true],
17         storeType: NSSQLiteStoreType,
18         deleteAndRetry: false
19     )
20 }
21 extension CoreDataCore {
22     static let local = CoreDataCore(.local)
23 }
24
25
26 class LocalDataStore: CoreDataAccessor, CoreDataManager {
27     static var `default` = LocalDataStore(type: .reader)
28     class func oneTimeEditor() -> LocalDataStore {
29         return LocalDataStore(type: .editor)
30     }
31     
32     required init(type: CoreDataManagerType) {
33         managedObjectContext =
34             type == .reader ? core.parentManagedObjectContext
35             : core.editorManagedObjectContext()
36     }
37     deinit {
38         saveActionCore()
39     }
40     
41     let core = CoreDataCore.local
42     var managedObjectContext: NSManagedObjectContext
43 }
44
45 extension LocalDataStore {
46     func unmarkedDropShipHistories(befor days: Int) -> [DropShipHistory] {
47         let date = Date(timeIntervalSinceNow: TimeInterval(-1 * days * 24 * 60 * 60))
48         let predicate01 = NSPredicate(format: "date < %@", date as NSDate)
49         let predicate02 = NSPredicate(format: "mark = 0 || mark = nil")
50         let predicate03 = NSPredicate(format: "mapArea IN %@", ["1", "2", "3", "4", "5", "6", "7", "8", "9"])
51         let predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate01, predicate02, predicate03])
52         guard let dropHistories = try? objects(with: DropShipHistory.entity, predicate: predicate)
53             else { return [] }
54         return dropHistories
55     }
56     
57     func createDropShipHistory() -> DropShipHistory? {
58         return insertNewObject(for: DropShipHistory.entity)
59     }
60     
61     func kaihatuHistories() -> [KaihatuHistory] {
62         guard let kaihatuHistories = try? objects(with: KaihatuHistory.entity)
63             else { return [] }
64         return kaihatuHistories
65     }
66     func unmarkedKaihatuHistories(befor days: Int) -> [KaihatuHistory] {
67         let date = Date(timeIntervalSinceNow: TimeInterval(-1 * days * 24 * 60 * 60))
68         let predicate01 = NSPredicate(format: "date < %@", date as NSDate)
69         let predicate02 = NSPredicate(format: "mark = 0 || mark = nil")
70         let predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate01, predicate02])
71         guard let kaihatuHistories = try? objects(with: KaihatuHistory.entity, predicate: predicate)
72             else { return [] }
73         return kaihatuHistories
74     }
75     func createKaihatuHistory() -> KaihatuHistory? {
76         return insertNewObject(for: KaihatuHistory.entity)
77     }
78     
79     func kenzoMark(byDockId dockId: Int) -> KenzoMark? {
80         let predicate = NSPredicate(format: "kDockId = %ld", dockId)
81         guard let kenzoMarks = try? objects(with: KenzoMark.entity, predicate: predicate)
82             else { return nil }
83         return kenzoMarks.first
84     }
85     func kenzoMark(fuel: Int, bull: Int, steel: Int, bauxite: Int, kaihatusizai: Int, kDockId: Int, shipId: Int) -> KenzoMark? {
86         let predicate = NSPredicate(format: "fuel = %ld AND bull = %ld AND steel = %ld AND bauxite = %ld AND kaihatusizai = %ld AND kDockId = %ld AND created_ship_id = %ld"
87             , fuel, bull, steel, bauxite, kaihatusizai, kDockId, shipId)
88         guard let kenzoMarks = try? objects(with: KenzoMark.entity, predicate: predicate)
89             else { return nil }
90         return kenzoMarks.first
91     }
92     func createKenzoMark() -> KenzoMark? {
93         return insertNewObject(for: KenzoMark.entity)
94     }
95     
96     func unmarkedKenzoHistories(befor days: Int) -> [KenzoHistory] {
97         let date = Date(timeIntervalSinceNow: TimeInterval(-1 * days * 24 * 60 * 60))
98         let predicate01 = NSPredicate(format: "date < %@", date as NSDate)
99         let predicate02 = NSPredicate(format: "mark = 0 || mark = nil")
100         let predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate01, predicate02])
101         guard let kenzoHistories = try? objects(with: KenzoHistory.entity, predicate: predicate)
102             else { return [] }
103         return kenzoHistories
104     }
105     func createKenzoHistory() -> KenzoHistory? {
106         return insertNewObject(for: KenzoHistory.entity)
107     }
108     
109     func hiddenDropShipHistories() -> [HiddenDropShipHistory] {
110         guard let dropShipHistories = try? objects(with: HiddenDropShipHistory.entity)
111             else { return [] }
112         return dropShipHistories
113     }
114     func createHiddenDropShipHistory() -> HiddenDropShipHistory? {
115         return insertNewObject(for: HiddenDropShipHistory.entity)
116     }
117 }