#pragma once #include <db/db.h> #include <map> #include <db/migrations/Migration.h> 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<uint32_t, db::migrations::Migration*> migrations; }; }