isbnlib/jsonb/
translated_titles.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use serde::{Deserialize, Serialize};

use crate::jsonb::key_value_block::KeyValueBlock;

#[derive(
    Serialize,
    Deserialize,
    Debug,
    Clone,
    PartialEq,
)]
pub struct TranslatedTitles {
    pub text: String,
    #[serde(rename(deserialize = "type"))]
    pub value_type: KeyValueBlock,
    pub language: Option<KeyValueBlock>
}

impl TranslatedTitles {
    pub fn to_json(self) -> serde_json::Value {
        let lang = match self.language {
            Some(block) => block.key,
            None => String::new(),
        };
        serde_json::json!({
            "title": self.text,
            "language": lang
        })
    }

}