138 lines
4.7 KiB
C++
138 lines
4.7 KiB
C++
#include "schema_metadata.h"
|
|
|
|
#include <QDebug>
|
|
|
|
QMap<QString, RelationIdConfig> SchemaMetadata::databaseTableNameToConfigMap_;
|
|
std::once_flag SchemaMetadata::initFlag;
|
|
|
|
void SchemaMetadata::initialize() {
|
|
qInfo() << "Initializing schema metadata...";
|
|
|
|
RelationIdConfig genreConfig;
|
|
genreConfig.setPrimaryIdColumnName("genre_id");
|
|
genreConfig.setTranslatedTableName(tr("Genres"));
|
|
genreConfig.setModelTableName("GenresModel");
|
|
genreConfig.setRepositoryTableName("GenresRepository");
|
|
databaseTableNameToConfigMap_.insert("genres", genreConfig);
|
|
|
|
RelationIdConfig hallConfig;
|
|
hallConfig.setPrimaryIdColumnName("hall_id");
|
|
hallConfig.setTranslatedTableName(tr("Halls"));
|
|
hallConfig.setModelTableName("HallsModel");
|
|
hallConfig.setRepositoryTableName("HallsRepository");
|
|
databaseTableNameToConfigMap_.insert("halls", hallConfig);
|
|
|
|
RelationIdConfig movieConfig;
|
|
movieConfig.setPrimaryIdColumnName("movie_id");
|
|
movieConfig.setTranslatedTableName(tr("Movies"));
|
|
movieConfig.setModelTableName("MoviesModel");
|
|
movieConfig.setRepositoryTableName("MoviesRepository");
|
|
databaseTableNameToConfigMap_.insert("movies", movieConfig);
|
|
|
|
RelationIdConfig refundConfig;
|
|
refundConfig.setPrimaryIdColumnName("refund_id");
|
|
refundConfig.setTranslatedTableName(tr("Refunds"));
|
|
refundConfig.setModelTableName("RefundsModel");
|
|
refundConfig.setRepositoryTableName("RefundsRepository");
|
|
databaseTableNameToConfigMap_.insert("refunds", refundConfig);
|
|
|
|
RelationIdConfig sessionConfig;
|
|
sessionConfig.setPrimaryIdColumnName("session_id");
|
|
sessionConfig.setTranslatedTableName(tr("Sessions"));
|
|
sessionConfig.setModelTableName("SessionsModel");
|
|
sessionConfig.setRepositoryTableName("SessionsRepository");
|
|
databaseTableNameToConfigMap_.insert("sessions", sessionConfig);
|
|
|
|
RelationIdConfig ticketConfig;
|
|
ticketConfig.setPrimaryIdColumnName("ticket_id");
|
|
ticketConfig.setTranslatedTableName(tr("Tickets"));
|
|
ticketConfig.setModelTableName("TicketsModel");
|
|
ticketConfig.setRepositoryTableName("TicketsRepository");
|
|
databaseTableNameToConfigMap_.insert("tickets", ticketConfig);
|
|
|
|
RelationIdConfig userConfig;
|
|
userConfig.setPrimaryIdColumnName("user_id");
|
|
userConfig.setTranslatedTableName(tr("Users"));
|
|
userConfig.setRepositoryTableName("UsersRepository");
|
|
databaseTableNameToConfigMap_.insert("users", userConfig);
|
|
|
|
RelationIdConfig roleConfig;
|
|
roleConfig.setPrimaryIdColumnName("role_id");
|
|
roleConfig.setTranslatedTableName(tr("Roles"));
|
|
roleConfig.setRepositoryTableName("RolesRepository");
|
|
databaseTableNameToConfigMap_.insert("roles", roleConfig);
|
|
|
|
RelationIdConfig tableInfoConfig;
|
|
tableInfoConfig.setTranslatedTableName(tr("Sessions statistics"));
|
|
tableInfoConfig.setRepositoryTableName("SessionsStatisticsRepository");
|
|
databaseTableNameToConfigMap_.insert("sessions_statistics", tableInfoConfig);
|
|
|
|
qInfo() << "Schema metadata initialized successfully";
|
|
}
|
|
|
|
SchemaMetadata::SchemaMetadata() noexcept {
|
|
std::call_once(initFlag, &SchemaMetadata::initialize);
|
|
}
|
|
|
|
SchemaMetadata::SchemaMetadata(const SchemaMetadata &) {}
|
|
|
|
SchemaMetadata &SchemaMetadata::operator=(const SchemaMetadata &) {
|
|
return *this;
|
|
}
|
|
|
|
SchemaMetadata SchemaMetadata::defaultSchema() { return SchemaMetadata(); }
|
|
|
|
QString SchemaMetadata::modelTableName(const QString &databaseTableName) {
|
|
QString modelTableName = relationIdConfig(databaseTableName).modelTableName();
|
|
|
|
if (modelTableName.isEmpty()) {
|
|
qFatal() << "Model table name is empty: Database table name:"
|
|
<< databaseTableName;
|
|
}
|
|
|
|
return modelTableName;
|
|
}
|
|
|
|
QString SchemaMetadata::primaryIdColumnName(const QString &databaseTableName) {
|
|
QString primaryIdColumnName =
|
|
relationIdConfig(databaseTableName).primaryIdColumnName();
|
|
|
|
if (primaryIdColumnName.isEmpty()) {
|
|
qFatal() << "Primary id column name is empty: Database table name:"
|
|
<< databaseTableName;
|
|
}
|
|
|
|
return primaryIdColumnName;
|
|
}
|
|
|
|
QString SchemaMetadata::repositoryTableName(const QString &databaseTableName) {
|
|
QString repositoryTableName =
|
|
relationIdConfig(databaseTableName).repositoryTableName();
|
|
|
|
if (repositoryTableName.isEmpty()) {
|
|
qFatal() << "Repository table name is empty: Database table name:"
|
|
<< databaseTableName;
|
|
}
|
|
|
|
return repositoryTableName;
|
|
}
|
|
|
|
QString SchemaMetadata::translatedTableName(const QString &databaseTableName) {
|
|
QString translatedTableName =
|
|
relationIdConfig(databaseTableName).translatedTableName();
|
|
|
|
if (translatedTableName.isEmpty()) {
|
|
qFatal() << "Translated table name is empty: Database table name:"
|
|
<< databaseTableName;
|
|
}
|
|
|
|
return translatedTableName;
|
|
}
|
|
|
|
RelationIdConfig
|
|
SchemaMetadata::relationIdConfig(const QString &databaseTableName) {
|
|
RelationIdConfig config =
|
|
databaseTableNameToConfigMap_.value(databaseTableName);
|
|
return config;
|
|
}
|