Initial commit
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
#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<QSqlTableModel>(modelTableName);
|
||||
QString currentDatabaseTableName = currentModel->tableName();
|
||||
if (currentDatabaseTableName == databaseTableName) {
|
||||
registeredModelTableNames.append(modelTableName);
|
||||
}
|
||||
}
|
||||
return registeredModelTableNames;
|
||||
}
|
||||
|
||||
void ModelManager::initialize() {
|
||||
// clang-format off
|
||||
|
||||
SchemaMetadata metadata = SchemaMetadata::defaultSchema();
|
||||
|
||||
registerModel<GenresModel>(
|
||||
metadata.modelTableName("genres"), database_);
|
||||
|
||||
registerModel<HallsModel>(
|
||||
metadata.modelTableName("halls"), database_);
|
||||
|
||||
registerModel<MoviesModel>(
|
||||
metadata.modelTableName("movies"), database_);
|
||||
|
||||
registerModel<RefundsModel>(
|
||||
metadata.modelTableName("refunds"), database_);
|
||||
|
||||
registerModel<SessionsModel>(
|
||||
metadata.modelTableName("sessions"), database_);
|
||||
|
||||
registerModel<TicketsModel>(
|
||||
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<BaseSqlTableModel>(modelTableName);
|
||||
model->resetFilter();
|
||||
}
|
||||
|
||||
void ModelManager::setMultiColumnFilter(const QString &modelTableName,
|
||||
const QString &filter) {
|
||||
BaseSqlTableModel *model = getModelAs<BaseSqlTableModel>(modelTableName);
|
||||
model->setMultiColumnFilter(filter);
|
||||
}
|
||||
Reference in New Issue
Block a user