Initial commit
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user