From 00beba1b43525bdfe39d335ad604bbe4d0356039 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 7 Oct 2024 21:29:51 +0500 Subject: [PATCH] ._. --- app/core/entities/delivery_order.py | 2 +- app/core/entities/update_route_request.py | 12 ++++++++++++ app/core/usecases/delivery_order_service.py | 11 ++++++++--- app/infrastructure/fastapi/delivery_order_routes.py | 12 ++++++++---- 4 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 app/core/entities/update_route_request.py diff --git a/app/core/entities/delivery_order.py b/app/core/entities/delivery_order.py index 6fab3d6..b422ec0 100644 --- a/app/core/entities/delivery_order.py +++ b/app/core/entities/delivery_order.py @@ -10,7 +10,7 @@ class DeliveryOrderEntity(BaseModel): deadline: datetime price: float estimated_route_time_in_minutes: Optional[int] = None - route: Optional[List[dict]] = None + route: Optional[List[List[float]]] = None truck_name: Optional[str] = None truck_id: Optional[int] = None total_order_id: Optional[int] = None diff --git a/app/core/entities/update_route_request.py b/app/core/entities/update_route_request.py new file mode 100644 index 0000000..41a4002 --- /dev/null +++ b/app/core/entities/update_route_request.py @@ -0,0 +1,12 @@ +from typing import List + +from pydantic import BaseModel + + +class UpdateRouteRequest(BaseModel): + estimated_route_time_in_minutes: float + route: List[List[float]] + + class Config: + from_attributes = True + diff --git a/app/core/usecases/delivery_order_service.py b/app/core/usecases/delivery_order_service.py index ec0fd6f..6ad05e8 100644 --- a/app/core/usecases/delivery_order_service.py +++ b/app/core/usecases/delivery_order_service.py @@ -116,13 +116,18 @@ class DeliveryOrdersService: ) return None - def update_delivery_order_route(self, delivery_order_id: int, estimated_route_time_in_minutes: Optional[int], - route: Optional[List[dict]]) -> Optional[DeliveryOrderEntity]: + def update_delivery_order_route( + self, + delivery_order_id: int, + estimated_route_time_in_minutes: float, + route: List[List[float]] + ) -> Optional[DeliveryOrderEntity]: + delivery_order_model = self.repository.get_by_id(delivery_order_id) if delivery_order_model: if estimated_route_time_in_minutes is not None: - delivery_order_model.estimated_route_time_in_minutes = estimated_route_time_in_minutes + delivery_order_model.estimated_route_time_in_minutes = round(estimated_route_time_in_minutes) if route is not None: delivery_order_model.route = route diff --git a/app/infrastructure/fastapi/delivery_order_routes.py b/app/infrastructure/fastapi/delivery_order_routes.py index 522c256..dd3be4a 100644 --- a/app/infrastructure/fastapi/delivery_order_routes.py +++ b/app/infrastructure/fastapi/delivery_order_routes.py @@ -3,6 +3,7 @@ from typing import List from fastapi import APIRouter, HTTPException, Depends from sqlalchemy.orm import Session +from app.core.entities.update_route_request import UpdateRouteRequest from app.core.usecases.auth_service import verify_token from app.infrastructure.database.dependencies import get_db from app.core.entities.delivery_order import DeliveryOrderEntity @@ -69,14 +70,17 @@ def delete_delivery_order(delivery_order_id: int, db: Session = Depends(get_db), @router.put("/delivery-orders/{delivery_order_id}/route", response_model=DeliveryOrderEntity) def update_delivery_order_route( delivery_order_id: int, - estimated_route_time_in_minutes: int, - route: List[dict], + request: UpdateRouteRequest, db: Session = Depends(get_db), current_user: User = Depends(verify_token) ): service = DeliveryOrdersService(db) - updated_delivery_order = service.update_delivery_order_route(delivery_order_id, estimated_route_time_in_minutes, - route) + updated_delivery_order = service.update_delivery_order_route( + delivery_order_id, + request.estimated_route_time_in_minutes, + request.route + ) + if updated_delivery_order is None: raise HTTPException(status_code=404, detail="Delivery order not found") return updated_delivery_order