domino_cli 0.1.1

Client to interact with a domino application running on holochain
Documentation
use crate::{display::format_table, ham::Ham, CommonOpts};
use anyhow::Result;
use colored::Colorize;
use holochain_types::dna::ActionHash;
use rave_engine::types::entries::{CodeTemplateExt, SAVED};
use rave_engine::types::Transaction;

pub async fn execute_saved(value: CommonOpts, input: String) -> Result<()> {
    let agent = Ham::connect(value).await?;

    // Parse the input JSON string into the expected input type
    let input: serde_json::Value = serde_json::from_str(&input)?;

    let result: (SAVED, ActionHash) = agent
        .zome_call("alliance", "transactor", "execute", input)
        .await?;

    println!("===================");
    println!("SAVED Executed:");
    println!("SAVED: {:#?}", result.0);
    println!("Action Hash: {:#?}", result.1);
    println!("===================");

    Ok(())
}

pub async fn get_incoming_saveds(value: CommonOpts) -> Result<()> {
    let agent = Ham::connect(value).await?;

    let saveds: Vec<Transaction> = agent
        .zome_call("alliance", "transactor", "get_incoming_saveds", ())
        .await?;

    println!("===================");
    println!("Incoming SAVEDs:");
    println!("{:#?}", saveds);
    println!("===================");

    Ok(())
}

pub async fn collect_from_saved(value: CommonOpts, saved: String) -> Result<()> {
    let agent = Ham::connect(value).await?;

    // Parse the input JSON string into Transaction
    let saved: serde_json::Value = serde_json::from_str(&saved)?;

    let result: Transaction = agent
        .zome_call("alliance", "transactor", "collect_from_saved", saved)
        .await?;

    println!("===================");
    println!("SAVED Accepted:");
    println!("{:#?}", result);
    println!("===================");

    Ok(())
}

pub async fn get_code_templates_lib(value: CommonOpts) -> Result<Vec<CodeTemplateExt>> {
    let agent = Ham::connect(value).await?;

    let saveds: Vec<CodeTemplateExt> = agent
        .zome_call("alliance", "transactor", "get_code_templates_lib", ())
        .await?;

    println!("Code Templates Library:");
    if !saveds.is_empty() {
        let table = format_table(&saveds, "Code Templates Library");
        table.printstd();
    } else {
        println!("{}", "No code templates library".dimmed());
    }

    Ok(saveds)
}