43 lines
1.9 KiB
Python
43 lines
1.9 KiB
Python
from fastapi import APIRouter, Depends, HTTPException
|
|
from sqlalchemy.orm import Session
|
|
from typing import List
|
|
|
|
from .. import crud, models, schemas
|
|
from ..database import get_db
|
|
|
|
router = APIRouter(
|
|
prefix="/api/celebrities",
|
|
tags=["celebrities"],
|
|
responses={404: {"description": "Not found"}},
|
|
)
|
|
|
|
@router.post("/", response_model=schemas.Celebrity, status_code=201)
|
|
def create_celebrity(celebrity: schemas.CelebrityCreate, db: Session = Depends(get_db)):
|
|
# Qui potresti aggiungere un check per vedere se una celebrità con lo stesso nome esiste già
|
|
return crud.create_celebrity(db=db, celebrity=celebrity)
|
|
|
|
@router.get("/", response_model=List[schemas.Celebrity])
|
|
def read_celebrities(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
|
|
celebrities = crud.get_celebrities(db, skip=skip, limit=limit)
|
|
return celebrities
|
|
|
|
@router.get("/{celebrity_id}", response_model=schemas.Celebrity)
|
|
def read_celebrity(celebrity_id: int, db: Session = Depends(get_db)):
|
|
db_celebrity = crud.get_celebrity(db, celebrity_id=celebrity_id)
|
|
if db_celebrity is None:
|
|
raise HTTPException(status_code=404, detail="Celebrity not found")
|
|
return db_celebrity
|
|
|
|
@router.put("/{celebrity_id}", response_model=schemas.Celebrity)
|
|
def update_celebrity(celebrity_id: int, celebrity: schemas.CelebrityUpdate, db: Session = Depends(get_db)):
|
|
db_celebrity = crud.update_celebrity(db, celebrity_id=celebrity_id, celebrity_update=celebrity)
|
|
if db_celebrity is None:
|
|
raise HTTPException(status_code=404, detail="Celebrity not found")
|
|
return db_celebrity
|
|
|
|
@router.delete("/{celebrity_id}", response_model=schemas.Celebrity)
|
|
def delete_celebrity(celebrity_id: int, db: Session = Depends(get_db)):
|
|
db_celebrity = crud.delete_celebrity(db, celebrity_id=celebrity_id)
|
|
if db_celebrity is None:
|
|
raise HTTPException(status_code=404, detail="Celebrity not found")
|
|
return db_celebrity |