use uuid::Uuid;
pub fn generate_short_id() -> String {
Uuid::new_v4().to_string()[..8].to_string()
}
pub fn generate_prefixed_id(prefix: &str) -> String {
format!("{}_{}", prefix, generate_short_id())
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_generate_short_id() {
let id = generate_short_id();
assert_eq!(id.len(), 8);
assert!(id.chars().all(|c| c.is_ascii_hexdigit()));
}
#[test]
fn test_generate_short_id_uniqueness() {
let id1 = generate_short_id();
let id2 = generate_short_id();
assert_ne!(id1, id2);
}
#[test]
fn test_generate_prefixed_id() {
let id = generate_prefixed_id("task");
assert!(id.starts_with("task_"));
assert_eq!(id.len(), 13);
}
#[test]
fn test_generate_prefixed_id_various() {
let tc_id = generate_prefixed_id("tc");
assert!(tc_id.starts_with("tc_"));
let call_id = generate_prefixed_id("call");
assert!(call_id.starts_with("call_"));
}
}