ddex_core/models/graph/
resource.rs1use crate::models::{
5 common::{Copyright, Identifier, LocalizedString},
6 Extensions,
7};
8use serde::{Deserialize, Serialize};
9
10#[derive(Debug, Clone, Serialize, Deserialize)]
11pub struct Resource {
12 pub resource_reference: String,
13 pub resource_type: ResourceType,
14 pub resource_id: Vec<Identifier>,
15 pub reference_title: Vec<LocalizedString>,
16 pub duration: Option<std::time::Duration>,
17 pub technical_details: Vec<TechnicalDetails>,
18 pub rights_controller: Vec<String>,
19 pub p_line: Vec<Copyright>,
20 pub c_line: Vec<Copyright>,
21 pub extensions: Option<Extensions>,
23}
24
25#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
26pub enum ResourceType {
27 SoundRecording,
28 Video,
29 Image,
30 Text,
31 SheetMusic,
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize)]
35pub struct TechnicalDetails {
36 pub technical_resource_details_reference: String,
37 pub audio_codec: Option<String>,
38 pub bitrate: Option<i32>,
39 pub sample_rate: Option<i32>,
40 pub file_format: Option<String>,
41 pub file_size: Option<u64>,
42 pub extensions: Option<Extensions>,
44}