Files
cinema-ticket-management-sy…/core/services/repository_manager.cpp
T
2026-07-12 14:34:52 +04:00

84 lines
2.2 KiB
C++

#include "repository_manager.h"
#include "genres_repository.h"
#include "halls_repository.h"
#include "movies_repository.h"
#include "refunds_repository.h"
#include "roles_repository.h"
#include "schema_metadata.h"
#include "sessions_repository.h"
#include "sessions_statistics_repository.h"
#include "tickets_repository.h"
#include "users_repository.h"
RepositoryManager::RepositoryManager() {
database_ = QSqlDatabase::database();
if (!database_.isOpen()) {
qDebug() << "Database is not open. Cannot initialize repositories";
return;
}
initialize();
}
RepositoryManager::~RepositoryManager() {
qInfo() << "Repositories manager is being destroyed";
}
RepositoryManager &RepositoryManager::instance() {
static RepositoryManager instance;
return instance;
}
void RepositoryManager::initialize() {
// clang-format off
SchemaMetadata metadata = SchemaMetadata::defaultSchema();
// Tables
registerRepository<GenresRepository>(
metadata.repositoryTableName("genres"));
registerRepository<HallsRepository>(
metadata.repositoryTableName("halls"));
registerRepository<MoviesRepository>(
metadata.repositoryTableName("movies"));
registerRepository<RefundsRepository>(
metadata.repositoryTableName("refunds"));
registerRepository<SessionsRepository>(
metadata.repositoryTableName("sessions"));
registerRepository<TicketsRepository>(
metadata.repositoryTableName("tickets"));
registerRepository<UsersRepository>(
metadata.repositoryTableName("users"));
registerRepository<RolesRepository>(
metadata.repositoryTableName("roles"));
// Views
registerRepository<SessionsStatisticsRepository>(
metadata.repositoryTableName("sessions_statistics"));
// clang-format on
}
RepositoryInterface *
RepositoryManager::getRepository(const QString &repositoryTableName) const {
RepositoryInterface *repository =
repositories_.value(repositoryTableName, nullptr);
if (repository == nullptr) {
qDebug() << "Repository" << repositoryTableName << "is not registered";
return nullptr;
}
qDebug() << "Getting model" << repositoryTableName << "with value"
<< repository;
return repository;
}