from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from typing import List from core.database import get_core_db from core.security import get_current_user from .dto import DriverCreateDTO, DriverResponseDTO from .services import DriverService router = APIRouter(prefix="/drivers", tags=["Drivers"]) @router.get("/", response_model=List[DriverResponseDTO]) async def list_drivers( db: Session = Depends(get_core_db), current_user: dict = Depends(get_current_user) ): return db.query(DriverService).all() @router.get("/{transporter_key}/{line}", response_model=DriverResponseDTO) async def read_driver( transporter_key: str, line: int, db: Session = Depends(get_core_db), current_user: dict = Depends(get_current_user) ): driver = DriverService.get_driver_by_key_and_line(db, transporter_key, line) if not driver: raise HTTPException(status_code=404, detail="Driver not found") return driver @router.post("/", response_model=DriverResponseDTO, status_code=status.HTTP_201_CREATED) async def create_driver( driver_data: DriverCreateDTO, db: Session = Depends(get_core_db), current_user: dict = Depends(get_current_user) ): return DriverService.create_driver(db, driver_data) @router.delete("/{transporter_key}/{line}", status_code=status.HTTP_204_NO_CONTENT) async def delete_driver( transporter_key: str, line: int, db: Session = Depends(get_core_db), current_user: dict = Depends(get_current_user) ): driver = DriverService.delete_driver(db, transporter_key, line) if not driver: raise HTTPException(status_code=404, detail="Driver not found")