use crate::error::{QueueError, QueueResult}; pub struct Route { pub area: String, pub tag: String, } pub fn route(kind: &str) -> QueueResult { let mut parts = kind.split('.'); let domain = parts.next().unwrap_or_default(); let name = parts.next().unwrap_or_default(); let operate = parts.next().unwrap_or_default(); if domain.is_empty() || name.is_empty() || operate.is_empty() || parts.next().is_some() { return Err(QueueError::payload(format!( "event kind `{kind}` must use `domain.name.operate`" ))); } Ok(Route { area: domain.to_string(), tag: format!("{name}-{operate}"), }) }