From ad68c850867e04448d2255802b657831854e9f9b Mon Sep 17 00:00:00 2001 From: Filip Bucek Date: Thu, 14 Nov 2019 14:37:47 +0100 Subject: [PATCH] fixing previous build: now using DatabaseUtils to get data from table QSqlQuery selectSQL = db.execPlainSql("SELECT * FROM names"); auto list = utils.tableFromQuery(selectSQL); --- src/serversdk/databasetable.cpp | 2 +- src/serversdk/databasetable.h | 4 ++-- src/serversdk/databaseutils.cpp | 15 --------------- src/serversdk/databaseutils.h | 21 ++++++++++++++++++++- test/auto/database/tst_postgresql.cpp | 3 +-- test/auto/database/tst_sqlite.cpp | 9 +++++---- 6 files changed, 29 insertions(+), 25 deletions(-) diff --git a/src/serversdk/databasetable.cpp b/src/serversdk/databasetable.cpp index 294ec51..3e3b2f1 100644 --- a/src/serversdk/databasetable.cpp +++ b/src/serversdk/databasetable.cpp @@ -64,6 +64,7 @@ bool DatabaseTable::fromVariantMap(const QVariantMap &variantMap) return true; } + QList > DatabaseTable::fromListVariantMap(const QList &listMap) { QList> list; @@ -134,5 +135,4 @@ QString DatabaseTable::textPostgresType(QVariant::Type type) const } } - } // namespace serversdk diff --git a/src/serversdk/databasetable.h b/src/serversdk/databasetable.h index ad65292..bd6dea4 100644 --- a/src/serversdk/databasetable.h +++ b/src/serversdk/databasetable.h @@ -59,8 +59,7 @@ namespace serversdk { // SELECT FROM TABLE QSqlQuery selectSQL = db.execPlainSql("SELECT * FROM names"); - auto listVariantMap = utils.listMapFromQuery(selectSQL); - auto list = Names::fromListVariantMap(listVariantMap); + auto list = utils.tableFromQuery(selectSQL); } * * @endcode @@ -156,5 +155,6 @@ public: }; + } // namespace serversdk diff --git a/src/serversdk/databaseutils.cpp b/src/serversdk/databaseutils.cpp index 5de8838..d1dcc8e 100644 --- a/src/serversdk/databaseutils.cpp +++ b/src/serversdk/databaseutils.cpp @@ -4,7 +4,6 @@ #include "logger.h" #include -#include namespace serversdk { @@ -142,20 +141,6 @@ QSqlQuery DatabaseUtils::insertIntoTable(const DatabaseTable *table, const QStri } -QList> DatabaseUtils::listMapFromQuery(QSqlQuery query) const -{ - QList> list; - while (query.next()) { - auto rec = query.record(); - int total = rec.count(); - QMap map; - for (int column = 0; column < total; ++column) { - map.insert(rec.fieldName(column), query.value(column)); - } - list << map; - } - return list; -} QString DatabaseUtils::sqlType() const { diff --git a/src/serversdk/databaseutils.h b/src/serversdk/databaseutils.h index 58572f5..cd05dd1 100644 --- a/src/serversdk/databaseutils.h +++ b/src/serversdk/databaseutils.h @@ -4,6 +4,7 @@ #include #include +#include class DatabaseUtilsTest; @@ -22,7 +23,25 @@ public: QSqlQuery createTable(const DatabaseTable *table, const QString table_name) const; QSqlQuery insertIntoTable(const DatabaseTable *table, const QString table_name) const; - QList> listMapFromQuery(QSqlQuery query) const; + + template + QList> tableFromQuery(QSqlQuery query) const { + QList> list; + while (query.next()) { + auto rec = query.record(); + int total = rec.count(); + QMap map; + for (int column = 0; column < total; ++column) { + map.insert(rec.fieldName(column), query.value(column)); + } + + auto data = std::make_shared(); + data->fromVariantMap(map); + list << data; + } + return list; + } + QString sqlType() const; void setSqlType(const QString &sqlType); diff --git a/test/auto/database/tst_postgresql.cpp b/test/auto/database/tst_postgresql.cpp index 345a0c3..11efa56 100644 --- a/test/auto/database/tst_postgresql.cpp +++ b/test/auto/database/tst_postgresql.cpp @@ -87,8 +87,7 @@ void PostgresqlTest::createTable_test() // SELECT FROM TABLE QSqlQuery selectSQL = db.execPlainSql("SELECT * FROM names"); - auto listVariantMap = utils.listMapFromQuery(selectSQL); - auto list = Names::fromListVariantMap(listVariantMap); + auto list = utils.tableFromQuery(selectSQL); // ENSURE SAME auto first = list.first(); diff --git a/test/auto/database/tst_sqlite.cpp b/test/auto/database/tst_sqlite.cpp index 481e1f0..bfc9c4e 100644 --- a/test/auto/database/tst_sqlite.cpp +++ b/test/auto/database/tst_sqlite.cpp @@ -86,13 +86,14 @@ void SqliteTest::createTable_test() // SELECT FROM TABLE QSqlQuery selectSQL = db.execPlainSql("SELECT * FROM names"); - auto listVariantMap = utils.listMapFromQuery(selectSQL); - auto list = Names::fromListVariantMap(listVariantMap); + auto list = utils.tableFromQuery(selectSQL); // ENSURE SAME - auto first = list.first(); - auto names_tab = std::dynamic_pointer_cast(first); QCOMPARE(list.count(), 1); + auto first = list.first(); + QVERIFY(first); + auto names_tab = std::dynamic_pointer_cast(first); + QVERIFY(names_tab); QCOMPARE(names_tab->name(), QStringLiteral("Testname")); QCOMPARE(list.first()->jsonData(), names.jsonData());