OSDN Git Service

エンティティ名とクラス名を同じにしたことで生じた無駄を削除
[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
25 class ResourceHistoryDataStore: CoreDataAccessor, CoreDataManager {
26     static var `default` = ResourceHistoryDataStore(type: .reader)
27     class func oneTimeEditor() -> ResourceHistoryDataStore {
28         return ResourceHistoryDataStore(type: .editor)
29     }
30     
31     required init(type: CoreDataManagerType) {
32         managedObjectContext =
33             type == .reader ? core.parentManagedObjectContext
34                 : core.editorManagedObjectContext()
35     }
36     deinit {
37         saveActionCore()
38     }
39     
40     let core = CoreDataCore.resourceHistory
41     var managedObjectContext: NSManagedObjectContext
42 }
43
44 extension ResourceHistoryDataStore {
45     func resources(in minites: [Int], older: Date) -> [Resource] {
46         let p = NSPredicate(format: "minute IN %@ AND date < %@", minites, older as NSDate)
47         guard let resources = try? objects(with: Resource.entity, predicate: p)
48             else { return [] }
49         return resources
50     }
51     func cerateResource() -> Resource? {
52         return insertNewObject(for: Resource.entity)
53     }
54 }