31 lines
762 B
Rust
31 lines
762 B
Rust
use crate::domain::misc_types::Lang;
|
|
|
|
#[derive(Debug, Clone, Serialize)]
|
|
pub struct Ingredient {
|
|
pub key: String,
|
|
pub lang: Lang,
|
|
pub name: String,
|
|
}
|
|
|
|
impl From<&db::data::Ingredient> for Ingredient {
|
|
fn from(db: &db::data::Ingredient) -> Self {
|
|
Self::from((db, Lang::Rus))
|
|
}
|
|
}
|
|
|
|
impl From<(&db::data::Ingredient, Lang)> for Ingredient {
|
|
fn from((db, lang): (&db::data::Ingredient, Lang)) -> Self {
|
|
let tr = &db.translates;
|
|
let name = match lang {
|
|
Lang::Rus => tr.rus,
|
|
Lang::Eng => tr.eng.unwrap_or(tr.rus),
|
|
};
|
|
|
|
Self {
|
|
key: db.key.to_string(),
|
|
lang: if name == tr.rus { Lang::Rus } else { lang },
|
|
name: name.to_string(),
|
|
}
|
|
}
|
|
}
|