#include "show_cmd.hpp"

#include "actions.hpp"
#include "args.hpp"
#include "settings.hpp"
#include "utils/error.hpp"
#include "utils/string.hpp"

namespace monitarr {
auto show_cmd(int argc, char **argv, const app_config &cfg) -> int {
  MONITARR_USES_FUNCTION_NAME();

  auto idx = get_arg("-i", argc, argv);
  if (not idx.has_value()) {
    utils::error::handle_error(function_name, "'-i <index>' is required");
    return 3;
  }

  const auto &server = cfg.server_list.at(utils::string::to_uint64(*idx));
  auto record_id = get_arg("-id", argc, argv);
  if (not record_id.has_value()) {
    utils::error::handle_error(function_name, "'-id <record id>' is required");
    return 3;
  }

  auto entry = get_download(utils::string::to_uint64(*record_id), server);
  if (not entry.has_value()) {
    return 3;
  }

  utils::error::handle_info(function_name,
                            fmt::format("{}", nlohmann::json(*entry).dump(2)));
  return 0;
}
} // namespace monitarr
