Dynamic creation pypika.Criterion

435 views Asked by At

I have dataclass for query filters like this

class Filters:
   table: str
   column: str
   value: List[str]
   operation: Operator

when i want load data from diffrent tables from DB i have filters: List[Filters] where filters on different tables can be given. So i want do something like this (pypika.Criterion don't have any add method)

from pypika import Query, Table, Criterion

def build_query(table: str, columns: List[str], filters: List[Query]):
   criterion = pypika.Criterion.any([])
   for filter in filters:
      if filter.table == table:
          criterion.add(Table(table).field(filter.column) operator filter.values)
   return Query._from(table).select(','.join(columns).where(criterion).get_sql(quote_char=None)

Any ideas?

0

There are 0 answers