84 lines
2.2 KiB
C++
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;
|
|
}
|