search.py 332 B

123456789101112131415
  1. from sqlalchemy import or_
  2. from typing import List
  3. def apply_keyword_search(query, model, keyword: str, fields: List[str]):
  4. if not keyword:
  5. return query
  6. like = f"%{keyword}%"
  7. conditions = [
  8. getattr(model, field).ilike(like)
  9. for field in fields
  10. ]
  11. return query.filter(or_(*conditions))