rgc_chart/models/generic/
metadata.rs1use 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}