33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
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
|
|
|
|
|