user_wait_task/
user_wait_task.rs

1use colink::{
2    decode_jwt_without_validation, extensions::registry::UserRecord, CoLink, Participant,
3};
4use prost::Message;
5use std::env;
6
7#[tokio::main]
8async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync + 'static>> {
9    let args = env::args().skip(1).collect::<Vec<_>>();
10    let addr = &args[0];
11    let jwt = &args[1];
12    let target_user = &args[2];
13    let user_id = decode_jwt_without_validation(jwt).unwrap().user_id;
14
15    let user = UserRecord {
16        user_id: target_user.to_string(),
17        ..Default::default()
18    };
19    let mut payload = vec![];
20    user.encode(&mut payload).unwrap();
21    let cl = CoLink::new(addr, jwt);
22    let participants = vec![Participant {
23        user_id: user_id.to_string(),
24        role: "query_from_registries".to_string(),
25    }];
26    let task_id = cl
27        .run_task("registry", &payload, &participants, false)
28        .await?;
29    println!(
30        "Task {} has been created, waiting for it to finish...",
31        task_id
32    );
33    cl.wait_task(&task_id).await?;
34    println!("Task {} finished", task_id);
35
36    Ok(())
37}