Ingredients can now be remove from shopping list when a recipe is unscheduled.
This commit is contained in:
parent
a3f2b4a86a
commit
da5ea57787
7 changed files with 92 additions and 36 deletions
|
|
@ -795,7 +795,7 @@ VALUES ($1, $2)
|
|||
recipe_id: i64,
|
||||
date: NaiveDate,
|
||||
servings: u32,
|
||||
add_ingredients_element: bool,
|
||||
add_ingredients_to_shopping_list: bool,
|
||||
) -> Result<AddScheduledRecipeResult> {
|
||||
let mut tx = self.tx().await?;
|
||||
|
||||
|
|
@ -823,7 +823,7 @@ VALUES ($1, $2, $3, $4)
|
|||
}
|
||||
Ok(insert_result) => {
|
||||
|
||||
if add_ingredients_element {
|
||||
if add_ingredients_to_shopping_list {
|
||||
sqlx::query(
|
||||
r#"
|
||||
INSERT INTO [ShoppingEntry] ([ingredient_id], [user_id], [recipe_scheduled_id], [servings])
|
||||
|
|
@ -853,20 +853,42 @@ INSERT INTO [ShoppingEntry] ([ingredient_id], [user_id], [recipe_scheduled_id],
|
|||
user_id: i64,
|
||||
recipe_id: i64,
|
||||
date: NaiveDate,
|
||||
remove_ingredients_from_shopping_list: bool,
|
||||
) -> Result<()> {
|
||||
let mut tx = self.tx().await?;
|
||||
|
||||
if remove_ingredients_from_shopping_list {
|
||||
sqlx::query(
|
||||
r#"
|
||||
DELETE FROM [ShoppingEntry]
|
||||
WHERE [recipe_scheduled_id] IN (
|
||||
SELECT [id] FROM [RecipeScheduled]
|
||||
WHERE [user_id] = $1 AND [recipe_id] = $2 AND [date] = $3
|
||||
)
|
||||
"#,
|
||||
)
|
||||
.bind(user_id)
|
||||
.bind(recipe_id)
|
||||
.bind(date)
|
||||
.execute(&mut *tx)
|
||||
.await?;
|
||||
}
|
||||
|
||||
sqlx::query(
|
||||
r#"
|
||||
DELETE FROM [RecipeScheduled]
|
||||
WHERE [user_id] = $1 AND [recipe_id] = $2 AND [date] = $3
|
||||
DELETE FROM [RecipeScheduled]
|
||||
WHERE [user_id] = $1 AND [recipe_id] = $2 AND [date] = $3
|
||||
"#,
|
||||
)
|
||||
.bind(user_id)
|
||||
.bind(recipe_id)
|
||||
.bind(date)
|
||||
.execute(&self.pool)
|
||||
.await
|
||||
.map(|_| ())
|
||||
.map_err(DBError::from)
|
||||
.execute(&mut *tx)
|
||||
.await?;
|
||||
|
||||
tx.commit().await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn get_scheduled_recipes(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue