BareGit
#pragma once

#include <vector>

#include "message.hpp"

class Memory
{
public:
    virtual ~Memory() = default;
    virtual void addMessage(const Message& msg) = 0;
    virtual std::vector<Message> getHistory() const = 0;
    virtual void clear() = 0;
};

class InMemoryMemory : public Memory
{
public:
    void addMessage(const Message& msg) override;
    std::vector<Message> getHistory() const override;
    void clear() override;

private:
    std::vector<Message> history_;
};