From bc93fc81baa3dd0ba34cf08d67f1905d3326dbdb Mon Sep 17 00:00:00 2001 From: jableader Date: Sat, 28 Sep 2024 15:04:12 +1000 Subject: [PATCH] Soft-delete meals --- meals/db.py | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/meals/db.py b/meals/db.py index d39f1c1..96143a9 100644 --- a/meals/db.py +++ b/meals/db.py @@ -36,7 +36,8 @@ async def create(conn): CREATE TABLE IF NOT EXISTS Meal ( id INTEGER PRIMARY KEY, suggested_date TEXT, - consumed_date TEXT + consumed_date TEXT, + deleted_date TEXT DEFAULT NULL );''') await conn.execute(''' @@ -122,7 +123,7 @@ async def find_meal_by_id(conn, meal_id: int) -> Meal: async def find_upcoming_meals_by_date_range(conn, start: datetime, end: datetime) -> AsyncIterator[Meal]: async with conn.execute(f''' SELECT {','.join(Meal.KEYS)} FROM Meal - WHERE suggested_date >= ? AND suggested_date <= ? AND consumed_date IS NULL + WHERE suggested_date >= ? AND suggested_date <= ? AND consumed_date IS NULL AND deleted_date IS NULL ''', (start, end)) as cursor: async for row in cursor: yield await with_purchase_date(conn, Meal(**{k:v for k,v in zip(Meal.KEYS, row)})) @@ -162,24 +163,10 @@ async def load_extra_ingredients(conn, meal: Meal) -> None: async def delete_meal(conn, meal_id: int) -> None: await conn.execute(''' - DELETE FROM MealParticipant - WHERE meal_id = ? - ''', (meal_id,)) - - await conn.execute(''' - DELETE FROM MealRecipe - WHERE meal_id = ? - ''', (meal_id,)) - - await conn.execute(''' - DELETE FROM Ingredient - WHERE meal_id = ? - ''', (meal_id,)) - - await conn.execute(''' - DELETE FROM Meal + UPDATE Meal + SET deleted_date = ? WHERE id = ? - ''', (meal_id,)) + ''', (datetime.datetime.now(), meal_id)) async def sync_extra_ingredients(conn, meal_id: int, ingredients: List[Ingredient]) -> None: await delete_ingredients_by_meal_id(conn, meal_id)