pub const CATEGORY_VIDEOS: &str = "videos"; pub const CATEGORY_SEARCH: &str = "search"; pub const CATEGORY_HYBRID_SEARCH: &str = "hybrid_search"; pub const CATEGORY_N8N_SEARCH: &str = "n8n_search"; pub const CATEGORY_VIDEO_META: &str = "video_meta"; pub const CATEGORY_HEALTH: &str = "health"; pub const KEY_PREFIX_VIDEOS_LIST: &str = "videos:list:"; pub const KEY_PREFIX_VIDEO: &str = "video:"; pub const KEY_PREFIX_SEARCH: &str = "search:"; pub const KEY_PREFIX_SEARCH_HYBRID: &str = "search:hybrid:"; pub const KEY_PREFIX_SEARCH_N8N: &str = "search:n8n:"; pub const KEY_HEALTH: &str = "health:basic"; pub fn videos_list(page: usize, limit: usize) -> String { format!("{}page={}:limit={}", KEY_PREFIX_VIDEOS_LIST, page, limit) } pub fn video_meta(uuid: &str) -> String { format!("{}{}", KEY_PREFIX_VIDEO, uuid) } pub fn search(query_hash: &str) -> String { format!("{}{}", KEY_PREFIX_SEARCH, query_hash) } pub fn hybrid_search(query_hash: &str) -> String { format!("{}{}", KEY_PREFIX_SEARCH_HYBRID, query_hash) } pub fn n8n_search(query_hash: &str) -> String { format!("{}{}", KEY_PREFIX_SEARCH_N8N, query_hash) } pub fn health() -> String { KEY_HEALTH.to_string() } pub fn videos_list_prefix() -> String { format!("^{}", KEY_PREFIX_VIDEOS_LIST) } pub fn video_prefix(uuid: &str) -> String { format!("^{}{}", KEY_PREFIX_VIDEO, uuid) } pub fn search_prefix() -> String { format!("^{}", KEY_PREFIX_SEARCH) } #[cfg(test)] mod tests { use super::*; #[test] fn test_videos_list() { assert_eq!(videos_list(1, 20), "videos:list:page=1:limit=20"); assert_eq!(videos_list(2, 50), "videos:list:page=2:limit=50"); } #[test] fn test_video_meta() { assert_eq!(video_meta("abc123"), "video:abc123"); } #[test] fn test_search() { assert_eq!(search("hash123"), "search:hash123"); } #[test] fn test_hybrid_search() { assert_eq!(hybrid_search("hash123"), "search:hybrid:hash123"); } #[test] fn test_n8n_search() { assert_eq!(n8n_search("hash123"), "search:n8n:hash123"); } #[test] fn test_health() { assert_eq!(health(), "health:basic"); } }