mirror of
https://gitlab.com/spaceti-app/integrations/common/server-sdk.git
synced 2026-07-12 21:30:36 +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)
|
||||
{
|
||||
// in: JSON ( e.g. {"id": 300} )
|
||||
QJsonDocument doc = QJsonDocument::fromJson(data);
|
||||
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>
|
||||
|
||||
|
||||
// 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<std::shared_ptr<DatabaseTable>> fromListVariantMap(const QList<QVariantMap> &listMap);
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user