Skip to main content

sift_queue/cli/commands/
rm.rs

1use crate::queue::Queue;
2use crate::RmArgs;
3use anyhow::Result;
4use std::path::PathBuf;
5
6/// Execute the `sq rm` command.
7pub fn execute(args: &RmArgs, queue_path: PathBuf) -> Result<i32> {
8    let queue = Queue::new(queue_path);
9
10    let id = match &args.id {
11        Some(ref id) => id.as_str(),
12        None => {
13            eprintln!("Error: Item ID is required");
14            return Ok(1);
15        }
16    };
17
18    match queue.remove(id)? {
19        Some(removed) => {
20            if args.json {
21                let json = serde_json::to_string_pretty(&removed.to_json_value())?;
22                println!("{}", json);
23            } else {
24                println!("{}", removed.id);
25                eprintln!("Removed item {}", removed.id);
26            }
27            Ok(0)
28        }
29        None => {
30            eprintln!("Error: Item not found: {}", id);
31            Ok(1)
32        }
33    }
34}