Browse Source

Fixswift (#4422)

* added Python vibora -- certain issues with the framework only allow for 3 tests currently

* changed updateworld to fetch a random world before updating it

* fixed update routes for all perfect permutations with updates
jenriquez-techempower 6 năm trước cách đây
mục cha
commit
f5830bf5dd

+ 13 - 7
frameworks/Swift/perfect/Sources/Perfect-MongoDB/main.swift

@@ -14,7 +14,6 @@ let db = client.getDatabase(name: database)
 let World = db.getCollection(name: "world")
 let World = db.getCollection(name: "world")
 let Fortune = db.getCollection(name: "fortune")
 let Fortune = db.getCollection(name: "fortune")
 
 
-
 class LinearCongruntialGenerator {
 class LinearCongruntialGenerator {
  
  
     var state = 0 //seed of 0 by default
     var state = 0 //seed of 0 by default
@@ -92,14 +91,21 @@ func fetchFromWorld(id: String?) -> [String: Any] {
 
 
 func updateOneFromWorld() -> [String: Any] {
 func updateOneFromWorld() -> [String: Any] {
 
 
-    let rand = numGenerator.random() % 10000
-    let rand2 = numGenerator.random() % 10000
+    let worldToUpdate = fetchFromWorld(id: nil)
+    var id = Int()
+    if worldToUpdate["id"] != nil {
+        id = worldToUpdate["id"] as! Int
+    } else {
+        id = 1
+        print("Error trying to fetch a world to update")
+    }
+    let newRandom = numGenerator.random() % 10000
     var errorObj = [String: Any]()
     var errorObj = [String: Any]()
 
 
     if let world = World {
     if let world = World {
 
 
-        var json = [String:Any]()
-        json["id"] = rand
+        var json = [String: Any]()
+        json["id"] = id
 
 
         var fields = [String: Any]()
         var fields = [String: Any]()
         fields["id"] = 1
         fields["id"] = 1
@@ -107,7 +113,7 @@ func updateOneFromWorld() -> [String: Any] {
         fields["_id"] = 0
         fields["_id"] = 0
 
 
         var update = [String: Any]()
         var update = [String: Any]()
-        update["randomNumber"] = rand2
+        update["randomNumber"] = newRandom
 
 
         var fieldString: String = ""
         var fieldString: String = ""
 
 
@@ -135,7 +141,7 @@ func updateOneFromWorld() -> [String: Any] {
         do {
         do {
             let results = try world.findAndModify(query: BSON( json: jsonString ), sort: nil, update: BSON( json: updateString ), fields: BSON( json: fieldString ), remove: false, upsert: false, new: true)
             let results = try world.findAndModify(query: BSON( json: jsonString ), sort: nil, update: BSON( json: updateString ), fields: BSON( json: fieldString ), remove: false, upsert: false, new: true)
             let resultsStr = String(describing: results)
             let resultsStr = String(describing: results)
-            return convertUpdateStringToDictionary(str: resultsStr, id: rand)
+            return convertUpdateStringToDictionary(str: resultsStr, id: id)
         } catch {
         } catch {
             errorObj["id"] = "Error running query findAndModify"
             errorObj["id"] = "Error running query findAndModify"
             return errorObj
             return errorObj

+ 6 - 15
frameworks/Swift/perfect/Sources/Perfect-MySQL/main.swift

@@ -36,7 +36,6 @@ let numGenerator = LinearCongruntialGenerator()
 func fetchFromFortune() -> [[String: String]] {
 func fetchFromFortune() -> [[String: String]] {
 
 
     var arrOfFortunes = [[String: String]]()
     var arrOfFortunes = [[String: String]]()
-    
     let querySuccess = mysql.query(statement: "SELECT id, message FROM fortune")
     let querySuccess = mysql.query(statement: "SELECT id, message FROM fortune")
 
 
     guard querySuccess else {
     guard querySuccess else {
@@ -50,7 +49,6 @@ func fetchFromFortune() -> [[String: String]] {
     let results = mysql.storeResults()!
     let results = mysql.storeResults()!
 
 
     results.forEachRow { row in
     results.forEachRow { row in
-
         if let id = row[0], let message = row[1] {
         if let id = row[0], let message = row[1] {
             
             
             let resObj = ["id": String(describing: id), "message": message]
             let resObj = ["id": String(describing: id), "message": message]
@@ -106,39 +104,32 @@ func updateOneFromWorld() -> [String: Any] {
 
 
     var returnObj = [String: Any]()
     var returnObj = [String: Any]()
     var errorObject = [String: Any]()
     var errorObject = [String: Any]()
+    let worldToUpdate = fetchFromWorld(id: nil)
+    let id: String = worldToUpdate["id"] as! String 
+    let newRandom = numGenerator.random() % 10000
 
 
-    let rand = numGenerator.random() % 10000
-    let rand2 = numGenerator.random() % 10000
-
-    let querySuccess = mysql.query(statement: "UPDATE World SET randomNumber = \(rand) WHERE id = \(rand2)")
+    let querySuccess = mysql.query(statement: "UPDATE World SET randomNumber = \(newRandom) WHERE id = \(id)")
 
 
     guard querySuccess else {
     guard querySuccess else {
-
         errorObject["id"] = "Failed to execute query"
         errorObject["id"] = "Failed to execute query"
-
         return errorObject
         return errorObject
     }
     }
  
  
     if let results = mysql.storeResults() {
     if let results = mysql.storeResults() {
 
 
         results.forEachRow { row in
         results.forEachRow { row in
-
             if let id = row[0], let randomNumber = row[1] {
             if let id = row[0], let randomNumber = row[1] {
-
                 returnObj["id"] = id
                 returnObj["id"] = id
                 returnObj["randomNumber"] = randomNumber
                 returnObj["randomNumber"] = randomNumber
             } else {
             } else {
-
                 returnObj["id"] = "No return value"
                 returnObj["id"] = "No return value"
                 returnObj["randomNumber"] = "what happened?"
                 returnObj["randomNumber"] = "what happened?"
             }
             }
         }
         }
-
         return returnObj
         return returnObj
     } else {
     } else {
-
-        returnObj["id"] = rand2
-        returnObj["randomNumber"] = rand
+        returnObj["id"] = id
+        returnObj["randomNumber"] = newRandom
         return returnObj
         return returnObj
     }
     }
 }
 }

+ 4 - 6
frameworks/Swift/perfect/Sources/Perfect-PostgreSQL/main.swift

@@ -54,15 +54,13 @@ func fetchFromWorld(id: String?) -> [String:Any] {
 func updateOneFromWorld() -> [String: Any] {
 func updateOneFromWorld() -> [String: Any] {
 
 
     var returnObj = [String: Any]()
     var returnObj = [String: Any]()
+    let worldToUpdate = fetchFromWorld(id: nil)
     let rand = numGenerator.random() % 10000 + 1
     let rand = numGenerator.random() % 10000 + 1
-    let rand2 = numGenerator.random() % 10000 + 1
+    let id: String = worldToUpdate["id"] as! String
 
 
-    let _ = p.exec(statement: "UPDATE world SET randomNumber = \(rand) WHERE id = \(rand2)")
+    let _ = p.exec(statement: "UPDATE world SET randomNumber = \(rand) WHERE id = \(id)")
 
 
-    // let checkIfCorrect = fetchFromWorld(id: String(describing: rand2))
-
-    //The exec statement for update doesn't return the updated values. I used to checkIfCorrect variable to confirm that the updates were taking place.
-    returnObj["id"] = rand2
+    returnObj["id"] = id
     returnObj["randomNumber"] = rand
     returnObj["randomNumber"] = rand
 
 
     return returnObj
     return returnObj