Add some fields to recipe view
authorGreg Burri <greg.burri@gmail.com>
Wed, 15 Jan 2025 19:30:19 +0000 (20:30 +0100)
committerGreg Burri <greg.burri@gmail.com>
Wed, 15 Jan 2025 19:30:19 +0000 (20:30 +0100)
backend/.sass-cache/d70ab564c432d2c06df1c9e8f54ea9071c59f25f/style.scssc [new file with mode: 0644]
backend/src/data/db/recipe.rs
backend/src/data/model.rs
backend/src/translation.rs
backend/templates/recipe_view.html
backend/translation.ron

diff --git a/backend/.sass-cache/d70ab564c432d2c06df1c9e8f54ea9071c59f25f/style.scssc b/backend/.sass-cache/d70ab564c432d2c06df1c9e8f54ea9071c59f25f/style.scssc
new file mode 100644 (file)
index 0000000..2675380
Binary files /dev/null and b/backend/.sass-cache/d70ab564c432d2c06df1c9e8f54ea9071c59f25f/style.scssc differ
index 0e41b8f..f474220 100644 (file)
@@ -172,7 +172,7 @@ WHERE [Ingredient].[id] = $1 AND [user_id] = $2
         .map_err(DBError::from)
     }
 
-    pub async fn get_recipe(&self, id: i64, with_groups: bool) -> Result<Option<model::Recipe>> {
+    pub async fn get_recipe(&self, id: i64, complete: bool) -> Result<Option<model::Recipe>> {
         match sqlx::query_as::<_, model::Recipe>(
             r#"
 SELECT
@@ -186,7 +186,8 @@ FROM [Recipe] WHERE [id] = $1
         .fetch_optional(&self.pool)
         .await?
         {
-            Some(mut recipe) if with_groups => {
+            Some(mut recipe) if complete => {
+                recipe.tags = self.get_recipes_tags(id).await?;
                 recipe.groups = self.get_groups(id).await?;
                 Ok(Some(recipe))
             }
index c1aed25..a0aff3b 100644 (file)
@@ -32,6 +32,9 @@ pub struct Recipe {
     pub servings: Option<u32>,
     pub is_published: bool,
 
+    #[sqlx(skip)]
+    pub tags: Vec<String>,
+
     #[sqlx(skip)]
     pub groups: Vec<Group>,
 }
index 7e85874..157a707 100644 (file)
@@ -107,6 +107,11 @@ pub enum Sentence {
     RecipeIngredientQuantity,
     RecipeIngredientUnit,
     RecipeIngredientComment,
+
+    // View Recipe.
+    RecipeOneServing,
+    RecipeSomeServings,
+    RecipeEstimatedTimeMinAbbreviation,
 }
 
 pub const DEFAULT_LANGUAGE_CODE: &str = "en";
index 7a5f7a6..926aa91 100644 (file)
@@ -9,6 +9,31 @@
         <a class="edit-recipe" href="/recipe/edit/{{ recipe.id }}" >Edit</a>
     {% endif %}
 
+    <div class="tags">
+    {% for tag in recipe.tags %}
+        <span class="tag">{{ tag }}</span>
+    {% endfor %}
+    </div>
+
+    {% match recipe.servings %}
+    {% when Some(servings) %}
+        <span class="servings">
+            {% if *servings == 1 %}
+                {{ tr.t(Sentence::RecipeOneServing) }}
+            {% else %}
+                {{ tr.tp(Sentence::RecipeSomeServings, [Box::new(**servings)]) }}
+            {% endif %}
+        </span>
+    {% else %}
+    {% endmatch %}
+
+
+    {% match recipe.estimated_time %}
+    {% when Some(time) %}
+        {{ time +}} {{+ tr.t(Sentence::RecipeEstimatedTimeMinAbbreviation) }}
+    {% else %}
+    {% endmatch %}
+
     {% if !recipe.description.is_empty() %}
         <div class="recipe-description" >
         {{ recipe.description.clone() }}
index 8638f71..dc02b19 100644 (file)
             (RecipeIngredientQuantity, "Quantity"),
             (RecipeIngredientUnit, "Unit"),
             (RecipeIngredientComment, "Comment"),
+
+            (RecipeOneServing, "1 serving"),
+            (RecipeSomeServings, "{} servings"),
+            (RecipeEstimatedTimeMinAbbreviation, "min"),
         ]
     ),
     (
             (RecipeIngredientQuantity, "Quantité"),
             (RecipeIngredientUnit, "Unité"),
             (RecipeIngredientComment, "Commentaire"),
+
+            (RecipeOneServing, "pour 1 personne"),
+            (RecipeSomeServings, "pour {} personnes"),
+            (RecipeEstimatedTimeMinAbbreviation, "min"),
         ]
     )
 ]
\ No newline at end of file