#include "model_manager.h" #include "genres_model.h" #include "halls_model.h" #include "movies_model.h" #include "refunds_model.h" #include "schema_metadata.h" #include "sessions_model.h" #include "tickets_model.h" ModelManager::ModelManager() { // Get connection to the database database_ = QSqlDatabase::database(); if (!database_.isOpen()) { qDebug() << "Database is not open. Cannot initialize models"; return; } initialize(); } ModelManager::~ModelManager() { qInfo() << "Models manager is being destroyed"; } ModelManager &ModelManager::instance() { static ModelManager instance; return instance; } QStringList ModelManager::registeredModelTableNames() const { return models_.keys(); } QStringList ModelManager::registeredModelTableNames(QString databaseTableName) const { QStringList registeredModelTableNames; for (const auto &modelTableName : models_.keys()) { QSqlTableModel *currentModel = getModelAs(modelTableName); QString currentDatabaseTableName = currentModel->tableName(); if (currentDatabaseTableName == databaseTableName) { registeredModelTableNames.append(modelTableName); } } return registeredModelTableNames; } void ModelManager::initialize() { // clang-format off SchemaMetadata metadata = SchemaMetadata::defaultSchema(); registerModel( metadata.modelTableName("genres"), database_); registerModel( metadata.modelTableName("halls"), database_); registerModel( metadata.modelTableName("movies"), database_); registerModel( metadata.modelTableName("refunds"), database_); registerModel( metadata.modelTableName("sessions"), database_); registerModel( metadata.modelTableName("tickets"), database_); // clang-format on } QSqlTableModel *ModelManager::getModel(const QString &modelTableName) const { QSqlTableModel *model = models_.value(modelTableName, nullptr); if (model == nullptr) { qDebug() << "Model" << modelTableName << "is not registered"; return nullptr; } qDebug() << "Getting model" << modelTableName << "with value" << model; return model; } void ModelManager::resetFilter(const QString &modelTableName) { BaseSqlTableModel *model = getModelAs(modelTableName); model->resetFilter(); } void ModelManager::setMultiColumnFilter(const QString &modelTableName, const QString &filter) { BaseSqlTableModel *model = getModelAs(modelTableName); model->setMultiColumnFilter(filter); }