2 // LocalDataStore.swift
5 // Created by Hori,Masaki on 2017/01/06.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
11 extension CoreDataConfiguration {
13 static let local = CoreDataConfiguration("LocalData")
16 final class LocalDataStore: CoreDataAccessor, CoreDataManager {
18 static let core = CoreDataCore(.local)
20 static let `default` = LocalDataStore(type: .reader)
22 class func oneTimeEditor() -> LocalDataStore {
24 return LocalDataStore(type: .editor)
27 required init(type: CoreDataManagerType) {
29 context = LocalDataStore.context(for: type)
37 let context: NSManagedObjectContext
40 extension LocalDataStore {
42 func unmarkedDropShipHistories(befor days: Int) -> [DropShipHistory] {
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])
50 guard let dropHistories = try? objects(of: DropShipHistory.entity, predicate: predicate) else { return [] }
55 func createDropShipHistory() -> DropShipHistory? {
57 return insertNewObject(for: DropShipHistory.entity)
60 func kaihatuHistories() -> [KaihatuHistory] {
62 guard let kaihatuHistories = try? objects(of: KaihatuHistory.entity) else { return [] }
64 return kaihatuHistories
67 func unmarkedKaihatuHistories(befor days: Int) -> [KaihatuHistory] {
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])
74 guard let kaihatuHistories = try? objects(of: KaihatuHistory.entity, predicate: predicate) else { return [] }
76 return kaihatuHistories
79 func createKaihatuHistory() -> KaihatuHistory? {
81 return insertNewObject(for: KaihatuHistory.entity)
84 func kenzoMark(byDockId dockId: Int) -> KenzoMark? {
86 let predicate = NSPredicate(format: "kDockId = %ld", dockId)
88 guard let kenzoMarks = try? objects(of: KenzoMark.entity, predicate: predicate) else { return nil }
90 return kenzoMarks.first
93 // swiftlint:disable function_parameter_count
94 func kenzoMark(fuel: Int, bull: Int, steel: Int, bauxite: Int, kaihatusizai: Int, kDockId: Int, shipId: Int) -> KenzoMark? {
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)
100 guard let kenzoMarks = try? objects(of: KenzoMark.entity, predicate: predicate) else { return nil }
102 return kenzoMarks.first
105 func createKenzoMark() -> KenzoMark? {
107 return insertNewObject(for: KenzoMark.entity)
110 func unmarkedKenzoHistories(befor days: Int) -> [KenzoHistory] {
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])
117 guard let kenzoHistories = try? objects(of: KenzoHistory.entity, predicate: predicate) else { return [] }
119 return kenzoHistories
122 func createKenzoHistory() -> KenzoHistory? {
124 return insertNewObject(for: KenzoHistory.entity)
127 func hiddenDropShipHistories() -> [HiddenDropShipHistory] {
129 guard let dropShipHistories = try? objects(of: HiddenDropShipHistory.entity) else { return [] }
131 return dropShipHistories
134 func createHiddenDropShipHistory() -> HiddenDropShipHistory? {
136 return insertNewObject(for: HiddenDropShipHistory.entity)