from sqlalchemy import or_ from typing import Type from server.db.models.base import Base def generate_filter_or_in(table: Type[Base], **params): """Generate OR filter for ID lists. Args: table: Table. params: Field's name to values list mapping. Returns: Filter or None. """ filter_list = [] for field_name, value_list in params.items(): if value_list: filter_list.append(getattr(table, field_name).in_(value_list)) if not filter_list: return if len(filter_list) > 1: return or_(*filter_list) return filter_list[0]