#pragma once #include #include #include #include #include #include #include class TGUCSettings { public: TGUCSettings() = default; TGUCSettings(const TString& serialized); using TPtr = std::shared_ptr; void Setup(const std::unordered_map& runtimeSettings); std::optional Get(const std::string&) const; void Set(const std::string&, const std::string&, bool isLocal = false); void Commit(); void RollBack(); void ExportToJson(NJson::TJsonValue& value) const; void ImportFromJson(const NJson::TJsonValue& value); TString SerializeToString() const; size_t GetHash() const noexcept; bool operator==(const TGUCSettings& other) const; private: std::unordered_map Settings_; std::unordered_map RollbackSettings_; std::unordered_map SessionSettings_; };