made_core/value_objects/artifact/
artifact_ref.rs1use serde::{Deserialize, Serialize};
2
3use super::{ArtifactDigest, ArtifactId, ArtifactMediaType, ArtifactProvenance, ArtifactSizeBytes};
4use crate::error::DomainError;
5
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
8pub struct ArtifactRef {
9 artifact_id: ArtifactId,
10 digest: ArtifactDigest,
11 size_bytes: ArtifactSizeBytes,
12 media_type: ArtifactMediaType,
13 provenance: ArtifactProvenance,
14}
15
16impl ArtifactRef {
17 #[must_use]
18 pub const fn new(
19 artifact_id: ArtifactId,
20 digest: ArtifactDigest,
21 size_bytes: ArtifactSizeBytes,
22 media_type: ArtifactMediaType,
23 provenance: ArtifactProvenance,
24 ) -> Self {
25 Self {
26 artifact_id,
27 digest,
28 size_bytes,
29 media_type,
30 provenance,
31 }
32 }
33
34 #[must_use]
35 pub const fn artifact_id(&self) -> &ArtifactId {
36 &self.artifact_id
37 }
38
39 #[must_use]
40 pub const fn digest(&self) -> &ArtifactDigest {
41 &self.digest
42 }
43
44 #[must_use]
45 pub const fn size_bytes(&self) -> ArtifactSizeBytes {
46 self.size_bytes
47 }
48
49 #[must_use]
50 pub const fn media_type(&self) -> &ArtifactMediaType {
51 &self.media_type
52 }
53
54 #[must_use]
55 pub const fn provenance(&self) -> &ArtifactProvenance {
56 &self.provenance
57 }
58
59 pub fn validate(&self) -> Result<(), DomainError> {
61 self.provenance.validate()
62 }
63}