use serde::{Deserialize, Serialize};
use ulid::Ulid;
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
pub struct TransactionId(Ulid);
impl std::fmt::Display for TransactionId {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let id_str = self.0.to_string();
write!(f, "T{}", &id_str[20..])
}
}
impl Default for TransactionId {
fn default() -> Self { Self::new() }
}
impl TransactionId {
pub fn new() -> Self { Self(Ulid::new()) }
}