use proc_macro2::Span;
use syn::Ident;
use uuid::Uuid;
use super::IdentGenerator;
#[derive(Debug, Default, Clone)]
pub struct UUIDIdentGenerator;
impl UUIDIdentGenerator {
#[allow(dead_code)]
pub fn new() -> Self {
Default::default()
}
}
impl IdentGenerator for UUIDIdentGenerator {
fn generate(&mut self, prefix: Option<&'static str>, span: Span) -> Ident {
let uuid = Uuid::new_v4();
let mut encode_buffer = Uuid::encode_buffer();
let uuid_str = uuid.as_hyphenated().encode_lower(&mut encode_buffer);
if let Some(ident) = prefix {
Ident::new(format!("U_{ident}_{uuid_str}").as_str(), span)
} else {
Ident::new(format!("U_{uuid_str}").as_str(), span)
}
}
}