|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- from fastapi import APIRouter, status, HTTPException
- from sqlalchemy.orm import Session
- from fastapi import Depends
- from typing import List
- from db.session import get_db
- from schemas.vehicle import OutputVehicle, CreateVehicle
- from db.repository.vehicle import (
- create_new_vehicle,
- assign_vehicle_driver,
- list_vehicles,
- )
-
- router = APIRouter()
-
-
- @router.post("/new", response_model=OutputVehicle, status_code=status.HTTP_201_CREATED)
- async def create_vehicle(vehicle: CreateVehicle, db: Session = Depends(get_db)):
- vehicle = create_new_vehicle(vehicle=vehicle, db=db)
- return vehicle
-
-
- @router.get(
- "/assign/{vehicle_id}/{driver_id}",
- response_model=OutputVehicle,
- status_code=status.HTTP_200_OK,
- )
- async def assign_drver(vehicle_id: int, driver_id: int, db: Session = Depends(get_db)):
- vehicle = assign_vehicle_driver(vehicle_id=vehicle_id, driver_id=driver_id, db=db)
- if vehicle == "nodriver":
- raise HTTPException(
- status_code=404, detail=f"Driver with id {driver_id} not found"
- )
- if vehicle == "novehicle":
- raise HTTPException(
- status_code=404, detail=f"Vehicle with id {vehicle_id} not found"
- )
- if vehicle == "alreadyassigned":
- raise HTTPException(
- status_code=400,
- detail=f"Driver with id {driver_id} is already assigned to vehicle with id {vehicle_id}",
- )
- return vehicle
-
-
- @router.get("/", response_model=List[OutputVehicle], status_code=status.HTTP_200_OK)
- async def get_all_vehicles(db: Session = Depends(get_db)):
- vehicles = list_vehicles(db=db)
- return vehicles
|