#pragma once #include #include #include #include #include #include #include //#include "logger.h" namespace serversdk { class DatabaseManager : public QObject { Q_OBJECT friend class Logger; public: DatabaseManager(); DatabaseManager(const QString& host, const QString& dbName, const QString& user, const QString& password, bool mDryMode = false); ~DatabaseManager(); // Attributes bool dryMode() const; void setDryMode(bool dryMode); bool openSQLite(const QString &path, const QString &connectionName = QStringLiteral("qt_sql_default_connection")); bool openPostgres(const QString& host, const QString& dbName, const QString& user, const QString& password, const QString &connectionName = QStringLiteral("qt_sql_default_connection")); bool isValid() const; bool isOpen() const; void close(); // SQL handling QSqlQuery execPlainSql(const QString &sqlText); QSqlQuery executeQuery(QSqlQuery &query, const QString &sqlText = QString()); QSqlQuery createQuery(); QSqlDatabase database() const; private: QSqlQuery processResult(int res, const QSqlQuery &query) const; QString getLastQuery(const QSqlQuery &query) const; void log(const QString &msg) const; signals: void sqlError(const QSqlQuery &query) const; private: QString mConnectionName; QSqlDatabase mDatabase; QSqlQuery query; bool mDryMode = false; }; } // core