#pragma once #include "IModuleDatabase.h" class JSONModuleDatabase final : public IModuleDatabase { public: JSONModuleDatabase(const std::string& baseDir); JSONModuleDatabase(const JSONModuleDatabase&) = delete; JSONModuleDatabase& operator=(const JSONModuleDatabase&) = delete; public: std::map listModules() override; boost::optional findModule(const std::string& moduleId) override; void storeModule(const Module& module) override; private: void storeModuleList(const std::map& moduleList); void updateModuleList(const std::string& moduleId, const ModuleVersion& version); private: std::string m_baseDir; };