TICKET-008 (backend): POST /api/foods/{id}/restore — idempotent, history intact
This commit is contained in:
@@ -165,6 +165,21 @@ def delete_food(db: Session, food_id: int) -> FoodRead | None:
|
||||
return FoodRead.model_validate(food)
|
||||
|
||||
|
||||
def restore_food(db: Session, food_id: int) -> FoodRead | None:
|
||||
"""Restore a soft-deleted food: clears deleted_at (spec §3.1).
|
||||
Idempotent — restoring a live food just returns it. Returns None if not found."""
|
||||
food = db.get(Food, food_id)
|
||||
if food is None:
|
||||
return None
|
||||
|
||||
if food.deleted_at is not None:
|
||||
food.deleted_at = None
|
||||
food.updated_at = datetime.now(timezone.utc).replace(tzinfo=None)
|
||||
db.commit()
|
||||
db.refresh(food)
|
||||
return FoodRead.model_validate(food)
|
||||
|
||||
|
||||
# ── Recent foods (TICKET-006) ────────────────────────────────────────────────
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user