#ifndef SCHEMA_METADATA_H #define SCHEMA_METADATA_H #include "relation_id_config.h" #include #include #include class SchemaMetadata : QObject { Q_OBJECT private: static QMap databaseTableNameToConfigMap_; static std::once_flag initFlag; public: SchemaMetadata &operator=(const SchemaMetadata &); SchemaMetadata(const SchemaMetadata &); QString modelTableName(const QString &databaseTableName); QString primaryIdColumnName(const QString &databaseTableName); QString repositoryTableName(const QString &databaseTableName); QString translatedTableName(const QString &databaseTableName); RelationIdConfig relationIdConfig(const QString &databaseTableName); inline auto asKeyValueRange(); static SchemaMetadata defaultSchema(); private: SchemaMetadata() noexcept; static void initialize(); }; auto SchemaMetadata::asKeyValueRange() { return databaseTableNameToConfigMap_.asKeyValueRange(); } #endif // SCHEMA_METADATA_H