OSDN Git Service

CoreDataのエンティティ名を文字列でアクセスしないようにした
[kcd/KCD.git] / KCD / ResourceHistoryDataStore.swift
1 //
2 //  ResourceHistoryDataStore.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 resourceHistory = CoreDataIntormation(
13         modelName: "ResourceHistory",
14         storeFileName: "ResourceHistory.storedata",
15         storeOptions:[NSMigratePersistentStoresAutomaticallyOption: true,
16                       NSInferMappingModelAutomaticallyOption: true],
17         storeType: NSSQLiteStoreType,
18         deleteAndRetry: false
19     )
20 }
21 extension CoreDataCore {
22     static let resourceHistory = CoreDataCore(.resourceHistory)
23 }
24 extension Entity {
25     static let resource = Entity(name: "Resource")
26 }
27
28 class ResourceHistoryDataStore: CoreDataAccessor, CoreDataManager {
29     static var `default` = ResourceHistoryDataStore(type: .reader)
30     class func oneTimeEditor() -> ResourceHistoryDataStore {
31         return ResourceHistoryDataStore(type: .editor)
32     }
33     
34     required init(type: CoreDataManagerType) {
35         managedObjectContext =
36             type == .reader ? core.parentManagedObjectContext
37                 : core.editorManagedObjectContext()
38     }
39     deinit {
40         saveActionCore()
41     }
42     
43     let core = CoreDataCore.resourceHistory
44     var managedObjectContext: NSManagedObjectContext
45 }
46
47 extension ResourceHistoryDataStore {
48     func resources(in minites: [Int], older: Date) -> [KCResource] {
49         let p = NSPredicate(format: "minute IN %@ AND date < %@", minites, older as NSDate)
50         guard let a = try? objects(with: .resource, predicate: p),
51             let resources = a as? [KCResource]
52             else { return [] }
53         return resources
54     }
55     func cerateResource() -> KCResource? {
56         return insertNewObject(for: .resource) as? KCResource
57     }
58 }