use flashq::{BulkJob, Queue};
#[tokio::main]
async fn main() -> flashq::Result<()> {
let queue = Queue::new("emails");
queue.connect().await?;
let id = queue
.add(
"send-welcome",
serde_json::json!({"to": "user@example.com", "template": "welcome"}),
None,
)
.await?;
println!("Added job: {id}");
let ids = queue
.add_bulk(vec![
BulkJob {
name: "send-notification".to_string(),
data: serde_json::json!({"to": "a@example.com"}),
options: None,
},
BulkJob {
name: "send-notification".to_string(),
data: serde_json::json!({"to": "b@example.com"}),
options: None,
},
])
.await?;
println!("Bulk added {} jobs", ids.len());
let counts = queue.get_job_counts().await?;
println!(
"Counts: waiting={}, active={}, completed={}, failed={}",
counts.waiting, counts.active, counts.completed, counts.failed
);
let total = queue.count().await?;
println!("Total waiting+delayed: {total}");
let drained = queue.drain().await?;
println!("Drained {drained} jobs");
queue.close().await?;
Ok(())
}