Skip to content
Clone
26af08e
23 lines 676 B Rust
use crate::error::{QueueError, QueueResult};
pub struct Route {
pub area: String,
pub tag: String,
}
pub fn route(kind: &str) -> QueueResult<Route> {
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}"),
})
}