use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum TtidError {
TimestampOutOfRange,
InvalidUuid,
UnknownTypeId(u16),
}
impl fmt::Display for TtidError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::TimestampOutOfRange => f.write_str("timestamp exceeds 48-bit TTID limit"),
Self::InvalidUuid => f.write_str("uuid is not a valid TTID UUIDv8"),
Self::UnknownTypeId(type_id) => {
write!(
f,
"uuid contains unknown type id for this IdType: {type_id}"
)
}
}
}
}
impl std::error::Error for TtidError {}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ParseTtidError {
InvalidFormat,
UnknownTypeName,
InvalidShortUuid,
Ttid(TtidError),
TypeMismatch,
}
impl fmt::Display for ParseTtidError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::InvalidFormat => {
f.write_str("invalid TTID string format, expected <type>_<shortuuid>")
}
Self::UnknownTypeName => f.write_str("unknown TTID type name"),
Self::InvalidShortUuid => f.write_str("invalid shortuuid value"),
Self::Ttid(err) => write!(f, "invalid TTID payload: {err}"),
Self::TypeMismatch => f.write_str("type name and encoded type id do not match"),
}
}
}
impl std::error::Error for ParseTtidError {}
impl From<TtidError> for ParseTtidError {
fn from(value: TtidError) -> Self {
Self::Ttid(value)
}
}