1use serde::Deserialize;
2use serde::Serialize;
3use uuid::Uuid;
4
5#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Ord, PartialOrd, Hash, ts_rs::TS)]
6pub struct ArtifactId(Uuid);
7
8impl ArtifactId {
9 pub fn new(uuid: Uuid) -> Self {
10 Self(uuid)
11 }
12
13 pub fn placeholder() -> Self {
15 Self(Uuid::nil())
16 }
17}
18
19impl From<Uuid> for ArtifactId {
20 fn from(uuid: Uuid) -> Self {
21 Self::new(uuid)
22 }
23}
24
25impl From<&Uuid> for ArtifactId {
26 fn from(uuid: &Uuid) -> Self {
27 Self::new(*uuid)
28 }
29}
30
31impl From<ArtifactId> for Uuid {
32 fn from(id: ArtifactId) -> Self {
33 id.0
34 }
35}
36
37impl From<&ArtifactId> for Uuid {
38 fn from(id: &ArtifactId) -> Self {
39 id.0
40 }
41}