use std::sync::{Mutex, OnceLock};
use snowflake::SnowflakeIdBucket;
static ID_GEN: OnceLock<Mutex<SnowflakeIdBucket>> = OnceLock::new();
pub fn init(machine_id: i32, datacenter_id: i32) {
ID_GEN.get_or_init(|| {
log::info!("Snowflake ID generator initialized: machine_id={}, datacenter_id={}", machine_id, datacenter_id);
Mutex::new(SnowflakeIdBucket::new(machine_id, datacenter_id))
});
}
pub fn next_id() -> String {
ID_GEN.get()
.expect("ID generator not initialized, call genies_core::id_gen::init() first")
.lock()
.unwrap()
.get_id()
.to_string()
}