From 6a931228c3a01b2927ec9c1954f145f44170ea86 Mon Sep 17 00:00:00 2001 From: Colin Goutte Date: Sun, 27 Aug 2023 23:08:35 +0200 Subject: [PATCH] Suggestion : Search with dynamic parameters --- crud.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/crud.py b/crud.py index da99737..1aa702a 100644 --- a/crud.py +++ b/crud.py @@ -42,17 +42,23 @@ def get_all_movies(db: Session): return db_movie.all() -def search_movie(db: Session, term: str): +def search_movie(db: Session, term: str = "", *criterions): + db_movies = db.query(models.Movie) exp = f"%{term}%" # Use regex instead ? still \W is had to escape - db_movie = db.query(models.Movie).where( - sqlalchemy.or_( - models.Movie.title.like(exp), - models.Movie.description.like(exp), + if term: + db_movies = db_movies.where( + sqlalchemy.or_( + models.Movie.title.like(exp), + models.Movie.description.like(exp), + ) ) - ) + # would try the following approache for dynamic search - return db_movie + for colnamename, opname, value in criterions: + db_movies = db_movies.where(getattr(getattr(models.Movie, name), opname)(value)) + + return db_movies def get_movie_by_id(db: Session, id_: str = ""):