//SPDX-FileCopyrightText: 2024 Yury Gubich <blue@macaw.me>
//SPDX-License-Identifier: GPL-3.0-or-later

#include "asset.h"

DB::Asset::Asset ():
    id(0),
    owner(0),
    currency(0),
    title(),
    icon(),
    color(0),
    archived(false)
{}

DB::Asset::Asset (const std::vector<std::any>& vec):
    id(std::any_cast<uint32_t>(vec[0])),
    owner(std::any_cast<uint32_t>(vec[1])),
    currency(std::any_cast<uint32_t>(vec[2])),
    title(std::any_cast<const std::string&>(vec[3])),
    icon(std::any_cast<const std::string&>(vec[4])),
    color(std::any_cast<uint32_t>(vec[5])),
    archived(std::any_cast<uint8_t>(vec[6]))
{}

void DB::Asset::parse (const std::vector<std::any>& vec) {
    id = std::any_cast<uint32_t>(vec[0]);
    owner = std::any_cast<uint32_t>(vec[1]);
    currency = std::any_cast<uint32_t>(vec[2]);
    title = std::any_cast<const std::string&>(vec[3]);
    icon = std::any_cast<const std::string&>(vec[4]);
    color = std::any_cast<uint32_t>(vec[5]);
    archived = std::any_cast<uint8_t>(vec[6]);
}

nlohmann::json DB::Asset::toJSON () const {
    nlohmann::json result = nlohmann::json::object();

    result["id"] = id;
    //result["owner"] = owner;
    result["currency"] = currency;
    result["title"] = title;
    result["icon"] = icon;
    result["color"] = color;
    result["archived"] = archived;

    return result;
}