This commit is contained in:
Андрей Дувакин 2024-10-05 17:07:26 +05:00
parent 14d07f25fd
commit d8a5be41e2
4 changed files with 33 additions and 1 deletions

View File

@ -7,6 +7,8 @@ class DeliveryAccessoryEntity(BaseModel):
queue: int
count: int
accessory_id: Optional[int] = None
accessory_name: Optional[str] = None
city_name: Optional[str] = None
delivery_order_id: Optional[int] = None
class Config:

View File

@ -24,6 +24,21 @@ class DeliveryAccessoriesService:
for da in delivery_accessories
]
def get_all_delivery_accessories_by_order(self, delivery_order_id):
delivery_accessories = self.repository.get_all_by_order_id(delivery_order_id)
return [
DeliveryAccessoryEntity(
id=da.id,
queue=da.queue,
count=da.count,
accessory_id=da.accessory_id,
delivery_order_id=da.delivery_order_id,
accessory_name=da.accessory.name,
city_name=da.accessory.city.name,
)
for da in delivery_accessories
]
def get_delivery_accessory_by_id(self, delivery_accessory_id: int) -> Optional[DeliveryAccessoryEntity]:
delivery_accessory = self.repository.get_by_id(delivery_accessory_id)
if delivery_accessory:

View File

@ -1,4 +1,6 @@
from sqlalchemy.orm import Session
from sqlalchemy.orm import Session, joinedload
from app.infrastructure.database.models.accessory import Accessory
from app.infrastructure.database.models.delivery_accessories import DeliveryAccessory
@ -9,6 +11,12 @@ class DeliveryAccessoriesRepository:
def get_all(self):
return self.db.query(DeliveryAccessory).all()
def get_all_by_order_id(self, delivery_order_id):
return self.db.query(DeliveryAccessory) \
.options(joinedload(DeliveryAccessory.accessory).joinedload(Accessory.city)) \
.filter(DeliveryAccessory.delivery_order_id == delivery_order_id) \
.all()
def get_by_id(self, delivery_accessory_id: int):
return self.db.query(DeliveryAccessory).filter(DeliveryAccessory.id == delivery_accessory_id).first()

View File

@ -19,6 +19,13 @@ def read_delivery_accessories(db: Session = Depends(get_db),
return service.get_all_delivery_accessories()
@router.get("/delivery-orders/{delivery_order_id}/accessories", response_model=List[DeliveryAccessoryEntity])
def get_delivery_accessories_by_order(delivery_order_id: int, db: Session = Depends(get_db),
current_user: User = Depends(verify_token)):
service = DeliveryAccessoriesService(db)
return service.get_all_delivery_accessories_by_order(delivery_order_id)
@router.get("/delivery-accessories/{delivery_accessory_id}", response_model=DeliveryAccessoryEntity)
def read_delivery_accessory(delivery_accessory_id: int, db: Session = Depends(get_db),
current_user: User = Depends(verify_token)):