ddex_core/models/flat/
release.rs1use super::{ParsedImage, ParsedTrack, ParsedVideo, TerritoryInfo};
5use crate::models::{
6 common::{Copyright, LocalizedString},
7 Extensions,
8};
9use chrono::{DateTime, Utc};
10use serde::{Deserialize, Serialize};
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct ParsedRelease {
14 pub release_id: String,
15 pub identifiers: ReleaseIdentifiers,
16 pub title: Vec<LocalizedString>,
17 pub default_title: String,
18 pub subtitle: Option<Vec<LocalizedString>>,
19 pub default_subtitle: Option<String>,
20 pub display_artist: String,
21 pub artists: Vec<ArtistInfo>,
22 pub release_type: String,
23 pub genre: Option<String>,
24 pub sub_genre: Option<String>,
25 pub tracks: Vec<ParsedTrack>,
26 pub track_count: usize,
27 pub disc_count: Option<usize>,
28 pub videos: Vec<ParsedVideo>,
29 pub images: Vec<ParsedImage>,
30 pub cover_art: Option<ParsedImage>,
31 pub release_date: Option<DateTime<Utc>>,
32 pub original_release_date: Option<DateTime<Utc>>,
33 pub territories: Vec<TerritoryInfo>,
34 pub extensions: Option<Extensions>,
36 pub p_line: Option<Copyright>,
37 pub c_line: Option<Copyright>,
38 pub parent_release: Option<String>,
39 pub child_releases: Vec<String>,
40}
41
42#[derive(Debug, Clone, Serialize, Deserialize)]
43pub struct ReleaseIdentifiers {
44 pub upc: Option<String>,
45 pub ean: Option<String>,
46 pub catalog_number: Option<String>,
47 pub grid: Option<String>,
48 pub proprietary: Vec<ProprietaryId>,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
52pub struct ProprietaryId {
53 pub namespace: String,
54 pub value: String,
55}
56
57#[derive(Debug, Clone, Serialize, Deserialize)]
58pub struct ArtistInfo {
59 pub name: String,
60 pub role: String,
61 pub party_id: Option<String>,
62}