1use serde::{Deserialize, Serialize};
2use ulid::Ulid;
3
4pub type KimetsuId = Ulid;
5
6pub fn new_id() -> KimetsuId {
7 Ulid::new()
8}
9
10#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
11#[serde(transparent)]
12pub struct RunId(pub KimetsuId);
13
14#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
15#[serde(transparent)]
16pub struct EventId(pub KimetsuId);
17
18impl RunId {
19 pub fn new() -> Self {
20 Self(new_id())
21 }
22}
23
24impl Default for RunId {
25 fn default() -> Self {
26 Self::new()
27 }
28}
29
30impl EventId {
31 pub fn new() -> Self {
32 Self(new_id())
33 }
34}
35
36impl Default for EventId {
37 fn default() -> Self {
38 Self::new()
39 }
40}
41
42impl std::fmt::Display for RunId {
43 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
44 write!(f, "{}", self.0)
45 }
46}
47
48impl std::fmt::Display for EventId {
49 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
50 write!(f, "{}", self.0)
51 }
52}