from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from ..db import get_db from ..models import Favorite, Grave from ..schemas import FavoriteCreate, FavoriteOut from ..dependencies import get_current_user router = APIRouter() @router.get("/", response_model=list[FavoriteOut]) def list_favorites(db: Session = Depends(get_db), user=Depends(get_current_user)): return db.query(Favorite).filter(Favorite.user_id == user.id).all() @router.post("/", response_model=FavoriteOut) def add_favorite(payload: FavoriteCreate, db: Session = Depends(get_db), user=Depends(get_current_user)): grave = db.query(Grave).get(payload.grave_id) if not grave: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Grave not found") existing = db.query(Favorite).filter(Favorite.user_id == user.id, Favorite.grave_id == payload.grave_id).first() if existing: return existing fav = Favorite(user_id=user.id, grave_id=payload.grave_id) db.add(fav) db.commit() db.refresh(fav) return fav