// // Created by Kirill Zhukov on 20.04.2025. // #ifndef VERSIONMANAGER_H #define VERSIONMANAGER_H #include #include #include #include #include #include namespace usub::utils { class VersionManager { public: explicit VersionManager(const std::string& dbname); ~VersionManager() { save_version(); } uint64_t next_version(); void flush(); private: void ensure_metadata_dir(); void load_version(); void save_version(); private: std::atomic version{1}; std::string db_name; std::string metadata_dir; std::string version_file; }; } // namespace usub::utils #endif //VERSIONMANAGER_H