Soft-delete meals

This commit is contained in:
jableader 2024-09-28 15:04:12 +10:00
parent e2a59536b1
commit bc93fc81ba

View file

@ -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)