Soft-delete meals
This commit is contained in:
parent
e2a59536b1
commit
bc93fc81ba
1 changed files with 6 additions and 19 deletions
25
meals/db.py
25
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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue