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 pydantic import BaseModel
from typing import Optional from typing import Optional, List
from datetime import datetime from datetime import datetime
@ -9,6 +9,8 @@ class DeliveryOrderEntity(BaseModel):
count_trucks: int count_trucks: int
deadline: datetime deadline: datetime
price: float price: float
estimated_route_time_in_minutes: Optional[int] = None
route: Optional[List[dict]] = None
truck_name: Optional[str] = None truck_name: Optional[str] = None
truck_id: Optional[int] = None truck_id: Optional[int] = None
total_order_id: Optional[int] = None total_order_id: Optional[int] = None

View File

@ -22,7 +22,9 @@ class DeliveryOrdersService:
price=round(o.price, 2), price=round(o.price, 2),
truck_id=o.truck_id, truck_id=o.truck_id,
truck_name=o.truck.name, 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 for o in delivery_orders
] ]
@ -38,7 +40,9 @@ class DeliveryOrdersService:
price=o.price, price=o.price,
truck_id=o.truck_id, truck_id=o.truck_id,
truck_name=o.truck.name, 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 for o in delivery_orders
] ]
@ -54,7 +58,10 @@ class DeliveryOrdersService:
price=delivery_order.price, price=delivery_order.price,
truck_id=delivery_order.truck_id, truck_id=delivery_order.truck_id,
truck_name=delivery_order.truck.name, 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 return None
@ -65,7 +72,9 @@ class DeliveryOrdersService:
deadline=entity.deadline, deadline=entity.deadline,
price=entity.price, price=entity.price,
truck_id=entity.truck_id, 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) created_delivery_order = self.repository.create(delivery_order_model)
return DeliveryOrderEntity( return DeliveryOrderEntity(
@ -75,11 +84,14 @@ class DeliveryOrdersService:
deadline=created_delivery_order.deadline, deadline=created_delivery_order.deadline,
price=created_delivery_order.price, price=created_delivery_order.price,
truck_id=created_delivery_order.truck_id, 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[ 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) delivery_order_model = self.repository.get_by_id(delivery_order_id)
if delivery_order_model: if delivery_order_model:
delivery_order_model.order_datetime = entity.order_datetime delivery_order_model.order_datetime = entity.order_datetime
@ -88,6 +100,8 @@ class DeliveryOrdersService:
delivery_order_model.price = entity.price delivery_order_model.price = entity.price
delivery_order_model.truck_id = entity.truck_id delivery_order_model.truck_id = entity.truck_id
delivery_order_model.total_order_id = entity.total_order_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) self.repository.update(delivery_order_model)
return DeliveryOrderEntity( return DeliveryOrderEntity(
id=delivery_order_model.id, id=delivery_order_model.id,
@ -96,7 +110,9 @@ class DeliveryOrdersService:
deadline=delivery_order_model.deadline, deadline=delivery_order_model.deadline,
price=delivery_order_model.price, price=delivery_order_model.price,
truck_id=delivery_order_model.truck_id, 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 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 sqlalchemy.orm import relationship
from app.infrastructure.database.models import Base from app.infrastructure.database.models import Base
@ -12,6 +12,8 @@ class DeliveryOrder(Base):
count_trucks = Column(Integer, nullable=False) count_trucks = Column(Integer, nullable=False)
deadline = Column(DateTime, nullable=False) deadline = Column(DateTime, nullable=False)
price = Column(Float, nullable=False) price = Column(Float, nullable=False)
estimated_route_time_in_minutes = Column(Integer)
route = Column(JSON)
truck_id = Column(Integer, ForeignKey('trucks.id')) truck_id = Column(Integer, ForeignKey('trucks.id'))
total_order_id = Column(Integer, ForeignKey('total_orders.id')) total_order_id = Column(Integer, ForeignKey('total_orders.id'))