#pragma once #include #include #include namespace db { class Schema { public: Schema(sql::Database* db); uint32_t run_migrations(); private: uint32_t get_user_version() const; void set_user_version(uint32_t user_version); void set_savepoint(); void rollback_migrations(); void commit_migrations(); void assemble_migrations(); sql::Database* m_db; uint32_t m_user_version; const std::string m_migration_savepoint = "migrations_savepoint"; std::map migrations; }; }