#include "sys_info_param.hpp"

std::tuple<bool, std::string> SysInfoParamStore::lookup(
    uint8_t paramSelector) const
{
    const auto iterator = params.find(paramSelector);
    if (iterator == params.end())
    {
        return std::make_tuple(false, "");
    }

    auto& callback = iterator->second;
    auto s = callback();
    return std::make_tuple(true, s);
}

void SysInfoParamStore::update(uint8_t paramSelector, const std::string& s)
{
    // Add a callback that captures a copy of the string passed and returns it
    // when invoked.

    // clang-format off
    update(paramSelector, [s]() {
        return s;
    });
    // clang-format on
}

void SysInfoParamStore::update(uint8_t paramSelector,
                               const std::function<std::string()>& callback)
{
    params[paramSelector] = callback;
}
