2 // ServerDataStoreAccessor.swift
5 // Created by Hori,Masaki on 2017/10/25.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
11 extension ServerDataStore {
13 func airBases() -> [AirBase] {
15 guard let airbase = try? objects(of: AirBase.entity) else {
23 func airBase(area: Int, base: Int) -> AirBase? {
25 let predicate = Predicate(\AirBase.area_id, equalTo: area)
26 .and(Predicate(\AirBase.rid, equalTo: base))
28 guard let airBases = try? objects(of: AirBase.entity, predicate: predicate) else {
36 func createAirBasePlaneInfo() -> AirBasePlaneInfo? {
38 return insertNewObject(for: AirBasePlaneInfo.entity)
41 func basic() -> Basic? {
43 guard let basics = try? objects(of: Basic.entity) else {
51 func createBasic() -> Basic? {
53 return insertNewObject(for: Basic.entity)
56 func decksSortedById() -> [Deck] {
58 let sortDecs = SortDescriptors(keyPath: \Deck.id, ascending: true)
60 guard let decks = try? objects(of: Deck.entity, sortDescriptors: sortDecs) else {
68 func deck(by id: Int) -> Deck? {
70 let predicate = Predicate(\Deck.id, equalTo: id)
72 guard let decks = try? objects(of: Deck.entity, predicate: predicate) else {
80 func kenzoDock(by dockId: Int) -> KenzoDock? {
82 let predicate = Predicate(\KenzoDock.id, equalTo: dockId)
84 guard let kenzoDocks = try? objects(of: KenzoDock.entity, predicate: predicate) else {
89 return kenzoDocks.first
92 func mapArea(by id: Int) -> MasterMapArea? {
94 let predicate = Predicate(\MasterMapArea.id, equalTo: id)
96 guard let mapAreas = try? objects(of: MasterMapArea.entity, predicate: predicate) else {
101 return mapAreas.first
104 func mapInfo(area: Int, no: Int) -> MasterMapInfo? {
106 let predicate = Predicate(\MasterMapInfo.maparea_id, equalTo: area)
107 .and(Predicate(\MasterMapInfo.no, equalTo: no))
109 guard let mapInfos = try? objects(of: MasterMapInfo.entity, predicate: predicate) else {
114 return mapInfos.first
117 func masterMission(by id: Int) -> MasterMission? {
119 let predicate = Predicate(\MasterMission.id, equalTo: id)
121 guard let missions = try? objects(of: MasterMission.entity, predicate: predicate) else {
126 return missions.first
129 func masterShips() -> [MasterShip] {
131 guard let ships = try? objects(of: MasterShip.entity) else {
139 func sortedMasterShipsById() -> [MasterShip] {
141 let sortDescs = SortDescriptors(keyPath: \MasterShip.id, ascending: true)
143 guard let ships = try? objects(of: MasterShip.entity, sortDescriptors: sortDescs) else {
151 func masterShip(by id: Int) -> MasterShip? {
153 let predicate = Predicate(\MasterShip.id, equalTo: id)
155 guard let ships = try? objects(of: MasterShip.entity, predicate: predicate) else {
163 func sortedMasterSlotItemsById() -> [MasterSlotItem] {
165 let sortDescs = SortDescriptors(keyPath: \MasterSlotItem.id, ascending: true)
167 guard let masterSlotItems = try? objects(of: MasterSlotItem.entity, sortDescriptors: sortDescs) else {
172 return masterSlotItems
175 func masterSlotItems() -> [MasterSlotItem] {
177 guard let masterSlotItems = try? objects(of: MasterSlotItem.entity) else {
182 return masterSlotItems
185 func masterSlotItem(by id: Int) -> MasterSlotItem? {
187 let predicate = Predicate(\MasterSlotItem.id, equalTo: id)
189 guard let masterSlotItems = try? objects(of: MasterSlotItem.entity, predicate: predicate) else {
194 return masterSlotItems.first
197 func masterSlotItemEquipType(by id: Int) -> MasterSlotItemEquipType? {
199 let predicate = Predicate(\MasterSlotItemEquipType.id, equalTo: id)
201 guard let types = try? objects(of: MasterSlotItemEquipType.entity, predicate: predicate) else {
209 func masterSTypes() -> [MasterSType] {
211 guard let masterSTypes = try? objects(of: MasterSType.entity) else {
219 func sortedMasterSTypesById() -> [MasterSType] {
221 let sortDescs = SortDescriptors(keyPath: \MasterSType.id, ascending: true)
223 guard let masterSTypes = try? objects(of: MasterSType.entity, sortDescriptors: sortDescs) else {
231 func material() -> Material? {
233 guard let materials = try? objects(of: Material.entity) else {
238 return materials.first
241 func createMaterial() -> Material? {
243 return insertNewObject(for: Material.entity)
246 func nyukyoDock(by id: Int) -> NyukyoDock? {
248 let predicate = Predicate(\NyukyoDock.id, equalTo: id)
250 guard let ndocks = try? objects(of: NyukyoDock.entity, predicate: predicate) else {
258 func ships(byDeckId deckId: Int) -> [Ship] {
260 let predicate = Predicate(\Deck.id, equalTo: deckId)
262 guard let decks = try? objects(of: Deck.entity, predicate: predicate) else {
267 guard let deck = decks.first else {
272 return deck[0..<Deck.maxShipCount]
275 func ship(by shipId: Int) -> Ship? {
282 let predicate = Predicate(\Ship.id, equalTo: shipId)
284 guard let ships = try? objects(of: Ship.entity, predicate: predicate) else {
292 func ships(by shipId: Int) -> [Ship] {
294 let predicate = Predicate(\Ship.id, equalTo: shipId)
296 guard let ships = try? objects(of: Ship.entity, predicate: predicate) else {
304 func ships(exclude shipIds: [Int]) -> [Ship] {
306 let predicate = Predicate(\Ship.id, in: shipIds).negate()
308 guard let ships = try? objects(of: Ship.entity, predicate: predicate) else {
316 func shipsInFleet() -> [Ship] {
318 let predicate = Predicate(\Ship.fleet, notEqualTo: 0)
320 guard let ships = try? objects(of: Ship.entity, predicate: predicate) else {
328 func createShip() -> Ship? {
330 return insertNewObject(for: Ship.entity)
333 func masterSlotItemID(by slotItemId: Int) -> Int {
340 let predicate = Predicate(\SlotItem.id, equalTo: slotItemId)
342 guard let slotItems = try? objects(of: SlotItem.entity, predicate: predicate) else {
346 guard let slotItem = slotItems.first else {
351 return slotItem.master_slotItem.id
354 func slotItem(by itemId: Int) -> SlotItem? {
356 let predicate = Predicate(\SlotItem.id, equalTo: itemId)
358 guard let slotItems = try? objects(of: SlotItem.entity, predicate: predicate) else {
363 return slotItems.first
366 func sortedSlotItemsById() -> [SlotItem] {
368 let sortDescs = SortDescriptors(keyPath: \SlotItem.id, ascending: true)
370 guard let slotItems = try? objects(of: SlotItem.entity, sortDescriptors: sortDescs) else {
378 func slotItems() -> [SlotItem] {
380 guard let slotItems = try? objects(of: SlotItem.entity) else {
388 func slotItems(in itemIds: [Int]) -> [SlotItem] {
390 let predicate = Predicate(\SlotItem.id, in: itemIds)
392 guard let slotItems = try? objects(of: SlotItem.entity, predicate: predicate) else {
400 func slotItems(exclude itemIds: [Int]) -> [SlotItem] {
402 let predicate = Predicate(\SlotItem.id, in: itemIds).negate()
404 guard let slotItems = try? objects(of: SlotItem.entity, predicate: predicate) else {
412 func createSlotItem() -> SlotItem? {
414 return insertNewObject(for: SlotItem.entity)
417 func quests() -> [Quest] {
419 guard let quests = try? objects(of: Quest.entity) else {
427 func quest(by no: Int) -> Quest? {
429 let predicate = Predicate(\Quest.no, equalTo: no)
431 guard let quests = try? objects(of: Quest.entity, predicate: predicate) else {
439 func quests(in range: CountableClosedRange<Int>) -> [Quest] {
441 let predicate = Predicate(\Quest.no, in: range.map { $0 })
443 guard let quests = try? objects(of: Quest.entity, predicate: predicate) else {
451 func sortedQuestByNo() -> [Quest] {
453 let sortDescs = SortDescriptors(keyPath: \Quest.no, ascending: true)
455 guard let quests = try? objects(of: Quest.entity, sortDescriptors: sortDescs) else {
463 func createQuest() -> Quest? {
465 return insertNewObject(for: Quest.entity)