recipes/api/src/domain/ingredient/types.rs

31 lines
775 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::try_from((db, Lang::Rus)).unwrap()
}
}
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(),
}
}
}