use amp_rs::ApiClient;
use std::env;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
dotenvy::from_filename_override(".env").ok();
if env::var("AMP_TESTS").unwrap_or_default() != "live" {
println!("This example requires AMP_TESTS=live to be set");
println!("Set AMP_USERNAME, AMP_PASSWORD, and AMP_TESTS=live environment variables");
return Ok(());
}
if env::var("AMP_USERNAME").is_err() || env::var("AMP_PASSWORD").is_err() {
eprintln!("AMP_USERNAME and AMP_PASSWORD must be set for this example");
return Ok(());
}
let client = ApiClient::new().await?;
println!("Assignment Operations Example");
println!("============================");
let assets = client.get_assets().await?;
if assets.is_empty() {
println!("No assets found. Please create an asset first.");
return Ok(());
}
let asset = &assets[0];
println!("Working with asset: {} ({})", asset.name, asset.asset_uuid);
let assignments = client.get_asset_assignments(&asset.asset_uuid).await?;
println!("Found {} existing assignments", assignments.len());
if let Some(assignment) = assignments.first() {
let assignment_id = assignment.id.to_string();
println!("Working with assignment ID: {}", assignment_id);
println!("\n1. Locking assignment...");
match client
.lock_asset_assignment(&asset.asset_uuid, &assignment_id)
.await
{
Ok(locked_assignment) => {
println!("✓ Assignment locked successfully");
println!(" Assignment ID: {}", locked_assignment.id);
println!(" Amount: {}", locked_assignment.amount);
}
Err(e) => println!("✗ Failed to lock assignment: {}", e),
}
println!("\n2. Unlocking assignment...");
match client
.unlock_asset_assignment(&asset.asset_uuid, &assignment_id)
.await
{
Ok(unlocked_assignment) => {
println!("✓ Assignment unlocked successfully");
println!(" Assignment ID: {}", unlocked_assignment.id);
println!(" Amount: {}", unlocked_assignment.amount);
}
Err(e) => println!("✗ Failed to unlock assignment: {}", e),
}
println!("\n3. Delete operation available but not demonstrated (destructive)");
println!(" Use client.delete_asset_assignment(&asset_uuid, &assignment_id) to delete");
} else {
println!("No assignments found for this asset. Create some assignments first.");
}
println!("\nExample completed!");
Ok(())
}