Sfoglia il codice sorgente

cutelyst: Change update test to do batched updates (#2680)

Daniel Nicoletti 8 anni fa
parent
commit
34769b8033
1 ha cambiato i file con 13 aggiunte e 7 eliminazioni
  1. 13 7
      frameworks/C++/cutelyst/src/databaseupdatestest.cpp

+ 13 - 7
frameworks/C++/cutelyst/src/databaseupdatestest.cpp

@@ -47,6 +47,9 @@ void DatabaseUpdatesTest::processQuery(Context *c, QSqlQuery &query, QSqlQuery &
         queries = 500;
     }
 
+    QVariantList ids, randomNumbers;
+    ids.reserve(queries);
+    randomNumbers.reserve(queries);
     for (int i = 0; i < queries; ++i) {
         int id = (qrand() % 10000) + 1;
 
@@ -57,18 +60,21 @@ void DatabaseUpdatesTest::processQuery(Context *c, QSqlQuery &query, QSqlQuery &
         }
 
         int randomNumber = (qrand() % 10000) + 1;
-        updateQuery.bindValue(QStringLiteral(":id"), id);
-        updateQuery.bindValue(QStringLiteral(":randomNumber"), randomNumber);
-        if (!updateQuery.exec()) {
-            c->res()->setStatus(Response::InternalServerError);
-            return;
-        }
+        ids.append(id);
+        randomNumbers.append(randomNumber);
 
         QJsonObject obj;
-        obj.insert(QStringLiteral("id"), query.value(0).toInt());
+        obj.insert(QStringLiteral("id"), id);
         obj.insert(QStringLiteral("randomNumber"), randomNumber);
         array.append(obj);
     }
 
+    updateQuery.bindValue(QStringLiteral(":id"), ids);
+    updateQuery.bindValue(QStringLiteral(":randomNumber"), randomNumbers);
+    if (!updateQuery.execBatch()) {
+        c->res()->setStatus(Response::InternalServerError);
+        return;
+    }
+
     c->response()->setJsonBody(QJsonDocument(array));
 }