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