mirror of
https://gitlab.com/spaceti-app/integrations/common/server-sdk.git
synced 2026-07-12 20:20:37 +02:00
Possible to INSERT and SELECT from database
This commit is contained in:
parent
174ede92ee
commit
eb2a6c92fa
@ -64,6 +64,17 @@ bool DatabaseTable::fromVariantMap(const QVariantMap &variantMap)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QList<std::shared_ptr<DatabaseTable> > DatabaseTable::fromListVariantMap(const QList<QVariantMap> &listMap)
|
||||||
|
{
|
||||||
|
QList<std::shared_ptr<DatabaseTable>> list;
|
||||||
|
for (const QVariantMap &map : listMap) {
|
||||||
|
auto data = std::make_shared<DatabaseTable>();
|
||||||
|
data->fromVariantMap(map);
|
||||||
|
list << data;
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
bool DatabaseTable::fromJson(const QByteArray &data)
|
bool DatabaseTable::fromJson(const QByteArray &data)
|
||||||
{
|
{
|
||||||
QJsonDocument doc = QJsonDocument::fromJson(data);
|
QJsonDocument doc = QJsonDocument::fromJson(data);
|
||||||
|
|||||||
@ -31,6 +31,8 @@ public:
|
|||||||
bool fromJson(const QByteArray &data);
|
bool fromJson(const QByteArray &data);
|
||||||
QVariantMap toVariantMap() const;
|
QVariantMap toVariantMap() const;
|
||||||
bool fromVariantMap(const QVariantMap &variantMap);
|
bool fromVariantMap(const QVariantMap &variantMap);
|
||||||
|
|
||||||
|
static QList<std::shared_ptr<DatabaseTable>> fromListVariantMap(const QList<QVariantMap> &listMap);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace serversdk
|
} // namespace serversdk
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
#include "databaseutils.h"
|
#include "databaseutils.h"
|
||||||
#include "databasemanager.h"
|
#include "databasemanager.h"
|
||||||
|
#include "databasetable.h"
|
||||||
#include "logger.h"
|
#include "logger.h"
|
||||||
|
|
||||||
#include <QMetaProperty>
|
#include <QMetaProperty>
|
||||||
|
#include <QSqlRecord>
|
||||||
|
|
||||||
|
|
||||||
namespace serversdk {
|
namespace serversdk {
|
||||||
@ -140,9 +142,20 @@ QSqlQuery DatabaseUtils::insertIntoTable(const DatabaseTable *table, const QStri
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DatabaseUtils::udpateFromSqlQuery(DatabaseTable *table, QSqlQuery query) const
|
|
||||||
|
QList<QMap<QString, QVariant>> DatabaseUtils::listMapFromQuery(QSqlQuery query) const
|
||||||
{
|
{
|
||||||
qCDebug(sdkdb) << "not implemented";
|
QList<QMap<QString, QVariant>> list;
|
||||||
|
while (query.next()) {
|
||||||
|
auto rec = query.record();
|
||||||
|
int total = rec.count();
|
||||||
|
QMap<QString, QVariant> map;
|
||||||
|
for (int column = 0; column < total; ++column) {
|
||||||
|
map.insert(rec.fieldName(column), query.value(column));
|
||||||
|
}
|
||||||
|
list << map;
|
||||||
|
}
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString DatabaseUtils::sqlType() const
|
QString DatabaseUtils::sqlType() const
|
||||||
@ -180,4 +193,6 @@ QString DatabaseUtils::textSQLIteType(QVariant::Type type) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} // namespace serversdk
|
} // namespace serversdk
|
||||||
|
|||||||
@ -22,7 +22,8 @@ public:
|
|||||||
QSqlQuery createTable(const DatabaseTable *table, const QString table_name) const;
|
QSqlQuery createTable(const DatabaseTable *table, const QString table_name) const;
|
||||||
|
|
||||||
QSqlQuery insertIntoTable(const DatabaseTable *table, const QString table_name) const;
|
QSqlQuery insertIntoTable(const DatabaseTable *table, const QString table_name) const;
|
||||||
void udpateFromSqlQuery(DatabaseTable *table, QSqlQuery query) const;
|
template<typename T> QList<std::shared_ptr<T>> dataFromSqlQuery(QSqlQuery query);
|
||||||
|
QList<QMap<QString, QVariant>> listMapFromQuery(QSqlQuery query) const;
|
||||||
|
|
||||||
|
|
||||||
QString sqlType() const;
|
QString sqlType() const;
|
||||||
|
|||||||
@ -74,34 +74,28 @@ void SqliteTest::createTable_test()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Not correct way
|
Names names;
|
||||||
auto names = std::make_unique<Names>();
|
|
||||||
|
|
||||||
|
// CREATE TABLE
|
||||||
// Creating table
|
|
||||||
serversdk::DatabaseUtils utils(&db);
|
serversdk::DatabaseUtils utils(&db);
|
||||||
QSqlQuery query = utils.createTable(names.get(), "names");
|
QSqlQuery query = utils.createTable(&names, "names");
|
||||||
// Q_ASSERT(query.isValid());
|
|
||||||
|
|
||||||
// Inserting into table
|
// INSERT INTO TABLE
|
||||||
names->set_id(2);
|
names.set_id(2);
|
||||||
names->set_name("Testname");
|
names.set_name("Testname");
|
||||||
|
|
||||||
utils.insertIntoTable(names.get(), "names");
|
utils.insertIntoTable(&names, "names");
|
||||||
QSqlQuery insertQuery = utils.insertIntoTable(names.get(), "names");
|
|
||||||
//Q_ASSERT(insertQuery.isValid());
|
|
||||||
|
|
||||||
// Select from table
|
// SELECT FROM TABLE
|
||||||
QSqlQuery selectSQL("SELECT * FROM names");
|
QSqlQuery selectSQL = db.execPlainSql("SELECT * FROM names");
|
||||||
|
auto listVariantMap = utils.listMapFromQuery(selectSQL);
|
||||||
|
auto list = Names::fromListVariantMap(listVariantMap);
|
||||||
|
|
||||||
// TODO: finish -> have to use sqlPlain
|
// ENSURE SAME
|
||||||
// Q_ASSERT(db.executeQselectSQL));
|
QCOMPARE(list.count(), 1);
|
||||||
while (selectSQL.next()) {
|
QCOMPARE(list.first()->name(), QStringLiteral("Testname"));
|
||||||
QString value = selectSQL.value(1).toString();
|
|
||||||
qDebug() << "value is" << value;
|
|
||||||
}
|
|
||||||
|
|
||||||
//db.create
|
QCOMPARE(list.first()->jsonData(), names.jsonData());
|
||||||
}
|
}
|
||||||
|
|
||||||
QTEST_APPLESS_MAIN(SqliteTest)
|
QTEST_APPLESS_MAIN(SqliteTest)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user