Script Snippets

List of example code scripts to get quick started.

Status & Highlight Color

Workflow

pub fn show() {
    let record = exo::get_record()?;
    if record.status.to_string() == "status_0" {
        return true;
    }
    else if record.status.to_string() == "status_1" {
        return true;
    }
    return false;
}

pub async fn main() {
    let record = exo::get_record()?;
    exo::model("set_status", ["status_2", "#2B7D2B"]).await?;
    Ok(())
}

pub async fn test() {
    main().await?;
}

Service

pub async fn main(ident, color) {
    let status = exo::Ident::new(ident);
    let record = exo::get_record()?;
    exo::db::update_record_value(record.uuid, "status", exo::Value::Ident(status)).await?;
    exo::db::update_record_value(record.uuid, "highlight_color", exo::Value::Color(exo::Color::new(color))).await?;
    Ok(true)
}

pub async fn test() {
    main("new","").await?;
}

Set User Favorites

Workflow

pub fn show() {
    let record = exo::get_record()?;
    let user = exo::get_user();
    let favs = user.get_value("favorites")?;

    if favs.iter().any(|r| r.to_string() == record.uuid) {
        return false;
    }
    true
}

pub async fn main() {
    exo::rpc_model("add_favorite", []).await?;
    Ok(())
}

pub async fn test() {
    assert!(show() is bool);
    main().await?;
    Ok(())
}

Service

pub async fn main() {
    exo::db::set_sudo(true);
    let user = exo::get_user();
    let record = exo::get_record()?;
    exo::db::add_favorite(user.uuid, record.uuid).await?;
    Ok(())
}

#[test]
pub async fn test() {
    main().await?;
    Ok(())
}

Remove User Favorite

Workflow

pub fn show() {
    let record = exo::get_record()?;
    let user = exo::get_user();
    let favs = user.get_value("favorites")?;

    if favs.iter().any(|r| r.to_string() == record.uuid) {
        return true;
    }
    false
}

pub async fn main() {
    exo::rpc_model("remove_favorite", []).await?;
    Ok(())
}

pub async fn test() {
    assert!(show() is bool);
    main().await?;
    Ok(())
}

Service

pub async fn main() {
    exo::db::set_sudo(true);
    let user = exo::get_user();
    let record = exo::get_record()?;
    exo::db::remove_favorite(user.uuid, record.uuid).await?;
    Ok(())
}

#[test]
pub async fn test() {
    main().await?;
    Ok(())
}