#pragma once #include "model_value.hpp" #include "sequence.hpp" #include #include #include constexpr const char* kSequencesKey = "command_sequences_v1"; class SequenceRepository { public: using LoadCallback = std::function; using SaveCallback = std::function; SequenceRepository() = default; SequenceRepository(LoadCallback loadCb, SaveCallback saveCb) : loadCallback_(std::move(loadCb)), saveCallback_(std::move(saveCb)) {} void setLoadCallback(LoadCallback cb) { loadCallback_ = std::move(cb); } void setSaveCallback(SaveCallback cb) { saveCallback_ = std::move(cb); } bool load(); bool save() const; const std::vector& sequences() const { return sequences_; } void add(const CommandSequence& s); void remove(const std::string& id); void replace(const CommandSequence& s); private: std::vector sequences_; LoadCallback loadCallback_; SaveCallback saveCallback_; };