""" Discard API router """ from fastapi import APIRouter, Depends, HTTPException from sqlalchemy import select, and_ from sqlalchemy.ext.asyncio import AsyncSession from datetime import datetime from app.database import get_db from app.models import Photo router = APIRouter() @router.get("") async def list_discarded(db: AsyncSession = Depends(get_db)): """List discarded photos""" result = await db.execute( select(Photo).where(Photo.is_discarded == True) ) photos = result.scalars().all() return photos @router.post("/restore") async def restore_photos(photo_ids: list[str], db: AsyncSession = Depends(get_db)): """Restore photos from the discard pile""" result = await db.execute( select(Photo).where(and_(Photo.id.in_(photo_ids), Photo.is_discarded == True)) ) photos = result.scalars().all() for photo in photos: photo.is_discarded = False photo.discarded_at = None await db.commit() return {"status": "success", "restored": len(photos)} @router.delete("/empty") async def empty_discard(db: AsyncSession = Depends(get_db)): """Permanently delete all discarded photos""" result = await db.execute( select(Photo).where(Photo.is_discarded == True) ) photos = result.scalars().all() for photo in photos: await db.delete(photo) await db.commit() return {"status": "success", "deleted": len(photos)}