let apiResponse: APIResponse
let configuration = MappingConfiguration(entity: AirBase.entity,
- dataKey: "api_data.api_air_base",
+ dataKeys: ["api_data", "api_air_base"],
compositPrimaryKeys: ["area_id", "rid"],
editorStore: ServerDataStore.oneTimeEditor())
case port = "/kcsapi/api_port/port"
}
-fileprivate func dataKey(_ apiResponse: APIResponse) -> String {
+fileprivate func dataKeys(_ apiResponse: APIResponse) -> [String] {
guard let basicApi = BasicAPI(rawValue: apiResponse.api)
- else { return "api_data" }
+ else { return ["api_data"] }
switch basicApi {
- case .port: return "api_data.api_basic"
- default: return "api_data"
+ case .port: return ["api_data", "api_basic"]
+ default: return ["api_data"]
}
}
required init(_ apiResponse: APIResponse) {
self.apiResponse = apiResponse
self.configuration = MappingConfiguration(entity: Basic.entity,
- dataKey: dataKey(apiResponse),
+ dataKeys: dataKeys(apiResponse),
editorStore: ServerDataStore.oneTimeEditor())
}
case kaisouPowerUp = "/kcsapi/api_req_kaisou/powerup"
}
-fileprivate func dataKey(_ apiResponse: APIResponse) -> String {
+fileprivate func dataKeys(_ apiResponse: APIResponse) -> [String] {
guard let deckApi = DeckAPI(rawValue: apiResponse.api)
- else { return "api_data" }
+ else { return ["api_data"] }
switch deckApi {
- case .port: return "api_data.api_deck_port"
- case .getMemberShip2: return "api_data_deck"
- case .getMemberShip3: return "api_data.api_deck_data"
- case .getMemberShipDeck: return "api_data.api_deck_data"
- case .kaisouPowerUp: return "api_data.api_deck"
- default: return "api_data"
+ case .port: return ["api_data", "api_deck_port"]
+ case .getMemberShip2: return ["api_data_deck"]
+ case .getMemberShip3: return ["api_data", "api_deck_data"]
+ case .getMemberShipDeck: return ["api_data", "api_deck_data"]
+ case .kaisouPowerUp: return ["api_data", "api_deck"]
+ default: return ["api_data"]
}
}
required init(_ apiResponse: APIResponse) {
self.apiResponse = apiResponse
self.configuration = MappingConfiguration(entity: Deck.entity,
- dataKey: dataKey(apiResponse),
+ dataKeys: dataKeys(apiResponse),
editorStore: ServerDataStore.oneTimeEditor())
}
}
struct MappingConfiguration<T: NSManagedObject> {
let entity: Entity<T>
- let dataKey: String
+ let dataKeys: [String]
let primaryKey: String
let compositPrimaryKeys: [String]?
let editorStore: CoreDataAccessor
let ignoreKeys: [String]
init(entity: Entity<T>,
- dataKey: String = "api_data",
+ dataKeys: [String] = ["api_data"],
primaryKey: String = "id",
compositPrimaryKeys: [String]? = nil,
editorStore: CoreDataAccessor,
ignoreKeys: [String] = []) {
self.entity = entity
- self.dataKey = dataKey
+ self.dataKeys = dataKeys
self.primaryKey = primaryKey
self.compositPrimaryKeys = compositPrimaryKeys
self.editorStore = editorStore
}
extension JSONMapper {
- var data: JSON { return apiResponse.json.value(for: configuration.dataKey) }
+ var data: JSON { return apiResponse.json[configuration.dataKeys] }
private func isEqual(_ lhs: AnyObject?, _ rhs: AnyObject?) -> Bool {
if lhs == nil, rhs == nil { return true }
case getMemberRequireInfo = "/kcsapi/api_get_member/require_info"
}
-fileprivate func dataKey(_ apiResponse: APIResponse) -> String {
+fileprivate func dataKeys(_ apiResponse: APIResponse) -> [String] {
guard let kenzoDockApi = KenzoDockAPI(rawValue: apiResponse.api)
- else { return "api_data" }
+ else { return ["api_data"] }
switch kenzoDockApi {
- case .kousyouGetShip: return "api_data.api_kdock"
- case .getMemberRequireInfo: return "api_data.api_kdock"
- default: return "api_data"
+ case .kousyouGetShip: return ["api_data", "api_kdock"]
+ case .getMemberRequireInfo: return ["api_data", "api_kdock"]
+ default: return ["api_data"]
}
}
required init(_ apiResponse: APIResponse) {
self.apiResponse = apiResponse
self.configuration = MappingConfiguration(entity: KenzoDock.entity,
- dataKey: dataKey(apiResponse),
+ dataKeys: dataKeys(apiResponse),
editorStore: ServerDataStore.oneTimeEditor())
}
}
let apiResponse: APIResponse
let configuration = MappingConfiguration(entity: MasterFurniture.entity,
- dataKey: "api_data.api_mst_furniture",
+ dataKeys: ["api_data", "api_mst_furniture"],
editorStore: ServerDataStore.oneTimeEditor(),
ignoreKeys: ["api_season"])
let apiResponse: APIResponse
let configuration = MappingConfiguration(entity: MasterMapArea.entity,
- dataKey: "api_data.api_mst_maparea",
+ dataKeys: ["api_data", "api_mst_maparea"],
editorStore: ServerDataStore.oneTimeEditor())
required init(_ apiResponse: APIResponse) {
let apiResponse: APIResponse
let configuration = MappingConfiguration(entity: MasterMapInfo.entity,
- dataKey: "api_data.api_mst_mapinfo",
+ dataKeys: ["api_data", "api_mst_mapinfo"],
editorStore: ServerDataStore.oneTimeEditor())
required init(_ apiResponse: APIResponse) {
let apiResponse: APIResponse
let configuration = MappingConfiguration(entity: MasterMission.entity,
- dataKey: "api_data.api_mst_mission",
+ dataKeys: ["api_data", "api_mst_mission"],
editorStore: ServerDataStore.oneTimeEditor())
required init(_ apiResponse: APIResponse) {
let apiResponse: APIResponse
let configuration = MappingConfiguration(entity: MasterSType.entity,
- dataKey: "api_data.api_mst_stype",
+ dataKeys: ["api_data", "api_mst_stype"],
editorStore: ServerDataStore.oneTimeEditor(),
ignoreKeys: ["api_equip_type"])
let apiResponse: APIResponse
let configuration = MappingConfiguration(entity: MasterShip.entity,
- dataKey: "api_data.api_mst_ship",
+ dataKeys: ["api_data", "api_mst_ship"],
editorStore: ServerDataStore.oneTimeEditor())
required init(_ apiResponse: APIResponse) {
let apiResponse: APIResponse
let configuration = MappingConfiguration(entity: MasterSlotItemEquipType.entity,
- dataKey: "api_data.api_mst_slotitem_equiptype",
+ dataKeys: ["api_data", "api_mst_slotitem_equiptype"],
editorStore: ServerDataStore.oneTimeEditor())
required init(_ apiResponse: APIResponse) {
let apiResponse: APIResponse
let configuration = MappingConfiguration(entity: MasterSlotItem.entity,
- dataKey: "api_data.api_mst_slotitem",
+ dataKeys: ["api_data", "api_mst_slotitem"],
editorStore: ServerDataStore.oneTimeEditor(),
ignoreKeys: ["api_version"])
let apiResponse: APIResponse
let configuration = MappingConfiguration(entity: MasterUseItem.entity,
- dataKey: "api_data.api_mst_useitem",
+ dataKeys: ["api_dat", "api_mst_useitem"],
editorStore: ServerDataStore.oneTimeEditor())
required init(_ apiResponse: APIResponse) {
case hokyuCharge = "/kcsapi/api_req_hokyu/charge"
}
-fileprivate func dataKey(_ apiResponse: APIResponse) -> String {
+fileprivate func dataKeys(_ apiResponse: APIResponse) -> [String] {
guard let materialApi = MaterialAPI(rawValue: apiResponse.api)
- else { return "api_data" }
+ else { return ["api_data"] }
switch materialApi {
- case .port: return "api_data.api_material"
- case .kousyouCreateItem: return "api_data.api_material"
- case .kousyouDestoroyShip: return "api_data.api_material"
- case .kousyouRemodelSlot: return "api_data.api_after_material"
- case .hokyuCharge: return "api_data.api_material"
+ case .port: return ["api_data", "api_material"]
+ case .kousyouCreateItem: return ["api_data", "api_material"]
+ case .kousyouDestoroyShip: return ["api_data", "api_material"]
+ case .kousyouRemodelSlot: return ["api_data", "api_after_material"]
+ case .hokyuCharge: return ["api_data", "api_material"]
}
}
required init(_ apiResponse: APIResponse) {
self.apiResponse = apiResponse
self.configuration = MappingConfiguration(entity: Material.entity,
- dataKey: dataKey(apiResponse),
+ dataKeys: dataKeys(apiResponse),
editorStore: ServerDataStore.oneTimeEditor())
}
case port = "/kcsapi/api_port/port"
}
-fileprivate func dataKey(_ apiResponse: APIResponse) -> String {
+fileprivate func dataKeys(_ apiResponse: APIResponse) -> [String] {
guard let deckApi = DeckAPI(rawValue: apiResponse.api)
- else { return "api_data" }
+ else { return ["api_data"] }
switch deckApi {
- case .port: return "api_data.api_ndock"
- default: return "api_data"
+ case .port: return ["api_data", "api_ndock"]
+ default: return ["api_data"]
}
}
required init(_ apiResponse: APIResponse) {
self.apiResponse = apiResponse
self.configuration = MappingConfiguration(entity: NyukyoDock.entity,
- dataKey: dataKey(apiResponse),
+ dataKeys: dataKeys(apiResponse),
editorStore: ServerDataStore.oneTimeEditor())
}
}
case kaisouSlotDeprive = "/kcsapi/api_req_kaisou/slot_deprive"
}
-fileprivate func dataKey(_ apiResponse: APIResponse) -> String {
+fileprivate func dataKeys(_ apiResponse: APIResponse) -> [String] {
guard let shipApi = ShipAPI(rawValue: apiResponse.api)
- else { return "api_data" }
+ else { return ["api_data"] }
switch shipApi {
- case .port: return "api_data.api_ship"
- case .getMemberShip3: return "api_data.api_ship_data"
- case .kousyouGetShip: return "api_data.api_ship"
- case .getMemberShipDeck: return "api_data.api_ship_data"
- case .kaisouPowerUp: return "api_data.api_ship"
- case .kaisouSlotDeprive: return "api_data.api_ship_data.api_set_ship"
- case .getMemberShip: return "api_data"
+ case .port: return ["api_data", "api_ship"]
+ case .getMemberShip3: return ["api_data", "api_ship_data"]
+ case .kousyouGetShip: return ["api_data", "api_ship"]
+ case .getMemberShipDeck: return ["api_data", "api_ship_data"]
+ case .kaisouPowerUp: return ["api_data", "api_ship"]
+ case .kaisouSlotDeprive: return ["api_data", "api_ship_data", "api_set_ship"]
+ case .getMemberShip: return ["api_data"]
}
}
extension MappingConfiguration {
- func change(dataKey: String) -> MappingConfiguration {
+ func change(dataKeys: [String]) -> MappingConfiguration {
return MappingConfiguration(entity: self.entity,
- dataKey: dataKey,
+ dataKeys: dataKeys,
primaryKey: self.primaryKey,
compositPrimaryKeys: self.compositPrimaryKeys,
editorStore: self.editorStore,
required init(_ apiResponse: APIResponse) {
self.apiResponse = apiResponse
self.configuration = MappingConfiguration(entity: Ship.entity,
- dataKey: dataKey(apiResponse),
+ dataKeys: dataKeys(apiResponse),
editorStore: ServerDataStore.oneTimeEditor(),
ignoreKeys:
["api_gomes", "api_gomes2", "api_broken", "api_powup",
// kaisouSlotDepriveでは同時に2種類のデータが入る
if let api = ShipAPI(rawValue: apiResponse.api),
api == .kaisouSlotDeprive {
- let conf = self.configuration.change(dataKey: "api_data.api_ship_data.api_unset_ship")
+ let conf = self.configuration.change(dataKeys: ["api_data", "api_ship_data", "api_unset_ship"])
ShipMapper(apiResponse, configuration: conf).commit()
}
}
case getMemberRequireInfo = "/kcsapi/api_get_member/require_info"
}
-fileprivate func dataKey(_ apiResponse: APIResponse) -> String {
+fileprivate func dataKeys(_ apiResponse: APIResponse) -> [String] {
guard let slotItemApi = SlotItemAPI(rawValue: apiResponse.api)
- else { return "api_data" }
+ else { return ["api_data"] }
switch slotItemApi {
- case .kousyouGetShip: return "api_data.api_slotitem"
- case .getMemberRequireInfo: return "api_data.api_slot_item"
- default: return "api_data"
+ case .kousyouGetShip: return ["api_data", "api_slotitem"]
+ case .getMemberRequireInfo: return ["api_data", "api_slot_item"]
+ default: return ["api_data"]
}
}
required init(_ apiResponse: APIResponse) {
self.apiResponse = apiResponse
self.configuration = MappingConfiguration(entity: SlotItem.entity,
- dataKey: dataKey(apiResponse),
+ dataKeys: dataKeys(apiResponse),
editorStore: ServerDataStore.oneTimeEditor())
}