Shopping list items can now be checked/unchecked
This commit is contained in:
parent
3a3288bc93
commit
a1fd63ad08
14 changed files with 940 additions and 790 deletions
|
|
@ -200,7 +200,7 @@ WHERE [Step].[id] IN ({}) AND ([user_id] = $1 OR (SELECT [is_admin] FROM [User]
|
|||
) -> Result<bool> {
|
||||
sqlx::query_scalar(
|
||||
r#"
|
||||
SELECT COUNT(*)
|
||||
SELECT COUNT(*) = 1
|
||||
FROM [Recipe]
|
||||
INNER JOIN [User] ON [User].[id] = [Recipe].[user_id]
|
||||
INNER JOIN [Group] ON [Group].[recipe_id] = [Recipe].[id]
|
||||
|
|
@ -244,6 +244,21 @@ WHERE [Ingredient].[id] IN ({}) AND
|
|||
Ok(query.fetch_one(&self.pool).await? == ingredients_ids.len() as u64)
|
||||
}
|
||||
|
||||
pub async fn can_edit_shopping_list_entry(&self, user_id: i64, entry_id: i64) -> Result<bool> {
|
||||
sqlx::query_scalar(
|
||||
r#"
|
||||
SELECT COUNT(*) = 1
|
||||
FROM [ShoppingEntry]
|
||||
WHERE [id] = $1 AND ([user_id] = $2 OR (SELECT [is_admin] FROM [User] WHERE [id] = $2))
|
||||
"#,
|
||||
)
|
||||
.bind(entry_id)
|
||||
.bind(user_id)
|
||||
.fetch_one(&self.pool)
|
||||
.await
|
||||
.map_err(DBError::from)
|
||||
}
|
||||
|
||||
pub async fn get_recipe(&self, id: i64, complete: bool) -> Result<Option<model::Recipe>> {
|
||||
match sqlx::query_as::<_, model::Recipe>(
|
||||
r#"
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ FROM [ShoppingEntry]
|
|||
LEFT JOIN [RecipeScheduled] ON [RecipeScheduled].[id] = [ShoppingEntry].[recipe_scheduled_id]
|
||||
LEFT JOIN [Recipe] ON [Recipe].[id] = [RecipeScheduled].[recipe_id]
|
||||
WHERE [ShoppingEntry].[user_id] = $1
|
||||
ORDER BY [is_checked], [recipe_id], [name]
|
||||
ORDER BY [is_checked], [recipe_id], [name], [ShoppingEntry].[id]
|
||||
"#,
|
||||
)
|
||||
.bind(user_id)
|
||||
|
|
@ -35,4 +35,14 @@ ORDER BY [is_checked], [recipe_id], [name]
|
|||
.await
|
||||
.map_err(DBError::from)
|
||||
}
|
||||
|
||||
pub async fn set_entry_checked(&self, entry_id: i64, is_checked: bool) -> Result<()> {
|
||||
sqlx::query("UPDATE [ShoppingEntry] SET [is_checked] = $2 WHERE [id] = $1")
|
||||
.bind(entry_id)
|
||||
.bind(is_checked)
|
||||
.execute(&self.pool)
|
||||
.await
|
||||
.map(|_| ())
|
||||
.map_err(DBError::from)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue