From 14d07f25fd1c489ae1d2848c7a75c36bc3e98bb5 Mon Sep 17 00:00:00 2001 From: andrei Date: Sat, 5 Oct 2024 16:14:40 +0500 Subject: [PATCH] ._. --- app/core/entities/total_order.py | 4 +++- app/core/usecases/total_order_service.py | 6 ++++-- .../database/repository/total_order_repository.py | 8 +++++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/core/entities/total_order.py b/app/core/entities/total_order.py index 4a2667d..b09f499 100644 --- a/app/core/entities/total_order.py +++ b/app/core/entities/total_order.py @@ -11,7 +11,9 @@ class TotalOrderEntity(BaseModel): price: float user_id: int status_id: int - delivery_orders: Optional[List[int]] = None # + user_login: Optional[str] = None + status_name: Optional[str] = None + delivery_orders: Optional[List[int]] = None class Config: from_attributes = True diff --git a/app/core/usecases/total_order_service.py b/app/core/usecases/total_order_service.py index 307d787..f224e1e 100644 --- a/app/core/usecases/total_order_service.py +++ b/app/core/usecases/total_order_service.py @@ -12,7 +12,7 @@ class TotalOrdersService: self.repository = TotalOrdersRepository(db) def get_all_total_orders(self) -> List[TotalOrderEntity]: - total_orders = self.repository.get_all() + total_orders = self.repository.get_all_with_users_and_statuses() return [ TotalOrderEntity( id=order.id, @@ -22,7 +22,9 @@ class TotalOrdersService: price=order.price, user_id=order.user_id, status_id=order.status_id, - delivery_orders=[do.id for do in order.delivery_orders] if order.delivery_orders else [] + delivery_orders=[do.id for do in order.delivery_orders] if order.delivery_orders else [], + user_login=order.user.login, + status_name=order.status.name, ) for order in total_orders ] diff --git a/app/infrastructure/database/repository/total_order_repository.py b/app/infrastructure/database/repository/total_order_repository.py index 87b2791..1ee4f1e 100644 --- a/app/infrastructure/database/repository/total_order_repository.py +++ b/app/infrastructure/database/repository/total_order_repository.py @@ -1,4 +1,4 @@ -from sqlalchemy.orm import Session +from sqlalchemy.orm import Session, joinedload from app.infrastructure.database.models.total_orders import TotalOrder @@ -9,6 +9,12 @@ class TotalOrdersRepository: def get_all(self): return self.db.query(TotalOrder).all() + def get_all_with_users_and_statuses(self): + return self.db.query(TotalOrder) \ + .options(joinedload(TotalOrder.user)) \ + .options(joinedload(TotalOrder.status)) \ + .all() + def get_by_id(self, total_order_id: int): return self.db.query(TotalOrder).filter(TotalOrder.id == total_order_id).first()