This commit is contained in:
Андрей Дувакин 2024-10-07 20:27:59 +05:00
parent 4d437e505b
commit 2a473f5d3a
3 changed files with 29 additions and 9 deletions

View File

@ -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

View File

@ -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

View File

@ -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'))