mirror of
https://gitlab.com/spaceti-app/integrations/common/server-sdk.git
synced 2026-07-12 17:50:41 +02:00
adding filtered methods
This commit is contained in:
parent
7f369b075d
commit
c038568124
@ -13,9 +13,10 @@ DatabaseTable::DatabaseTable(QObject *parent) : QObject(parent)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray DatabaseTable::jsonData() const
|
QByteArray DatabaseTable::jsonData(const QSet<QString> &filters) const
|
||||||
{
|
{
|
||||||
QJsonDocument doc = QJsonDocument::fromVariant(this->toVariantMap());
|
auto variantMap = this->toVariantMap(filters);
|
||||||
|
QJsonDocument doc = QJsonDocument::fromVariant(variantMap);
|
||||||
return doc.toJson(QJsonDocument::Compact);
|
return doc.toJson(QJsonDocument::Compact);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,7 +32,7 @@ bool DatabaseTable::fromJson(const QByteArray &data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Creates universal variant structure to hold key / value pairs */
|
/** Creates universal variant structure to hold key / value pairs */
|
||||||
QVariantMap DatabaseTable::toVariantMap() const
|
QVariantMap DatabaseTable::toVariantMap(const QSet<QString> &filters) const
|
||||||
{
|
{
|
||||||
QVariantMap variantMap;
|
QVariantMap variantMap;
|
||||||
|
|
||||||
@ -44,6 +45,11 @@ QVariantMap DatabaseTable::toVariantMap() const
|
|||||||
|
|
||||||
// Get key -> value pairs
|
// Get key -> value pairs
|
||||||
QString name = prop.name();
|
QString name = prop.name();
|
||||||
|
|
||||||
|
// Filter property
|
||||||
|
if (filters.contains(name))
|
||||||
|
continue;
|
||||||
|
|
||||||
QVariant::Type type = prop.type();
|
QVariant::Type type = prop.type();
|
||||||
QVariant value(type);
|
QVariant value(type);
|
||||||
value.setValue(prop.read(this));
|
value.setValue(prop.read(this));
|
||||||
@ -53,6 +59,7 @@ QVariantMap DatabaseTable::toVariantMap() const
|
|||||||
return variantMap;
|
return variantMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool DatabaseTable::fromVariantMap(const QVariantMap &variantMap)
|
bool DatabaseTable::fromVariantMap(const QVariantMap &variantMap)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QVariantMap>
|
#include <QVariantMap>
|
||||||
|
#include <QSet>
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
@ -87,7 +88,7 @@ public:
|
|||||||
* @brief Creates JSON from QMetaObject data ( Q_PROPERTY ) -> TABLE_PROPERTY
|
* @brief Creates JSON from QMetaObject data ( Q_PROPERTY ) -> TABLE_PROPERTY
|
||||||
* @return text json e.g. { "id": 00344 }
|
* @return text json e.g. { "id": 00344 }
|
||||||
*/
|
*/
|
||||||
virtual QByteArray jsonData() const;
|
virtual QByteArray jsonData(const QSet<QString> &filters = {}) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Populates object with JSON {"id": 300} )
|
* @brief Populates object with JSON {"id": 300} )
|
||||||
@ -99,7 +100,7 @@ public:
|
|||||||
* @brief Creates VariantMap from QMetaObject data ( Q_PROPERTY )
|
* @brief Creates VariantMap from QMetaObject data ( Q_PROPERTY )
|
||||||
* @return QVariantMap containing property with key/value pairs
|
* @return QVariantMap containing property with key/value pairs
|
||||||
*/
|
*/
|
||||||
virtual QVariantMap toVariantMap() const;
|
virtual QVariantMap toVariantMap(const QSet<QString> &filters = {}) const;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -32,9 +32,9 @@ class EnumTest : public serversdk::DatabaseTable
|
|||||||
TABLE_PROPERTY(bool, noValidity, setNoValidity, false);
|
TABLE_PROPERTY(bool, noValidity, setNoValidity, false);
|
||||||
TABLE_PROPERTY(QString, subjectId, setSubjectId, QString());
|
TABLE_PROPERTY(QString, subjectId, setSubjectId, QString());
|
||||||
public:
|
public:
|
||||||
QByteArray jsonData() const override
|
QByteArray jsonData(const QSet<QString> &filters = QSet<QString>()) const override
|
||||||
{
|
{
|
||||||
auto variantMap = this->toVariantMap();
|
auto variantMap = this->toVariantMap(filters);
|
||||||
auto enabled = variantMap["enabled"].toBool();
|
auto enabled = variantMap["enabled"].toBool();
|
||||||
auto noValidity = variantMap["noValidity"].toBool();
|
auto noValidity = variantMap["noValidity"].toBool();
|
||||||
variantMap.remove("enabled");
|
variantMap.remove("enabled");
|
||||||
@ -149,8 +149,12 @@ void DatabaseTableTest::enum_test()
|
|||||||
void DatabaseTableTest::filter_json_test()
|
void DatabaseTableTest::filter_json_test()
|
||||||
{
|
{
|
||||||
auto book = std::make_shared<BookTable>();
|
auto book = std::make_shared<BookTable>();
|
||||||
QCOMPARE(book->jsonData(), QByteArray("{\"author\":\"Me\",\"id\":0,\"name\":\"Test\",\"uuid\":\"\"}"));
|
QCOMPARE(book->jsonData(), QByteArray(R"({"author":"Me","id":0,"name":"Test","uuid":""})"));
|
||||||
QCOMPARE(book->filteredJson(), QByteArray("{\"id\":0,\"name\":\"Test\",\"uuid\":\"\"}"));
|
|
||||||
|
|
||||||
|
const QByteArray filtered(R"({"id":0,"name":"Test","uuid":""})");
|
||||||
|
QCOMPARE(book->filteredJson(), filtered);
|
||||||
|
QCOMPARE(book->jsonData({"author"}), filtered);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user