sift_queue/cli/commands/
status.rs1use 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}