You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

26 lines
606 B

  1. #pragma once
  2. #include <db/db.h>
  3. #include <map>
  4. #include <db/migrations/Migration.h>
  5. namespace db {
  6. class Schema {
  7. public:
  8. Schema(sql::Database* db);
  9. uint32_t run_migrations();
  10. private:
  11. uint32_t get_user_version() const;
  12. void set_user_version(uint32_t user_version);
  13. void set_savepoint();
  14. void rollback_migrations();
  15. void commit_migrations();
  16. void assemble_migrations();
  17. sql::Database* m_db;
  18. uint32_t m_user_version;
  19. const std::string m_migration_savepoint = "migrations_savepoint";
  20. std::map<uint32_t, db::migrations::Migration*> migrations;
  21. };
  22. }