const PREFIX: &str = "rediq";
#[derive(Debug, Clone)]
pub struct Keys;
impl Keys {
pub fn queue(queue_name: &str) -> String {
format!("{}:queue:{}", PREFIX, queue_name)
}
pub fn priority_queue(queue_name: &str) -> String {
format!("{}:pqueue:{}", PREFIX, queue_name)
}
pub fn cron_queue(queue_name: &str) -> String {
format!("{}:cron:{}", PREFIX, queue_name)
}
pub fn active(queue_name: &str) -> String {
format!("{}:active:{}", PREFIX, queue_name)
}
pub fn delayed(queue_name: &str) -> String {
format!("{}:delayed:{}", PREFIX, queue_name)
}
pub fn retry(queue_name: &str) -> String {
format!("{}:retry:{}", PREFIX, queue_name)
}
pub fn dead(queue_name: &str) -> String {
format!("{}:dead:{}", PREFIX, queue_name)
}
pub fn dedup(queue_name: &str) -> String {
format!("{}:dedup:{}", PREFIX, queue_name)
}
pub fn task(task_id: &str) -> String {
format!("{}:task:{}", PREFIX, task_id)
}
pub fn meta_queues() -> String {
format!("{}:meta:queues", PREFIX)
}
pub fn meta_workers() -> String {
format!("{}:meta:workers", PREFIX)
}
pub fn meta_worker(worker_id: &str) -> String {
format!("{}:meta:worker:{}", PREFIX, worker_id)
}
pub fn meta_heartbeat(worker_id: &str) -> String {
format!("{}:meta:heartbeat:{}", PREFIX, worker_id)
}
pub fn pause(queue_name: &str) -> String {
format!("{}:pause:{}", PREFIX, queue_name)
}
pub fn stats(queue_name: &str) -> String {
format!("{}:stats:{}", PREFIX, queue_name)
}
pub fn pending_deps(task_id: &str) -> String {
format!("{}:pending_deps:{}", PREFIX, task_id)
}
pub fn task_deps(task_id: &str) -> String {
format!("{}:task_deps:{}", PREFIX, task_id)
}
pub fn progress(task_id: &str) -> String {
format!("{}:progress:{}", PREFIX, task_id)
}
pub fn group(group_name: &str) -> String {
format!("{}:group:{}", PREFIX, group_name)
}
pub fn meta_group(group_name: &str) -> String {
format!("{}:meta:group:{}", PREFIX, group_name)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_key_formats() {
assert_eq!(Keys::queue("default"), "rediq:queue:default");
assert_eq!(Keys::priority_queue("default"), "rediq:pqueue:default");
assert_eq!(Keys::cron_queue("default"), "rediq:cron:default");
assert_eq!(Keys::active("default"), "rediq:active:default");
assert_eq!(Keys::delayed("default"), "rediq:delayed:default");
assert_eq!(Keys::retry("default"), "rediq:retry:default");
assert_eq!(Keys::dead("default"), "rediq:dead:default");
assert_eq!(Keys::dedup("default"), "rediq:dedup:default");
assert_eq!(Keys::task("abc123"), "rediq:task:abc123");
assert_eq!(Keys::meta_queues(), "rediq:meta:queues");
assert_eq!(Keys::meta_workers(), "rediq:meta:workers");
assert_eq!(Keys::meta_worker("worker-1"), "rediq:meta:worker:worker-1");
assert_eq!(Keys::meta_heartbeat("worker-1"), "rediq:meta:heartbeat:worker-1");
assert_eq!(Keys::pause("default"), "rediq:pause:default");
assert_eq!(Keys::stats("default"), "rediq:stats:default");
assert_eq!(Keys::pending_deps("task-123"), "rediq:pending_deps:task-123");
assert_eq!(Keys::task_deps("task-456"), "rediq:task_deps:task-456");
assert_eq!(Keys::progress("abc123"), "rediq:progress:abc123");
assert_eq!(Keys::group("daily"), "rediq:group:daily");
assert_eq!(Keys::meta_group("daily"), "rediq:meta:group:daily");
}
}