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 (
|
CREATE TABLE IF NOT EXISTS Meal (
|
||||||
id INTEGER PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
suggested_date TEXT,
|
suggested_date TEXT,
|
||||||
consumed_date TEXT
|
consumed_date TEXT,
|
||||||
|
deleted_date TEXT DEFAULT NULL
|
||||||
);''')
|
);''')
|
||||||
|
|
||||||
await conn.execute('''
|
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 def find_upcoming_meals_by_date_range(conn, start: datetime, end: datetime) -> AsyncIterator[Meal]:
|
||||||
async with conn.execute(f'''
|
async with conn.execute(f'''
|
||||||
SELECT {','.join(Meal.KEYS)} FROM Meal
|
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:
|
''', (start, end)) as cursor:
|
||||||
async for row in cursor:
|
async for row in cursor:
|
||||||
yield await with_purchase_date(conn, Meal(**{k:v for k,v in zip(Meal.KEYS, row)}))
|
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:
|
async def delete_meal(conn, meal_id: int) -> None:
|
||||||
await conn.execute('''
|
await conn.execute('''
|
||||||
DELETE FROM MealParticipant
|
UPDATE Meal
|
||||||
WHERE meal_id = ?
|
SET deleted_date = ?
|
||||||
''', (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
|
|
||||||
WHERE id = ?
|
WHERE id = ?
|
||||||
''', (meal_id,))
|
''', (datetime.datetime.now(), meal_id))
|
||||||
|
|
||||||
async def sync_extra_ingredients(conn, meal_id: int, ingredients: List[Ingredient]) -> None:
|
async def sync_extra_ingredients(conn, meal_id: int, ingredients: List[Ingredient]) -> None:
|
||||||
await delete_ingredients_by_meal_id(conn, meal_id)
|
await delete_ingredients_by_meal_id(conn, meal_id)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue