use crate::core::RUMResult;
use crate::strings::rumtk_format;
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) -> RUMResult<RUMID> {
match Uuid::parse_str(id) {
Ok(rumid) => Ok(rumid),
Err(e) => Err(rumtk_format!("Issue converting id => {} to UUID!", id))
}
}
#[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)
}};
}