ddex_core/models/graph/
party.rs

1// core/src/models/graph/party.rs
2//! Party types
3
4use crate::models::common::{Identifier, LocalizedString};
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct Party {
9    pub party_id: Vec<Identifier>,
10    pub isni: Option<String>,
11    pub ipi: Option<String>,
12    pub party_name: Vec<LocalizedString>,
13    pub party_role: Vec<PartyRole>,
14    pub contact_details: Option<ContactDetails>,
15}
16
17#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
18pub enum PartyRole {
19    Artist,
20    Producer,
21    Composer,
22    Lyricist,
23    Publisher,
24    Performer,
25    Engineer,
26    Label,
27    Distributor,
28    Other(String),
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
32pub struct ContactDetails {
33    pub email: Option<String>,
34    pub phone: Option<String>,
35    pub address: Option<String>,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
39pub struct Artist {
40    pub party_reference: Option<String>,
41    pub artist_role: Vec<String>,
42    pub display_artist_name: Vec<LocalizedString>,
43    pub sequence_number: Option<i32>,
44}