Refaktoring

This commit is contained in:
Michal Kváček
2023-10-14 22:42:51 +02:00
parent 7f7f79dad6
commit bc258efa3a
16 changed files with 274 additions and 184 deletions
+31
View File
@@ -0,0 +1,31 @@
from typing import Optional, Type
from sqlalchemy import select
from database import models
class QueryBuilder:
def __init__(self, model: Type[models.BaseModel]):
self.model = model
def get_simple_query(
self,
extra_select: Optional[list] = None,
created_by_id: Optional[int] = None,
order_by: Optional[list] = None,
include_deleted: bool = False
):
if not extra_select:
extra_select = []
query = select(self.model, *extra_select)
if not include_deleted and hasattr(self.model, "deleted"):
query = query.filter(self.model.deleted.is_(False))
if hasattr(self.model, "created_by_id") and created_by_id:
query = query.filter(self.model.created_by_id == created_by_id)
if order_by:
query = query.order_by(*order_by)
return query