2 // LocalDataStore.swift
5 // Created by Hori,Masaki on 2017/01/06.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
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,
21 extension CoreDataCore {
22 static let local = CoreDataCore(.local)
26 class LocalDataStore: CoreDataAccessor, CoreDataManager {
27 static var `default` = LocalDataStore(type: .reader)
28 class func oneTimeEditor() -> LocalDataStore {
29 return LocalDataStore(type: .editor)
32 required init(type: CoreDataManagerType) {
33 managedObjectContext =
34 type == .reader ? core.parentManagedObjectContext
35 : core.editorManagedObjectContext()
41 let core = CoreDataCore.local
42 var managedObjectContext: NSManagedObjectContext
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)
57 func createDropShipHistory() -> DropShipHistory? {
58 return insertNewObject(for: DropShipHistory.entity)
61 func kaihatuHistories() -> [KaihatuHistory] {
62 guard let kaihatuHistories = try? objects(with: KaihatuHistory.entity)
64 return kaihatuHistories
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)
73 return kaihatuHistories
75 func createKaihatuHistory() -> KaihatuHistory? {
76 return insertNewObject(for: KaihatuHistory.entity)
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)
83 return kenzoMarks.first
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)
90 return kenzoMarks.first
92 func createKenzoMark() -> KenzoMark? {
93 return insertNewObject(for: KenzoMark.entity)
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)
103 return kenzoHistories
105 func createKenzoHistory() -> KenzoHistory? {
106 return insertNewObject(for: KenzoHistory.entity)
109 func hiddenDropShipHistories() -> [HiddenDropShipHistory] {
110 guard let dropShipHistories = try? objects(with: HiddenDropShipHistory.entity)
112 return dropShipHistories
114 func createHiddenDropShipHistory() -> HiddenDropShipHistory? {
115 return insertNewObject(for: HiddenDropShipHistory.entity)