use std::collections::HashMap;
use anyhow::Result;
use serde_json::json;
use wash_lib::cli::link::{get_links, LinkQueryCommand};
use wash_lib::cli::{CommandOutput, OutputKind};
use wasmcloud_control_interface::Link;
use crate::appearance::spinner::Spinner;
use crate::ctl::links_table;
pub fn link_query_output(list: Vec<Link>) -> CommandOutput {
let map = HashMap::from([("links".to_string(), json!(list))]);
CommandOutput::new(links_table(list), map)
}
pub async fn invoke(
LinkQueryCommand { opts }: LinkQueryCommand,
output_kind: OutputKind,
) -> Result<CommandOutput> {
let sp: Spinner = Spinner::new(&output_kind)?;
sp.update_spinner_message("Querying Links ... ".to_string());
let result = get_links(opts.try_into()?).await?;
Ok(link_query_output(result))
}