Skip to main content

rgc_chart/models/generic/
metadata.rs

1use crate::wasm_bindgen;
2use crate::models::common::ChartDefaults;
3
4#[wasm_bindgen]
5#[derive(Debug, Clone)]
6pub struct Metadata {
7    #[wasm_bindgen(getter_with_clone)]
8    pub title: String,
9    #[wasm_bindgen(getter_with_clone)]
10    pub alt_title: String,
11    #[wasm_bindgen(getter_with_clone)]
12    pub artist: String,
13    #[wasm_bindgen(getter_with_clone)]
14    pub alt_artist: String,
15    #[wasm_bindgen(getter_with_clone)]
16    pub creator: String,
17    #[wasm_bindgen(getter_with_clone)]
18    pub genre: String,
19    #[wasm_bindgen(getter_with_clone)]
20    pub tags: Vec<String>,
21    #[wasm_bindgen(getter_with_clone)]
22    pub source: String,
23}
24
25impl Metadata {
26    #[allow(clippy::too_many_arguments)]
27    pub fn new(
28        title: String,
29        alt_title: String,
30        artist: String,
31        alt_artist: String,
32        creator: String,
33        genre: String,
34        source: String,
35        tags: Vec<String>,
36    ) -> Self {
37        Self {
38            title,
39            alt_title,
40            artist,
41            alt_artist,
42            creator,
43            genre,
44            source,
45            tags,  
46        }
47    }
48
49    pub fn empty() -> Self {
50        Self {
51            title: ChartDefaults::TITLE.to_string(),
52            alt_title: String::new(),
53            artist: ChartDefaults::ARTIST.to_string(),
54            alt_artist: String::new(),
55            creator: ChartDefaults::CREATOR.to_string(),
56            genre: ChartDefaults::GENRE.to_string(),
57            source: ChartDefaults::SOURCE.to_string(),
58            tags: Vec::with_capacity(5),
59        }
60    }
61}