Implement 404 on missing id

This commit is contained in:
Colin Goutte 2023-08-25 22:10:43 +02:00
parent 1fd9f7a9a6
commit e40df4886f
2 changed files with 14 additions and 7 deletions

View File

@ -1,5 +1,5 @@
import sqlalchemy
from sqlalchemy.orm import Session
import models
# import schemas
@ -28,5 +28,8 @@ def get_movie_by_id(db: Session, id_: str = ""):
id_ = int(id_)
except ValueError:
pass
db_movie = db.query(models.Movie).filter(models.Movie.id == id_)
return db_movie.one()
try:
db_movie = db.query(models.Movie).filter(models.Movie.id == id_).one()
except sqlalchemy.exc.NoResultFound:
raise LookupError
return db_movie

12
dev.py
View File

@ -1,4 +1,4 @@
from fastapi import FastAPI, Depends, Request
from fastapi import FastAPI, Depends, Request, HTTPException
from sqlalchemy.orm import Session
@ -47,9 +47,13 @@ async def create_movie(
@app.get("/movies/{id_}")
async def get_movie(id_: str, db: Session = Depends(get_db)):
movie = crud.get_movie_by_id(db, id_)
out = {k: v for (k, v) in movie.__dict__.items() if not k.startswith("_")}
return out
try:
movie = crud.get_movie_by_id(db, id_)
out = {k: v for (k, v) in movie.__dict__.items() if not k.startswith("_")}
except LookupError:
raise HTTPException(status_code=404, detail=f"No movie found with id {id_}")
else:
return out
@app.get("/movies/")