/
urusai
/
code_sample
Обзор
Документация
Войти
/
urusai
/
code_sample
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/db/utils/query_builder.py
31 строка
974 B
nick
init
30 сен 2024, 16:12
30 сен 2024, 16:12
c68451c
Код
Авторство
О чём код?
from typing import Any, List, Self from sqlalchemy import desc from sqlalchemy.sql import Delete, Select, Update from db.utils.filters import SpecificationABC from const.enums.order_by import BaseOrderBy class QueryBuilder: def __init__(self, stmt): self.stmt = stmt def build(self) -> Select | Update | Delete: return self.stmt def filter(self, values: List[SpecificationABC]) -> Self: for f in values: if f.IS_REQUIRED or f.v: self.stmt = self.stmt.filter(f.is_satisfied()) return self def sort(self, order_by: BaseOrderBy, column: str, columns: dict[str, Any]) -> Self: if order_by and column: if column not in columns: raise Exception("Not found column") if order_by == BaseOrderBy.desc: self.stmt = self.stmt.order_by(desc(columns[column])) self.stmt = self.stmt.order_by(columns[column]) return self