mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
Refactor config API
This commit is contained in:
@@ -5,6 +5,9 @@
|
||||
#include <QVariant>
|
||||
#include <QPair>
|
||||
#include <QVector>
|
||||
#include <QFileInfo>
|
||||
#include <QDir>
|
||||
#include <QThreadStorage>
|
||||
|
||||
class QSqlDatabase;
|
||||
class QSqlQuery;
|
||||
@@ -26,13 +29,22 @@ class DBManager : public QObject
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
DBManager(QObject* parent = nullptr);
|
||||
~DBManager() override;
|
||||
explicit DBManager(QObject* parent = nullptr);
|
||||
|
||||
static void initializeDatabase(const QDir& dataDirectory, bool isReadOnly);
|
||||
|
||||
static QDir getDataDirectory() { return _dataDirectory;}
|
||||
static QDir getDirectory() { return _databaseDirectory;}
|
||||
static QFileInfo getFileInfo() { return _databaseFile;}
|
||||
static bool isReadOnly() { return _isReadOnly; }
|
||||
|
||||
///
|
||||
/// @brief Sets the database in read-only mode.
|
||||
/// Updates will not written to the tables
|
||||
/// @param[in] readOnly True read-only, false - read/write
|
||||
///
|
||||
static void setReadonly(bool isReadOnly) { _isReadOnly = isReadOnly; }
|
||||
|
||||
/// set root path
|
||||
void setRootPath(const QString& rootPath);
|
||||
/// define the database to work with
|
||||
void setDatabaseName(const QString& dbn) { _dbn = dbn; };
|
||||
/// set a table to work with
|
||||
void setTable(const QString& table);
|
||||
|
||||
@@ -98,6 +110,18 @@ public:
|
||||
///
|
||||
bool getRecords(QVector<QVariantMap>& results, const QStringList& tColumns = QStringList(), const QStringList& tOrder = QStringList()) const;
|
||||
|
||||
///
|
||||
/// @brief Get data of multiple records, you need to specify the columns. This search is without conditions. Good to grab all data from db
|
||||
/// @param[in] conditions condition to search for (WHERE)
|
||||
/// @param[out] results results of query
|
||||
/// @param[in] tColumns target columns to search in (optional) if not provided returns all columns
|
||||
/// @param[in] tOrder target order columns with order by ASC/DESC (optional)
|
||||
/// @return True on success else false
|
||||
///
|
||||
bool getRecords(const VectorPair& conditions, QVector<QVariantMap>& results, const QStringList& tColumns = {}, const QStringList& tOrder = {}) const;
|
||||
|
||||
bool getRecords(const QString& condition, const QVariantList& bindValues, QVector<QVariantMap>& results, const QStringList& tColumns = {}, const QStringList& tOrder = {}) const;
|
||||
|
||||
///
|
||||
/// @brief Delete a record determined by conditions
|
||||
/// @param[in] conditions conditions of the row to delete it (WHERE)
|
||||
@@ -119,23 +143,26 @@ public:
|
||||
///
|
||||
bool deleteTable(const QString& table) const;
|
||||
|
||||
///
|
||||
/// @brief Sets a table in read-only mode.
|
||||
/// Updates will not written to the table
|
||||
/// @param[in] readOnly True read-only, false - read/write
|
||||
///
|
||||
void setReadonlyMode(bool readOnly) { _readonlyMode = readOnly; };
|
||||
bool executeQuery(QSqlQuery& query) const;
|
||||
|
||||
protected:
|
||||
Logger* _log;
|
||||
|
||||
private:
|
||||
static QDir _dataDirectory;
|
||||
static QDir _databaseDirectory;
|
||||
static QFileInfo _databaseFile;
|
||||
static QThreadStorage<QSqlDatabase> _databasePool;
|
||||
static bool _isReadOnly;
|
||||
|
||||
Logger* _log;
|
||||
/// databse connection & file name, defaults to hyperion
|
||||
QString _dbn = "hyperion";
|
||||
/// table in database
|
||||
QString _table;
|
||||
/// databse connection & file name, defaults to hyperion
|
||||
QString _dbn = "hyperion";
|
||||
|
||||
bool _readonlyMode;
|
||||
/// table in database
|
||||
QString _table;
|
||||
|
||||
/// addBindValue to query given by QVariantList
|
||||
void doAddBindValue(QSqlQuery& query, const QVariantList& variants) const;
|
||||
/// addBindValues to query given by QVariantList
|
||||
void addBindValues(QSqlQuery& query, const QVariantList& variants) const;
|
||||
|
||||
QString constructExecutedQuery(const QSqlQuery& query) const;
|
||||
};
|
||||
|
Reference in New Issue
Block a user