From 2a473f5d3a9906829b83bcb20d930304cc0613d2 Mon Sep 17 00:00:00 2001 From: andrei Date: Mon, 7 Oct 2024 20:27:59 +0500 Subject: [PATCH] ._. --- app/core/entities/delivery_order.py | 4 ++- app/core/usecases/delivery_order_service.py | 30 ++++++++++++++----- .../database/models/delivery_orders.py | 4 ++- 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/app/core/entities/delivery_order.py b/app/core/entities/delivery_order.py index 9b27712..6fab3d6 100644 --- a/app/core/entities/delivery_order.py +++ b/app/core/entities/delivery_order.py @@ -1,5 +1,5 @@ from pydantic import BaseModel -from typing import Optional +from typing import Optional, List from datetime import datetime @@ -9,6 +9,8 @@ class DeliveryOrderEntity(BaseModel): count_trucks: int deadline: datetime price: float + estimated_route_time_in_minutes: Optional[int] = None + route: Optional[List[dict]] = None truck_name: Optional[str] = None truck_id: Optional[int] = None total_order_id: Optional[int] = None diff --git a/app/core/usecases/delivery_order_service.py b/app/core/usecases/delivery_order_service.py index 4ff3b4c..08e3c43 100644 --- a/app/core/usecases/delivery_order_service.py +++ b/app/core/usecases/delivery_order_service.py @@ -22,7 +22,9 @@ class DeliveryOrdersService: price=round(o.price, 2), truck_id=o.truck_id, truck_name=o.truck.name, - total_order_id=o.total_order_id + total_order_id=o.total_order_id, + estimated_route_time_in_minutes=o.estimated_route_time_in_minutes, + route=o.route, ) for o in delivery_orders ] @@ -38,7 +40,9 @@ class DeliveryOrdersService: price=o.price, truck_id=o.truck_id, truck_name=o.truck.name, - total_order_id=o.total_order_id + total_order_id=o.total_order_id, + estimated_route_time_in_minutes=o.estimated_route_time_in_minutes, + route=o.route, ) for o in delivery_orders ] @@ -54,7 +58,10 @@ class DeliveryOrdersService: price=delivery_order.price, truck_id=delivery_order.truck_id, truck_name=delivery_order.truck.name, - total_order_id=delivery_order.total_order_id + total_order_id=delivery_order.total_order_id, + estimated_route_time_in_minutes=delivery_order.estimated_route_time_in_minutes, + route=delivery_order.route, + ) return None @@ -65,7 +72,9 @@ class DeliveryOrdersService: deadline=entity.deadline, price=entity.price, truck_id=entity.truck_id, - total_order_id=entity.total_order_id + total_order_id=entity.total_order_id, + estimated_route_time_in_minutes=entity.estimated_route_time_in_minutes, + route=entity.route, ) created_delivery_order = self.repository.create(delivery_order_model) return DeliveryOrderEntity( @@ -75,11 +84,14 @@ class DeliveryOrdersService: deadline=created_delivery_order.deadline, price=created_delivery_order.price, truck_id=created_delivery_order.truck_id, - total_order_id=created_delivery_order.total_order_id + total_order_id=created_delivery_order.total_order_id, + estimated_route_time_in_minutes=created_delivery_order.estimated_route_time_in_minutes, + route=created_delivery_order.route, ) def update_delivery_order(self, delivery_order_id: int, entity: DeliveryOrderEntity) -> Optional[ - DeliveryOrderEntity]: + DeliveryOrderEntity + ]: delivery_order_model = self.repository.get_by_id(delivery_order_id) if delivery_order_model: delivery_order_model.order_datetime = entity.order_datetime @@ -88,6 +100,8 @@ class DeliveryOrdersService: delivery_order_model.price = entity.price delivery_order_model.truck_id = entity.truck_id delivery_order_model.total_order_id = entity.total_order_id + delivery_order_model.estimated_route_time_in_minutes = entity.estimated_route_time_in_minutes + delivery_order_model.route = entity.route self.repository.update(delivery_order_model) return DeliveryOrderEntity( id=delivery_order_model.id, @@ -96,7 +110,9 @@ class DeliveryOrdersService: deadline=delivery_order_model.deadline, price=delivery_order_model.price, truck_id=delivery_order_model.truck_id, - total_order_id=delivery_order_model.total_order_id + total_order_id=delivery_order_model.total_order_id, + estimated_route_time_in_minutes=delivery_order_model.estimated_route_time_in_minutes, + route=delivery_order_model.route, ) return None diff --git a/app/infrastructure/database/models/delivery_orders.py b/app/infrastructure/database/models/delivery_orders.py index db6853d..ca1bf8f 100644 --- a/app/infrastructure/database/models/delivery_orders.py +++ b/app/infrastructure/database/models/delivery_orders.py @@ -1,4 +1,4 @@ -from sqlalchemy import Column, Integer, DateTime, ForeignKey, Float +from sqlalchemy import Column, Integer, DateTime, ForeignKey, Float, JSON from sqlalchemy.orm import relationship from app.infrastructure.database.models import Base @@ -12,6 +12,8 @@ class DeliveryOrder(Base): count_trucks = Column(Integer, nullable=False) deadline = Column(DateTime, nullable=False) price = Column(Float, nullable=False) + estimated_route_time_in_minutes = Column(Integer) + route = Column(JSON) truck_id = Column(Integer, ForeignKey('trucks.id')) total_order_id = Column(Integer, ForeignKey('total_orders.id'))