Skip to main content

sift_queue/cli/commands/
status.rs

1use crate::queue::{Queue, UpdateAttrs};
2use crate::StatusArgs;
3use anyhow::Result;
4use std::path::PathBuf;
5
6pub fn execute(args: &StatusArgs, queue_path: PathBuf, status: &str) -> Result<i32> {
7    let queue = Queue::new(queue_path);
8
9    let id = match &args.id {
10        Some(id) => id.as_str(),
11        None => {
12            eprintln!("Error: Item ID is required");
13            return Ok(1);
14        }
15    };
16
17    let attrs = UpdateAttrs {
18        status: Some(status.to_string()),
19        ..Default::default()
20    };
21
22    match queue.update(id, attrs)? {
23        Some(updated) => {
24            if args.json {
25                let json = serde_json::to_string_pretty(&updated.to_json_value())?;
26                println!("{}", json);
27            } else {
28                println!("{}", updated.id);
29                eprintln!("Updated item {}", updated.id);
30            }
31            Ok(0)
32        }
33        None => {
34            eprintln!("Error: Item not found: {}", id);
35            Ok(1)
36        }
37    }
38}