This commit is contained in:
Андрей Дувакин 2024-10-05 15:07:33 +05:00
parent ce21c1b85b
commit 674fe63a1f
5 changed files with 36 additions and 8 deletions

View File

@ -6,7 +6,7 @@ from datetime import datetime
class DeliveryOrderEntity(BaseModel): class DeliveryOrderEntity(BaseModel):
id: Optional[int] = None id: Optional[int] = None
order_datetime: datetime order_datetime: datetime
count_robots: int count_trucks: int
deadline: datetime deadline: datetime
price: float price: float
truck_id: Optional[int] = None truck_id: Optional[int] = None

View File

@ -17,7 +17,22 @@ class DeliveryOrdersService:
DeliveryOrderEntity( DeliveryOrderEntity(
id=o.id, id=o.id,
order_datetime=o.order_datetime, order_datetime=o.order_datetime,
count_robots=o.count_robots, count_trucks=o.count_trucks,
deadline=o.deadline,
price=o.price,
truck_id=o.truck_id,
total_order_id=o.total_order_id
)
for o in delivery_orders
]
def get_delivery_order_by_total_order_id(self, total_order_id):
delivery_orders = self.repository.get_all_by_total_order_id(total_order_id)
return [
DeliveryOrderEntity(
id=o.id,
order_datetime=o.order_datetime,
count_trucks=o.count_trucks,
deadline=o.deadline, deadline=o.deadline,
price=o.price, price=o.price,
truck_id=o.truck_id, truck_id=o.truck_id,
@ -32,7 +47,7 @@ class DeliveryOrdersService:
return DeliveryOrderEntity( return DeliveryOrderEntity(
id=delivery_order.id, id=delivery_order.id,
order_datetime=delivery_order.order_datetime, order_datetime=delivery_order.order_datetime,
count_robots=delivery_order.count_robots, count_trucks=delivery_order.count_trucks,
deadline=delivery_order.deadline, deadline=delivery_order.deadline,
price=delivery_order.price, price=delivery_order.price,
truck_id=delivery_order.truck_id, truck_id=delivery_order.truck_id,
@ -43,7 +58,7 @@ class DeliveryOrdersService:
def create_delivery_order(self, entity: DeliveryOrderEntity) -> DeliveryOrderEntity: def create_delivery_order(self, entity: DeliveryOrderEntity) -> DeliveryOrderEntity:
delivery_order_model = DeliveryOrder( delivery_order_model = DeliveryOrder(
order_datetime=entity.order_datetime, order_datetime=entity.order_datetime,
count_robots=entity.count_robots, count_trucks=entity.count_trucks,
deadline=entity.deadline, deadline=entity.deadline,
price=entity.price, price=entity.price,
truck_id=entity.truck_id, truck_id=entity.truck_id,
@ -53,7 +68,7 @@ class DeliveryOrdersService:
return DeliveryOrderEntity( return DeliveryOrderEntity(
id=created_delivery_order.id, id=created_delivery_order.id,
order_datetime=created_delivery_order.order_datetime, order_datetime=created_delivery_order.order_datetime,
count_robots=created_delivery_order.count_robots, count_trucks=created_delivery_order.count_trucks,
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,
@ -65,7 +80,7 @@ class DeliveryOrdersService:
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
delivery_order_model.count_robots = entity.count_robots delivery_order_model.count_trucks = entity.count_trucks
delivery_order_model.deadline = entity.deadline delivery_order_model.deadline = entity.deadline
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
@ -74,7 +89,7 @@ class DeliveryOrdersService:
return DeliveryOrderEntity( return DeliveryOrderEntity(
id=delivery_order_model.id, id=delivery_order_model.id,
order_datetime=delivery_order_model.order_datetime, order_datetime=delivery_order_model.order_datetime,
count_robots=delivery_order_model.count_robots, count_trucks=delivery_order_model.count_trucks,
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,

View File

@ -9,7 +9,7 @@ class DeliveryOrder(Base):
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
order_datetime = Column(DateTime, nullable=False) order_datetime = Column(DateTime, nullable=False)
count_robots = 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)

View File

@ -9,6 +9,9 @@ class DeliveryOrdersRepository:
def get_all(self): def get_all(self):
return self.db.query(DeliveryOrder).all() return self.db.query(DeliveryOrder).all()
def get_all_by_total_order_id(self, total_order_id):
return self.db.query(DeliveryOrder).filter(DeliveryOrder.total_order_id == total_order_id).all()
def get_by_id(self, delivery_order_id: int): def get_by_id(self, delivery_order_id: int):
return self.db.query(DeliveryOrder).filter(DeliveryOrder.id == delivery_order_id).first() return self.db.query(DeliveryOrder).filter(DeliveryOrder.id == delivery_order_id).first()

View File

@ -29,6 +29,16 @@ def read_delivery_order(delivery_order_id: int, db: Session = Depends(get_db),
return delivery_order return delivery_order
@router.get("/delivery-orders/total/{total_order_id}", response_model=List[DeliveryOrderEntity])
def read_delivery_order_by_total(total_order_id: int, db: Session = Depends(get_db),
current_user: User = Depends(verify_token)):
service = DeliveryOrdersService(db)
delivery_order = service.get_delivery_order_by_total_order_id(total_order_id)
if delivery_order is None:
raise HTTPException(status_code=404, detail="Delivery order not found")
return delivery_order
@router.post("/delivery-orders", response_model=DeliveryOrderEntity) @router.post("/delivery-orders", response_model=DeliveryOrderEntity)
def create_delivery_order(delivery_order: DeliveryOrderEntity, db: Session = Depends(get_db), def create_delivery_order(delivery_order: DeliveryOrderEntity, db: Session = Depends(get_db),
current_user: User = Depends(verify_token)): current_user: User = Depends(verify_token)):