OSDN Git Service

Timerをクロージャ方式にした
[kcd/KCD.git] / KCD / UpdateSlotItemCommand.swift
index f6f6f67..c269fbf 100644 (file)
@@ -8,19 +8,44 @@
 
 import Cocoa
 
-class UpdateSlotItemCommand: JSONCommand {
+final class UpdateSlotItemCommand: JSONCommand {
+    
     override func execute() {
+        
         let data = json["api_data"]["api_slot_item"]
-        guard let slotItemId = data["api_slotitem_id"].int
-            else { return }
-        guard let newSlotItemId = data["api_id"].int
-            else { return print("api_id is wrong") }
+        
+        guard let slotItemId = data["api_slotitem_id"].int else {
+            
+            return
+        }
+        
+        guard let newSlotItemId = data["api_id"].int else {
+            
+            Logger.shared.log("api_id is wrong")
+            
+            return
+        }
+        
         let store = ServerDataStore.oneTimeEditor()
-        guard let masterSlotItem = store.masterSlotItem(by: slotItemId)
-            else { return print("MasterSlotItem is not found") }
-        guard let new = store.createSlotItem()
-            else { return print("Can not create new SlotItem") }
-        new.id = newSlotItemId
-        new.master_slotItem = masterSlotItem
+        
+        guard let masterSlotItem = store.sync(execute: { store.masterSlotItem(by: slotItemId) }) else {
+            
+            Logger.shared.log("MasterSlotItem is not found")
+            
+            return
+        }
+        
+        guard let new = store.sync(execute: { store.createSlotItem() }) else {
+            
+            Logger.shared.log("Can not create new SlotItem")
+            
+            return
+        }
+        
+        store.sync {
+            
+            new.id = newSlotItemId
+            new.master_slotItem = masterSlotItem
+        }
     }
 }