From 99045993fea45aea5905379bb0c6e802eecf9fee Mon Sep 17 00:00:00 2001 From: Colin Goutte Date: Sun, 27 Aug 2023 18:47:57 +0200 Subject: [PATCH] First shot of pagination, try not to brake anything --- crud.py | 2 +- dev.py | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/crud.py b/crud.py index bdaa751..dd85780 100644 --- a/crud.py +++ b/crud.py @@ -39,7 +39,7 @@ def get_movie_by_name(db: Session, name: str = ""): def get_all_movies(db: Session): db_movie = db.query(models.Movie) - return db_movie.all() + return db_movie def get_movie_by_id(db: Session, id_: str = ""): diff --git a/dev.py b/dev.py index d17c339..1487856 100644 --- a/dev.py +++ b/dev.py @@ -114,9 +114,24 @@ async def delete_movie(id_: str, db: Session = Depends(get_db)) -> None: @app.get("/movies/") -async def list_movie(db: Session = Depends(get_db)) -> schemas.MovieObjectsOut: - movies = crud.get_all_movies(db) - count = len(movies) +async def list_movie( + db: Session = Depends(get_db), + pagenum: int | None = None, + pagesize: int | None = None, +) -> schemas.MovieObjectsOut: + paginate_params = {} + + pagination_params = {"pagenum": pagenum, "pagesize": pagesize} + if any(v for v in pagination_params.values() if v is not None): + missing = [name for (name, value) in pagination_params.items() if not value] + if missing: + raise HTTPException(status_code=404, detail=f"No movie found with id {id_}") + + paginate_params = dict(offset=(pagenum - 1) * pagesize, limit=pagesize) + + movies = crud.get_all_movies(db, **paginate_params) + + count = movies.count() return {"movies": movies, "count": count}