OSDN Git Service

guard の書き方を統一した
[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 CoreDataConfiguration {
12     
13     static let local = CoreDataConfiguration("LocalData")
14 }
15
16 final class LocalDataStore: CoreDataAccessor, CoreDataManager {
17     
18     static let core = CoreDataCore(.local)
19     
20     static let `default` = LocalDataStore(type: .reader)
21     
22     class func oneTimeEditor() -> LocalDataStore {
23         
24         return LocalDataStore(type: .editor)
25     }
26     
27     required init(type: CoreDataManagerType) {
28         
29         context = LocalDataStore.context(for: type)
30     }
31     
32     deinit {
33         
34         save()
35     }
36     
37     let context: NSManagedObjectContext
38 }
39
40 extension LocalDataStore {
41     
42     func unmarkedDropShipHistories(befor days: Int) -> [DropShipHistory] {
43         
44         let date = Date(timeIntervalSinceNow: TimeInterval(-1 * days * 24 * 60 * 60))
45         let predicate01 = NSPredicate(format: "date < %@", date as NSDate)
46         let predicate02 = NSPredicate(format: "mark = 0 || mark = nil")
47         let predicate03 = NSPredicate(format: "mapArea IN %@", ["1", "2", "3", "4", "5", "6", "7", "8", "9"])
48         let predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate01, predicate02, predicate03])
49         
50         guard let dropHistories = try? objects(of: DropShipHistory.entity, predicate: predicate) else { return [] }
51         
52         return dropHistories
53     }
54     
55     func createDropShipHistory() -> DropShipHistory? {
56         
57         return insertNewObject(for: DropShipHistory.entity)
58     }
59     
60     func kaihatuHistories() -> [KaihatuHistory] {
61         
62         guard let kaihatuHistories = try? objects(of: KaihatuHistory.entity) else { return [] }
63         
64         return kaihatuHistories
65     }
66     
67     func unmarkedKaihatuHistories(befor days: Int) -> [KaihatuHistory] {
68         
69         let date = Date(timeIntervalSinceNow: TimeInterval(-1 * days * 24 * 60 * 60))
70         let predicate01 = NSPredicate(format: "date < %@", date as NSDate)
71         let predicate02 = NSPredicate(format: "mark = 0 || mark = nil")
72         let predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate01, predicate02])
73         
74         guard let kaihatuHistories = try? objects(of: KaihatuHistory.entity, predicate: predicate) else { return [] }
75         
76         return kaihatuHistories
77     }
78     
79     func createKaihatuHistory() -> KaihatuHistory? {
80         
81         return insertNewObject(for: KaihatuHistory.entity)
82     }
83     
84     func kenzoMark(byDockId dockId: Int) -> KenzoMark? {
85         
86         let predicate = NSPredicate(format: "kDockId = %ld", dockId)
87         
88         guard let kenzoMarks = try? objects(of: KenzoMark.entity, predicate: predicate) else { return nil }
89         
90         return kenzoMarks.first
91     }
92     
93     // swiftlint:disable function_parameter_count
94     func kenzoMark(fuel: Int, bull: Int, steel: Int, bauxite: Int, kaihatusizai: Int, kDockId: Int, shipId: Int) -> KenzoMark? {
95         
96         // swiftlint:disable:next line_length
97         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",
98                                     fuel, bull, steel, bauxite, kaihatusizai, kDockId, shipId)
99         
100         guard let kenzoMarks = try? objects(of: KenzoMark.entity, predicate: predicate) else { return nil }
101         
102         return kenzoMarks.first
103     }
104     
105     func createKenzoMark() -> KenzoMark? {
106         
107         return insertNewObject(for: KenzoMark.entity)
108     }
109     
110     func unmarkedKenzoHistories(befor days: Int) -> [KenzoHistory] {
111         
112         let date = Date(timeIntervalSinceNow: TimeInterval(-1 * days * 24 * 60 * 60))
113         let predicate01 = NSPredicate(format: "date < %@", date as NSDate)
114         let predicate02 = NSPredicate(format: "mark = 0 || mark = nil")
115         let predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate01, predicate02])
116         
117         guard let kenzoHistories = try? objects(of: KenzoHistory.entity, predicate: predicate) else { return [] }
118         
119         return kenzoHistories
120     }
121     
122     func createKenzoHistory() -> KenzoHistory? {
123         
124         return insertNewObject(for: KenzoHistory.entity)
125     }
126     
127     func hiddenDropShipHistories() -> [HiddenDropShipHistory] {
128         
129         guard let dropShipHistories = try? objects(of: HiddenDropShipHistory.entity) else { return [] }
130         
131         return dropShipHistories
132     }
133     
134     func createHiddenDropShipHistory() -> HiddenDropShipHistory? {
135         
136         return insertNewObject(for: HiddenDropShipHistory.entity)
137     }
138 }