ddex_core/models/graph/
resource.rs

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