hyperion.ng/include/db/DBConfigManager.h
LordGrey ecceb4e7ae
Refactor Settings DB and Handling (#1786)
* Refactor config API

* Corrections

* Test Qt 6.8

* Revert "Test Qt 6.8"

This reverts commit eceebec49ecf1a3eda281a0630a9a7577b44ef0a.

* Corrections 2

* Update Changelog

* Add configFilter element for getconfig call

* Do not create errors for DB updates when in read-only mode

* Have configuration migration and validation before Hyperion starts

* Correct Tests

* Corrections

* Add migration items

* Correct windows build

* Ensure that first instance as default one exists

* Remove dependency between AuthManager and SSDPHandler

* Correct typos

* Address CodeQL findings

* Replace CamkeSettings by Presets and provide debug scenarios
2024-09-30 22:03:13 +02:00

43 lines
1.5 KiB
C++

#ifndef DBCONFGMANAGER_H
#define DBConfigManager_H
#include <db/DBManager.h>
#include "db/SettingsTable.h"
#include "db/InstanceTable.h"
class DBConfigManager : public DBManager
{
public:
DBConfigManager(QObject* parent = nullptr);
QPair<bool, QStringList> importJson(const QString& configFile);
bool exportJson(const QString& path = "") const;
QJsonObject getConfiguration(const QList<quint8>& instances = {}, const QStringList& instanceFilteredTypes = {}, const QStringList& globalFilterTypes = {} ) const;
QPair<bool, QStringList> validateConfiguration();
QPair<bool, QStringList> validateConfiguration(QJsonObject& config, bool doCorrections = false);
QPair<bool, QStringList> addMissingDefaults();
QPair<bool, QStringList> updateConfiguration();
QPair<bool, QStringList> updateConfiguration(QJsonObject& config, bool doCorrections = false);
QPair<bool, QStringList> migrateConfiguration();
private:
// Function to import global settings from the configuration
bool importGlobalSettings(const QJsonObject& config, QStringList& errorList);
// Function to import all instances from the configuration
bool importInstances(const QJsonObject& config, QStringList& errorList);
// Function to import a single instance
bool importInstance(InstanceTable& instanceTable, const QJsonObject& instanceConfig, quint8 instanceIdx, QStringList& errorList);
// Function to import settings for a specific instance
bool importInstanceSettings(SettingsTable& settingsTable, const QJsonObject& instanceSettings, QStringList& errorList);
};
#endif // DBCONFGMANAGER_H