ddex_core/models/graph/
message.rs1use super::{Deal, MessageHeader, Party, Release, Resource};
5use crate::models::{versions::ERNVersion, AttributeMap, Comment, Extensions};
6use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct ERNMessage {
10 pub message_header: MessageHeader,
11 pub parties: Vec<Party>,
12 pub resources: Vec<Resource>,
13 pub releases: Vec<Release>,
14 pub deals: Vec<Deal>,
15 pub version: ERNVersion,
16 pub profile: Option<ERNProfile>,
17 pub message_audit_trail: Option<MessageAuditTrail>,
18 pub attributes: Option<AttributeMap>,
20 pub extensions: Option<Extensions>,
22 pub legacy_extensions: Option<std::collections::HashMap<String, String>>,
24 pub comments: Option<Vec<Comment>>,
25}
26
27#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
28pub enum ERNProfile {
29 AudioAlbum,
30 AudioSingle,
31 Video,
32 Mixed,
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize)]
36pub struct MessageAuditTrail {
37 pub audit_trail_events: Vec<AuditTrailEvent>,
38 pub attributes: Option<AttributeMap>,
40 pub extensions: Option<Extensions>,
42 pub comments: Option<Vec<Comment>>,
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize)]
47pub struct AuditTrailEvent {
48 pub message_audit_trail_event_reference: String,
49 pub message_audit_trail_event_type: String,
50 pub date_time: chrono::DateTime<chrono::Utc>,
51 pub responsible_party_reference: Option<String>,
52 pub attributes: Option<AttributeMap>,
54 pub extensions: Option<Extensions>,
56 pub comments: Option<Vec<Comment>>,
58}
59
60impl ERNMessage {
61 pub fn to_build_request(&self) -> Self {
62 self.clone()
63 }
64}