mirror of
https://gitlab.com/spaceti-app/integrations/common/server-sdk.git
synced 2026-07-12 16:30:44 +02:00
updated comments to DatabaseTable
This commit is contained in:
parent
136ee8300a
commit
c4c51e5099
@ -77,10 +77,13 @@ QList<std::shared_ptr<DatabaseTable> > DatabaseTable::fromListVariantMap(const Q
|
|||||||
|
|
||||||
bool DatabaseTable::fromJson(const QByteArray &data)
|
bool DatabaseTable::fromJson(const QByteArray &data)
|
||||||
{
|
{
|
||||||
|
// in: JSON ( e.g. {"id": 300} )
|
||||||
QJsonDocument doc = QJsonDocument::fromJson(data);
|
QJsonDocument doc = QJsonDocument::fromJson(data);
|
||||||
QVariantMap variant = qvariant_cast<QVariantMap>(doc.toVariant());
|
QVariantMap variant = qvariant_cast<QVariantMap>(doc.toVariant());
|
||||||
|
|
||||||
return fromVariantMap(variant);
|
// Populate this object data
|
||||||
|
bool res = fromVariantMap(variant);
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,6 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
|
||||||
// Default TABLE_PROPERTY
|
|
||||||
#define TABLE_PROPERTY(TYPE, NAME, SETNAME, INITVAL) \
|
#define TABLE_PROPERTY(TYPE, NAME, SETNAME, INITVAL) \
|
||||||
Q_PROPERTY(TYPE NAME READ NAME WRITE SETNAME NOTIFY NAME ## Changed USER true) \
|
Q_PROPERTY(TYPE NAME READ NAME WRITE SETNAME NOTIFY NAME ## Changed USER true) \
|
||||||
public: \
|
public: \
|
||||||
@ -22,6 +21,60 @@
|
|||||||
|
|
||||||
namespace serversdk {
|
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
|
class DatabaseTable : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -29,11 +82,40 @@ class DatabaseTable : public QObject
|
|||||||
TABLE_PROPERTY(QString, name, setName, QString());
|
TABLE_PROPERTY(QString, name, setName, QString());
|
||||||
public:
|
public:
|
||||||
explicit DatabaseTable(QObject *parent = nullptr);
|
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;
|
QByteArray jsonData() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Populates object with JSON {"id": 300} )
|
||||||
|
* @return true if success TODO: not implemented corrrectly
|
||||||
|
*/
|
||||||
bool fromJson(const QByteArray &data);
|
bool fromJson(const QByteArray &data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Creates VariantMap from QMetaObject data ( Q_PROPERTY )
|
||||||
|
* @return QVariantMap containing property with key/value pairs
|
||||||
|
*/
|
||||||
QVariantMap toVariantMap() const;
|
QVariantMap toVariantMap() const;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Populates object with QVariantMap
|
||||||
|
* @return true if success TODO: not implemented corrrectly
|
||||||
|
*/
|
||||||
|
|
||||||
bool fromVariantMap(const QVariantMap &variantMap);
|
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<std::shared_ptr<DatabaseTable>> fromListVariantMap(const QList<QVariantMap> &listMap);
|
static QList<std::shared_ptr<DatabaseTable>> fromListVariantMap(const QList<QVariantMap> &listMap);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user