| 1234567891011121314151617181920212223242526272829 |
- from typing import List, Optional
- from sqlalchemy import or_
- from sqlalchemy.sql import Select
- def apply_keyword_search_stmt(
- stmt: Select,
- model,
- keyword: Optional[str],
- fields: List[str],
- ) -> Select:
- """
- Async / SQLAlchemy 2.0 Select 版本的关键字搜索
- """
- if not keyword:
- return stmt
- like = f"%{keyword}%"
- conditions = [
- getattr(model, field).ilike(like)
- for field in fields
- if hasattr(model, field)
- ]
- if not conditions:
- return stmt
- return stmt.where(or_(*conditions))
|