Browse Source

cutelyst: Update ASql to v0.18 and a few optmizations (#6078)

Daniel Nicoletti 4 years ago
parent
commit
acbef2ffc0

+ 1 - 1
frameworks/C++/cutelyst/build.sh

@@ -1,6 +1,6 @@
 #!/bin/bash
 #!/bin/bash
 
 
-export ASQL_VER=0.15.0
+export ASQL_VER=0.18.0
 export CUTELEE_VER=5.3.0
 export CUTELEE_VER=5.3.0
 export CUTELYST_VER=2.12.90
 export CUTELYST_VER=2.12.90
 
 

+ 3 - 0
frameworks/C++/cutelyst/src/fortunetest.cpp

@@ -25,6 +25,7 @@ void FortuneTest::fortunes_raw_p(Context *c)
         }
         }
 
 
         FortuneList fortunes;
         FortuneList fortunes;
+        fortunes.reserve(result.size());
         auto it = result.begin();
         auto it = result.begin();
         while (it != result.end()) {
         while (it != result.end()) {
             fortunes.push_back({it[0].toInt(), it[1].toString()});
             fortunes.push_back({it[0].toInt(), it[1].toString()});
@@ -69,6 +70,7 @@ void FortuneTest::fortunes_c_p(Context *c)
         }
         }
 
 
         QVariantList fortunes;
         QVariantList fortunes;
+        fortunes.reserve(result.size());
         auto it = result.begin();
         auto it = result.begin();
         while (it != result.end()) {
         while (it != result.end()) {
             fortunes.append(QVariant::fromValue(QVariantList{
             fortunes.append(QVariant::fromValue(QVariantList{
@@ -143,6 +145,7 @@ FortuneList FortuneTest::processQuery(Context *c, QSqlQuery &query)
         return fortunes;
         return fortunes;
     }
     }
 
 
+    fortunes.reserve(query.size());
     while (query.next()) {
     while (query.next()) {
         fortunes.push_back({query.value(0).toInt(), query.value(1).toString()});
         fortunes.push_back({query.value(0).toInt(), query.value(1).toString()});
     }
     }

+ 11 - 12
frameworks/C++/cutelyst/src/multipledatabasequeriestest.cpp

@@ -34,21 +34,20 @@ void MultipleDatabaseQueriesTest::queriesp(Context *c)
 
 
         db.execPrepared(APreparedQueryLiteral("SELECT id, randomNumber FROM world WHERE id=$1"),
         db.execPrepared(APreparedQueryLiteral("SELECT id, randomNumber FROM world WHERE id=$1"),
                                {id}, [c, async, i, queries, array] (AResult &result) {
                                {id}, [c, async, i, queries, array] (AResult &result) {
-            if (Q_UNLIKELY(result.error() && !result.size())) {
-                c->res()->setStatus(Response::InternalServerError);
+            if (Q_LIKELY(!result.error() && result.size())) {
+                auto it = result.begin();
+                array->append(QJsonObject{
+                                  {QStringLiteral("id"), it[0].toInt()},
+                                  {QStringLiteral("randomNumber"), it[1].toInt()}
+                              });
+
+                if (i + 1 == queries) {
+                    c->response()->setJsonArrayBody(*array);
+                }
                 return;
                 return;
             }
             }
 
 
-
-            auto it = result.begin();
-            array->append(QJsonObject{
-                              {QStringLiteral("id"), it[0].toInt()},
-                              {QStringLiteral("randomNumber"), it[1].toInt()}
-                          });
-
-            if (i + 1 == queries) {
-                c->response()->setJsonArrayBody(*array);
-            }
+            c->res()->setStatus(Response::InternalServerError);
         }, c);
         }, c);
     }
     }
 }
 }

+ 7 - 7
frameworks/C++/cutelyst/src/singledatabasequerytest.cpp

@@ -24,16 +24,16 @@ void SingleDatabaseQueryTest::dbp(Context *c)
     static thread_local auto db = APool::database();
     static thread_local auto db = APool::database();
     db.execPrepared(APreparedQueryLiteral("SELECT id, randomNumber FROM world WHERE id=$1"),
     db.execPrepared(APreparedQueryLiteral("SELECT id, randomNumber FROM world WHERE id=$1"),
                            {id}, [c, async] (AResult &result) {
                            {id}, [c, async] (AResult &result) {
-        if (Q_UNLIKELY(result.error() && !result.size())) {
-            c->res()->setStatus(Response::InternalServerError);
+        if (Q_LIKELY(!result.error() && result.size())) {
+            auto it = result.begin();
+            c->response()->setJsonObjectBody({
+                                                 {QStringLiteral("id"), it[0].toInt()},
+                                                 {QStringLiteral("randomNumber"), it[1].toInt()}
+                                             });
             return;
             return;
         }
         }
 
 
-        auto it = result.begin();
-        c->response()->setJsonObjectBody({
-                                             {QStringLiteral("id"), it[0].toInt()},
-                                             {QStringLiteral("randomNumber"), it[1].toInt()}
-                                         });
+        c->res()->setStatus(Response::InternalServerError);
     }, c);
     }, c);
 }
 }