._.
This commit is contained in:
parent
4d437e505b
commit
2a473f5d3a
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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'))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user