initial commit
This commit is contained in:
32
app/api/favorites.py
Normal file
32
app/api/favorites.py
Normal file
@@ -0,0 +1,32 @@
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user