ddex_core/models/graph/
resource.rs

1// core/src/models/graph/resource.rs
2//! Resource types
3
4use 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    /// Extensions for resource
19    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    /// Extensions for technical details
40    pub extensions: Option<Extensions>,
41}