From a7831cae9c743c4b7bcb8b568122f9313de2ad48 Mon Sep 17 00:00:00 2001 From: Filip Bucek Date: Tue, 12 Nov 2019 11:37:37 +0100 Subject: [PATCH] updated json handling in databasetable --- src/serversdk/databasetable.cpp | 7 +++++++ src/serversdk/databasetable.h | 1 + test/auto/database/tst_databasetable.cpp | 11 +++++++++++ 3 files changed, 19 insertions(+) diff --git a/src/serversdk/databasetable.cpp b/src/serversdk/databasetable.cpp index 9e17f83..afc1038 100644 --- a/src/serversdk/databasetable.cpp +++ b/src/serversdk/databasetable.cpp @@ -2,6 +2,7 @@ #include "logger.h" +#include #include namespace serversdk { @@ -10,6 +11,12 @@ DatabaseTable::DatabaseTable(QObject *parent) : QObject(parent) { } +QByteArray DatabaseTable::jsonData() const +{ + QJsonDocument doc = QJsonDocument::fromVariant(this->toVariantMap()); + return doc.toJson(QJsonDocument::Compact); +} + /** Creates universal variant structure to hold key / value pairs */ QVariantMap DatabaseTable::toVariantMap() const diff --git a/src/serversdk/databasetable.h b/src/serversdk/databasetable.h index 4bd8681..5c2f739 100644 --- a/src/serversdk/databasetable.h +++ b/src/serversdk/databasetable.h @@ -27,6 +27,7 @@ class DatabaseTable : public QObject TABLE_PROPERTY(QString, name, setName, QString()); public: explicit DatabaseTable(QObject *parent = nullptr); + QByteArray jsonData() const; QVariantMap toVariantMap() const; }; diff --git a/test/auto/database/tst_databasetable.cpp b/test/auto/database/tst_databasetable.cpp index 4fb15ee..d58dabc 100644 --- a/test/auto/database/tst_databasetable.cpp +++ b/test/auto/database/tst_databasetable.cpp @@ -25,6 +25,7 @@ public: private slots: void constructor_test(); void qvariant_test(); + void json_test(); }; @@ -50,6 +51,16 @@ void DatabaseTableTest::qvariant_test() QCOMPARE(map.count(), 3); } +void DatabaseTableTest::json_test() +{ + auto table = std::make_unique(); + QCOMPARE(table->id(), 0); + QCOMPARE(table->name(), QStringLiteral("Test")); + + QByteArray expected(R"({"id":0,"name":"Test","uuid":"{00000000-0000-0000-0000-000000000000}"})"); + QCOMPARE(table->jsonData(), expected); +} + QTEST_APPLESS_MAIN(DatabaseTableTest) #include "tst_databasetable.moc"