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 = ""):