From c4c51e5099db9b978ae726f82fa77ca7eebb1609 Mon Sep 17 00:00:00 2001 From: Filip Bucek Date: Tue, 12 Nov 2019 16:59:41 +0100 Subject: [PATCH] updated comments to DatabaseTable --- src/serversdk/databasetable.cpp | 5 +- src/serversdk/databasetable.h | 84 ++++++++++++++++++++++++++++++++- 2 files changed, 87 insertions(+), 2 deletions(-) diff --git a/src/serversdk/databasetable.cpp b/src/serversdk/databasetable.cpp index 1e5f9a1..6eaff3b 100644 --- a/src/serversdk/databasetable.cpp +++ b/src/serversdk/databasetable.cpp @@ -77,10 +77,13 @@ QList > DatabaseTable::fromListVariantMap(const Q bool DatabaseTable::fromJson(const QByteArray &data) { + // in: JSON ( e.g. {"id": 300} ) QJsonDocument doc = QJsonDocument::fromJson(data); QVariantMap variant = qvariant_cast(doc.toVariant()); - return fromVariantMap(variant); + // Populate this object data + bool res = fromVariantMap(variant); + return res; } diff --git a/src/serversdk/databasetable.h b/src/serversdk/databasetable.h index 73a322b..6095ec9 100644 --- a/src/serversdk/databasetable.h +++ b/src/serversdk/databasetable.h @@ -6,7 +6,6 @@ #include -// Default TABLE_PROPERTY #define TABLE_PROPERTY(TYPE, NAME, SETNAME, INITVAL) \ Q_PROPERTY(TYPE NAME READ NAME WRITE SETNAME NOTIFY NAME ## Changed USER true) \ public: \ @@ -22,6 +21,60 @@ namespace serversdk { +// Default TABLE_PROPERTY +/** # DatabaseTable + * + * Class for automatic CREATE/INSERT/SELECT and JSON handling + * + * ## Usage + * + * 1. define custom class by subclassint serversdk::DatabaseTable + * + * @code + class Names : public serversdk::DatabaseTable { + Q_OBJECT + TABLE_PROPERTY(int, id, set_id, 0); + TABLE_PROPERTY(QString, name, set_name, 0); + }; + + int main() { + // Prepare temporary path for database + QTemporaryDir dir; + QString dbpath = dir.path() + "/testdb.sqlite"; + serversdk::DatabaseManager db; + db.openSQLite(dbpath); + + + Names names; + + // CREATE TABLE + serversdk::DatabaseUtils utils(&db); + QSqlQuery query = utils.createTable(&names, "names"); + + // INSERT INTO TABLE + names.set_id(2); + names.set_name("Testname"); + + utils.insertIntoTable(&names, "names"); + + // SELECT FROM TABLE + QSqlQuery selectSQL = db.execPlainSql("SELECT * FROM names"); + auto listVariantMap = utils.listMapFromQuery(selectSQL); + auto list = Names::fromListVariantMap(listVariantMap); + } + * + * @endcode + * + * + * @code + * in: TABLE_PROPERTY + * Q_PROPERTY + * @endcode + * + * + * + * + */ class DatabaseTable : public QObject { Q_OBJECT @@ -29,11 +82,40 @@ class DatabaseTable : public QObject TABLE_PROPERTY(QString, name, setName, QString()); public: explicit DatabaseTable(QObject *parent = nullptr); + + + /** + * @brief Creates JSON from QMetaObject data ( Q_PROPERTY ) -> TABLE_PROPERTY + * @return text json e.g. { "id": 00344 } + */ QByteArray jsonData() const; + + /** + * @brief Populates object with JSON {"id": 300} ) + * @return true if success TODO: not implemented corrrectly + */ bool fromJson(const QByteArray &data); + + /** + * @brief Creates VariantMap from QMetaObject data ( Q_PROPERTY ) + * @return QVariantMap containing property with key/value pairs + */ QVariantMap toVariantMap() const; + + + /** + * @brief Populates object with QVariantMap + * @return true if success TODO: not implemented corrrectly + */ + bool fromVariantMap(const QVariantMap &variantMap); + + /** + * @brief Creates QList of objects from SELECT query + * @param rows with QVariantMap ( rows of key/value pairs ) + * @return List of objects + */ static QList> fromListVariantMap(const QList &listMap); };