2 // ServerDataStoreAccessor.swift
5 // Created by Hori,Masaki on 2017/10/25.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
9 extension ServerDataStore {
11 func airBases() -> [AirBase] {
13 guard let airbase = try? objects(of: AirBase.entity) else { return [] }
18 func airBase(area: Int, base: Int) -> AirBase? {
20 let p = NSPredicate.empty
21 .and(NSPredicate(#keyPath(AirBase.area_id), equal: area))
22 .and(NSPredicate(#keyPath(AirBase.rid), equal: base))
24 guard let airBases = try? objects(of: AirBase.entity, predicate: p) else { return nil }
29 func createAirBasePlaneInfo() -> AirBasePlaneInfo? {
31 return insertNewObject(for: AirBasePlaneInfo.entity)
34 func basic() -> Basic? {
36 guard let basics = try? objects(of: Basic.entity) else { return nil }
41 func createBasic() -> Basic? {
43 return insertNewObject(for: Basic.entity)
46 func decksSortedById() -> [Deck] {
48 let sortDec = NSSortDescriptor(key: #keyPath(Deck.id), ascending: true)
50 guard let decks = try? objects(of: Deck.entity, sortDescriptors: [sortDec]) else { return [] }
55 func deck(by id: Int) -> Deck? {
57 let p = NSPredicate(#keyPath(Deck.id), equal: id)
59 guard let decks = try? objects(of: Deck.entity, predicate: p) else { return nil }
64 func kenzoDock(by dockId: Int) -> KenzoDock? {
66 let dockPredicate = NSPredicate(#keyPath(KenzoDock.id), equal: dockId)
68 guard let kenzoDocks = try? objects(of: KenzoDock.entity, predicate: dockPredicate) else { return nil }
70 return kenzoDocks.first
73 func mapArea(by id: Int) -> MasterMapArea? {
75 let predicate = NSPredicate(#keyPath(MasterMapArea.id), equal: id)
76 guard let mapAreas = try? objects(of: MasterMapArea.entity, predicate: predicate) else { return nil }
81 func mapInfo(area: Int, no: Int) -> MasterMapInfo? {
83 let predicate = NSPredicate.empty
84 .and(NSPredicate(#keyPath(MasterMapInfo.maparea_id), equal: area))
85 .and(NSPredicate(#keyPath(MasterMapInfo.no), equal: no))
87 guard let mapInfos = try? objects(of: MasterMapInfo.entity, predicate: predicate) else { return nil }
92 func masterMission(by id: Int) -> MasterMission? {
94 let p = NSPredicate(#keyPath(MasterMission.id), equal: id)
96 guard let missions = try? objects(of: MasterMission.entity, predicate: p) else { return nil }
101 func masterShips() -> [MasterShip] {
103 guard let ships = try? objects(of: MasterShip.entity) else { return [] }
108 func sortedMasterShipsById() -> [MasterShip] {
110 let sortDesc = NSSortDescriptor(key: #keyPath(MasterShip.id), ascending: true)
112 guard let ships = try? objects(of: MasterShip.entity, sortDescriptors: [sortDesc]) else { return [] }
117 func masterShip(by id: Int) -> MasterShip? {
119 let p = NSPredicate(#keyPath(MasterShip.id), equal: id)
121 guard let ships = try? objects(of: MasterShip.entity, predicate: p) else { return nil }
126 func sortedMasterSlotItemsById() -> [MasterSlotItem] {
128 let sortDesc = NSSortDescriptor(key: #keyPath(MasterSlotItem.id), ascending: true)
130 guard let masterSlotItems = try? objects(of: MasterSlotItem.entity, sortDescriptors: [sortDesc]) else { return [] }
132 return masterSlotItems
135 func masterSlotItems() -> [MasterSlotItem] {
137 guard let masterSlotItems = try? objects(of: MasterSlotItem.entity) else { return [] }
139 return masterSlotItems
142 func masterSlotItem(by id: Int) -> MasterSlotItem? {
144 let p = NSPredicate(#keyPath(MasterSlotItem.id), equal: id)
146 guard let masterSlotItems = try? objects(of: MasterSlotItem.entity, predicate: p) else { return nil }
148 return masterSlotItems.first
151 func masterSlotItemEquipType(by id: Int) -> MasterSlotItemEquipType? {
153 let predicate = NSPredicate(#keyPath(MasterSlotItemEquipType.id), equal: id)
155 guard let types = try? objects(of: MasterSlotItemEquipType.entity, predicate: predicate) else { return nil }
160 func masterSTypes() -> [MasterSType] {
162 guard let masterSTypes = try? objects(of: MasterSType.entity) else { return [] }
167 func sortedMasterSTypesById() -> [MasterSType] {
169 let sortDesc = NSSortDescriptor(key: #keyPath(MasterSType.id), ascending: true)
171 guard let masterSTypes = try? objects(of: MasterSType.entity, sortDescriptors: [sortDesc]) else { return [] }
176 func material() -> Material? {
178 guard let materials = try? objects(of: Material.entity) else { return nil }
180 return materials.first
183 func createMaterial() -> Material? {
185 return insertNewObject(for: Material.entity)
188 func nyukyoDock(by id: Int) -> NyukyoDock? {
190 let p = NSPredicate(#keyPath(NyukyoDock.id), equal: id)
192 guard let ndocks = try? objects(of: NyukyoDock.entity, predicate: p) else { return nil }
197 func ships(byDeckId deckId: Int) -> [Ship] {
199 let predicate = NSPredicate(#keyPath(Ship.id), equal: deckId)
201 guard let decks = try? objects(of: Deck.entity, predicate: predicate) else { return [] }
202 guard let deck = decks.first else { return [] }
207 func ship(by shipId: Int) -> Ship? {
209 if shipId < 1 { return nil }
211 let predicate = NSPredicate(#keyPath(Ship.id), equal: shipId)
213 guard let ships = try? objects(of: Ship.entity, predicate: predicate) else { return nil }
218 func ships(by shipId: Int) -> [Ship] {
220 let predicate = NSPredicate(#keyPath(Ship.id), equal: shipId)
222 guard let ships = try? objects(of: Ship.entity, predicate: predicate) else { return [] }
227 func ships(exclude shipIds: [Int]) -> [Ship] {
229 let predicate = NSPredicate.not(NSPredicate(#keyPath(Ship.id), valuesIn: shipIds))
231 guard let ships = try? objects(of: Ship.entity, predicate: predicate) else { return [] }
236 func shipsInFleet() -> [Ship] {
238 let predicate = NSPredicate(#keyPath(Ship.fleet), notEqual: 0)
240 guard let ships = try? objects(of: Ship.entity, predicate: predicate) else { return [] }
245 func createShip() -> Ship? {
247 return insertNewObject(for: Ship.entity)
250 func masterSlotItemID(by slotItemId: Int) -> Int {
252 if slotItemId < 1 { return 0 }
254 let predicate = NSPredicate(#keyPath(SlotItem.id), equal: slotItemId)
256 guard let slotItems = try? objects(of: SlotItem.entity, predicate: predicate) else { return 0 }
257 guard let slotItem = slotItems.first else { return 0 }
259 return slotItem.master_slotItem.id
262 func slotItem(by itemId: Int) -> SlotItem? {
264 let p = NSPredicate(#keyPath(SlotItem.id), equal: itemId)
266 guard let slotItems = try? objects(of: SlotItem.entity, predicate: p) else { return nil }
268 return slotItems.first
271 func sortedSlotItemsById() -> [SlotItem] {
273 let sortDesc = NSSortDescriptor(key: #keyPath(SlotItem.id), ascending: true)
275 guard let slotItems = try? objects(of: SlotItem.entity, sortDescriptors: [sortDesc]) else { return [] }
280 func slotItems() -> [SlotItem] {
282 guard let slotItems = try? objects(of: SlotItem.entity) else { return [] }
287 func slotItems(in itemIds: [Int]) -> [SlotItem] {
289 let predicate = NSPredicate(#keyPath(SlotItem.id), valuesIn: itemIds)
291 guard let slotItems = try? objects(of: SlotItem.entity, predicate: predicate) else { return [] }
296 func slotItems(exclude itemIds: [Int]) -> [SlotItem] {
298 let predicate = NSPredicate.not(NSPredicate(#keyPath(SlotItem.id), valuesIn: itemIds))
300 guard let slotItems = try? objects(of: SlotItem.entity, predicate: predicate) else { return [] }
305 func createSlotItem() -> SlotItem? {
307 return insertNewObject(for: SlotItem.entity)
310 func quests() -> [Quest] {
312 guard let quests = try? objects(of: Quest.entity) else { return [] }
317 func quest(by no: Int) -> Quest? {
319 let p = NSPredicate(#keyPath(Quest.no), equal: no)
321 guard let quests = try? objects(of: Quest.entity, predicate: p) else { return nil }
326 func quests(in range: CountableClosedRange<Int>) -> [Quest] {
328 let p = NSPredicate(#keyPath(Quest.no), valuesIn: range.map {$0})
330 guard let quests = try? objects(of: Quest.entity, predicate: p) else { return [] }
335 func sortedQuestByNo() -> [Quest] {
337 let sortDesc = NSSortDescriptor(key: #keyPath(Quest.no), ascending: true)
339 guard let quests = try? objects(of: Quest.entity, sortDescriptors: [sortDesc]) else { return [] }
344 func createQuest() -> Quest? {
346 return insertNewObject(for: Quest.entity)