#pragma once #include #include #include #include namespace ikarus { CPPBASE_ASSET(m0_initial_layout, "persistence/migrations/m0_initial_layout.sql"); class Migration : public sqlitecpp::Migration { public: Migration(char const * sql, size_t size): sql{sql, size} {} ~Migration() override = default; public: [[nodiscard]] inline auto get_content() const -> std::string_view override { return sql; } public: std::string_view sql; }; #define DECLARE_MIGRATION(name) std::make_unique(static_cast(name()), name##_size()) constexpr std::string_view DB_VERSION_KEY = "IKARUS_DB_VERSION"; std::vector> const MIGRATIONS = []() { std::vector> ret; ret.emplace_back(DECLARE_MIGRATION(m0_initial_layout)); return ret; }(); } // namespace ikarus