#pragma once #include #include #include #include namespace lm { class Database; class SiteStore { public: explicit SiteStore(Database& db); nlohmann::json list() const; std::optional find(const std::string& id) const; std::optional create(const nlohmann::json& payload, std::string& err); bool update(const std::string& id, const nlohmann::json& payload, std::string& err); bool remove(const std::string& id, std::string& err); std::string ensureDefaultSiteId(); private: Database& db_; mutable std::mutex mu_; }; } // namespace lm