OSDN Git Service

8e728b8e95b66e6087a481b85ab6f8c6316bed8b
[kcd/KCD.git] / KCD / Entity.swift
1 //
2 //  Entity.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2017/03/11.
6 //  Copyright © 2017年 Hori,Masaki. All rights reserved.
7 //
8
9 import CoreData
10
11 struct Entity<T: NSManagedObject> {
12     
13     let name: String
14 }
15
16 protocol EntityProvider {
17     
18     associatedtype ObjectType: NSManagedObject = Self
19     
20     static var entityName: String { get }
21     static var entity: Entity<ObjectType> { get }
22 }
23
24 extension EntityProvider {
25     
26     static var entity: Entity<ObjectType> {
27         
28         return Entity<ObjectType>(name: entityName)
29     }
30 }
31
32 // MARK: - Implementations
33 extension NSManagedObject {
34     
35     class var entityName: String { return String(describing: self) }
36 }
37
38 // MARK: - KCD model
39 extension AirBase: EntityProvider {}
40 extension AirBasePlaneInfo: EntityProvider {}
41 extension Basic: EntityProvider {}
42 extension Deck: EntityProvider {}
43 extension KenzoDock: EntityProvider {}
44 extension MasterFurniture: EntityProvider {}
45 extension MasterMapArea: EntityProvider {}
46 extension MasterMapInfo: EntityProvider {}
47 extension MasterMission: EntityProvider {}
48 extension MasterShip: EntityProvider {}
49 extension MasterSlotItem: EntityProvider {}
50 extension MasterSType: EntityProvider {}
51 extension MasterSlotItemEquipType: EntityProvider {}
52 extension MasterUseItem: EntityProvider {}
53 extension Material: EntityProvider {}
54 extension NyukyoDock: EntityProvider {}
55 extension Ship: EntityProvider {}
56 extension SlotItem: EntityProvider {}
57 extension Quest: EntityProvider {}
58
59 // MARK: - LocalData model
60 extension DropShipHistory: EntityProvider {}
61 extension HiddenDropShipHistory: EntityProvider {}
62 extension KaihatuHistory: EntityProvider {}
63 extension KenzoHistory: EntityProvider {}
64 extension KenzoMark: EntityProvider {}
65
66 // MARK: - Temporay model
67 extension Battle: EntityProvider {}
68 extension Damage: EntityProvider {}
69 extension GuardEscaped: EntityProvider {}
70
71 // MARK: - Bookmark model
72 extension Bookmark: EntityProvider {}
73
74 // MARK: - ResourceHistory model
75 extension Resource: EntityProvider {}