use crate::types::RUMID;
use nanoid::nanoid;
use uuid::Uuid;
pub const DEFAULT_ID_SIZE: usize = 16;
pub enum RUMID_TYPE {
SHORT,
None,
}
pub fn generate_id(typ: RUMID_TYPE, size: usize) -> String {
match typ {
RUMID_TYPE::SHORT => {
nanoid!(size)
}
RUMID_TYPE::None => RUMID::new_v4().to_string(),
}
}
pub fn id_to_uuid(id: &str) -> RUMID {
Uuid::parse_str(id).unwrap()
}
#[macro_export]
macro_rules! rumtk_generate_id {
( ) => {{
use $crate::id::{generate_id, DEFAULT_ID_SIZE, RUMID_TYPE};
generate_id(RUMID_TYPE::SHORT, DEFAULT_ID_SIZE)
}};
( $size:expr ) => {{
use $crate::id::{generate_id, DEFAULT_ID_SIZE, RUMID_TYPE};
generate_id(RUMID_TYPE::SHORT, $size)
}};
( $size:expr, $typ:expr ) => {{
use $crate::id::{generate_id, DEFAULT_ID_SIZE, RUMID_TYPE};
generate_id($typ, $size)
}};
}