SQL type based command move to DatabaseTable

This commit is contained in:
Filip Bucek 2019-11-13 07:51:15 +01:00
parent 16fe2db973
commit b92095a459
5 changed files with 93 additions and 54 deletions

View File

@ -2,3 +2,33 @@
[![pipeline status](https://gitlab.com/spaceti-app/integrations/common/server-sdk/badges/master/pipeline.svg)](https://gitlab.com/spaceti-app/integrations/common/server-sdk/commits/master)
[![coverage report](https://gitlab.com/spaceti-app/integrations/common/server-sdk/badges/master/coverage.svg)](https://gitlab.com/spaceti-app/integrations/common/server-sdk/commits/master)
## Examples
### How to use predefined classes
#### DatabaseTable, RequestMangager
```cpp
class LoginTable : public serversdk::DatabaseTable {
Q_OBJECT
TABLE_PROPERTY(QString, username, set_username, "");
TABLE_PROPERTY(QString, password, set_password, "")
};
serversdk::RequestManager reqMan;
reqMan.setIgnoreSsl(true);
auto loginRequest = std::make_shared<serversdk::Request>("POST", "https://192.168.1.3:8443/AaaManager/authSession", login->jsonData());
// Set basic authorization
loginRequest->setUserName(login->username());
loginRequest->setPassword(login->password());
reqMan.processRequest(loginRequest);
connect(loginRequest.get(), &serversdk::Request::finished, [=](){
qDebug() << "Request is finished";
});
```

View File

@ -86,7 +86,53 @@ bool DatabaseTable::fromJson(const QByteArray &data)
return res;
}
QString DatabaseTable::textSQLIteType(QVariant::Type type) const
{
switch (type) {
case QVariant::Int:
return QStringLiteral("INTEGER");
break;
case QVariant::Uuid:
return QStringLiteral("TEXT");
break;
case QVariant::String:
return QStringLiteral("TEXT");
break;
case QVariant::DateTime:
return QStringLiteral("INTEGER");
break;
case QVariant::Bool:
return QStringLiteral("INTEGER");
break;
default:
return QString();
break;
}
}
QString DatabaseTable::textPostgresType(QVariant::Type type) const
{
switch (type) {
case QVariant::Int:
return QStringLiteral("INTEGER");
break;
case QVariant::Uuid:
return QStringLiteral("TEXT");
break;
case QVariant::String:
return QStringLiteral("TEXT");
break;
case QVariant::DateTime:
return QStringLiteral("INTEGER");
break;
case QVariant::Bool:
return QStringLiteral("INTEGER");
break;
default:
return QString();
break;
}
}
} // namespace serversdk

View File

@ -117,6 +117,21 @@ public:
* @return List of objects
*/
static QList<std::shared_ptr<DatabaseTable>> fromListVariantMap(const QList<QVariantMap> &listMap);
/**
* @brief Convert QVariant type to SQL type
* @param QVariant type ( QString, int, QDateTime )
* @return text form of database type ( INTEGER, TEXT )
*/
virtual QString textSQLIteType(QVariant::Type type) const;
/**
* @brief Convert QVariant type to SQL type
* @param QVariant type ( QString, int, QDateTime )
* @return text form of database type ( INTEGER, TEXT )
*/
virtual QString textPostgresType(QVariant::Type type) const;
};
} // namespace serversdk

View File

@ -64,9 +64,9 @@ QString DatabaseUtils::createTableText(const DatabaseTable *table, const QString
// Getting correct type based on QVariant
if (sqlType() == "SQLITE") {
textType = this->textSQLIteType(type);
textType = table->textSQLIteType(type);
} else if (sqlType() == "PSQL") {
textType = this->textSQLIteType(type);
textType = table->textSQLIteType(type);
//return QString();
} else {
qCDebug(sdkdb) << "Implemented only for SQLITE";
@ -168,54 +168,5 @@ void DatabaseUtils::setSqlType(const QString &sqlType)
}
QString DatabaseUtils::textSQLIteType(QVariant::Type type) const
{
switch (type) {
case QVariant::Int:
return QStringLiteral("INTEGER");
break;
case QVariant::Uuid:
return QStringLiteral("TEXT");
break;
case QVariant::String:
return QStringLiteral("TEXT");
break;
case QVariant::DateTime:
return QStringLiteral("INTEGER");
break;
case QVariant::Bool:
return QStringLiteral("INTEGER");
break;
default:
return QString();
break;
}
}
QString DatabaseUtils::textPostgresType(QVariant::Type type) const
{
switch (type) {
case QVariant::Int:
return QStringLiteral("INTEGER");
break;
case QVariant::Uuid:
return QStringLiteral("TEXT");
break;
case QVariant::String:
return QStringLiteral("TEXT");
break;
case QVariant::DateTime:
return QStringLiteral("INTEGER");
break;
case QVariant::Bool:
return QStringLiteral("INTEGER");
break;
default:
return QString();
break;
}
}
} // namespace serversdk

View File

@ -30,9 +30,6 @@ public:
private:
QString createTableText(const DatabaseTable *table, const QString table_name) const;
QString textSQLIteType(QVariant::Type type) const;
QString textPostgresType(QVariant::Type type) const;
private:
DatabaseManager *mDatabaseManager = nullptr;
QString mSqlType;