@@ -1,12 +1,12 @@ | |||||
# Routes for user. MAIN PART OF THE API | # Routes for user. MAIN PART OF THE API | ||||
from fastapi import APIRouter, status | |||||
from fastapi import APIRouter, HTTPException, status | |||||
from sqlalchemy.orm import Session | from sqlalchemy.orm import Session | ||||
from fastapi import Depends | from fastapi import Depends | ||||
from typing import List | from typing import List | ||||
from schemas.user import UserCreate, ShowUser | from schemas.user import UserCreate, ShowUser | ||||
from db.session import get_db | from db.session import get_db | ||||
from db.repository.user import create_new_user, list_users | |||||
from db.repository.user import create_new_user, list_users, get_user_by_id | |||||
router = APIRouter() | router = APIRouter() | ||||
@@ -25,3 +25,11 @@ def get_all_users(db: Session = Depends(get_db), role: str = None): | |||||
return users | return users | ||||
users = list_users(db=db, role=role) | users = list_users(db=db, role=role) | ||||
return users | return users | ||||
@router.get("/{user_id}", response_model=ShowUser, status_code=status.HTTP_200_OK) | |||||
def get_user(user_id: int, db: Session = Depends(get_db)): | |||||
user = get_user_by_id(user_id=user_id, db=db) | |||||
if not user: | |||||
raise HTTPException(status_code=404, detail="User not found") | |||||
return user |
@@ -8,12 +8,13 @@ from db.repository.vehicle import ( | |||||
create_new_vehicle, | create_new_vehicle, | ||||
assign_vehicle_driver, | assign_vehicle_driver, | ||||
list_vehicles, | list_vehicles, | ||||
get_vehicle_by_id, | |||||
) | ) | ||||
router = APIRouter() | router = APIRouter() | ||||
@router.post("/new", response_model=OutputVehicle, status_code=status.HTTP_201_CREATED) | |||||
@router.post("/", response_model=OutputVehicle, status_code=status.HTTP_201_CREATED) | |||||
async def create_vehicle(vehicle: CreateVehicle, db: Session = Depends(get_db)): | async def create_vehicle(vehicle: CreateVehicle, db: Session = Depends(get_db)): | ||||
vehicle = create_new_vehicle(vehicle=vehicle, db=db) | vehicle = create_new_vehicle(vehicle=vehicle, db=db) | ||||
return vehicle | return vehicle | ||||
@@ -67,3 +68,13 @@ async def assign_driver(vehicle_id: int, driver_id: int, db: Session = Depends(g | |||||
async def get_all_vehicles(db: Session = Depends(get_db)): | async def get_all_vehicles(db: Session = Depends(get_db)): | ||||
vehicles = list_vehicles(db=db) | vehicles = list_vehicles(db=db) | ||||
return vehicles | return vehicles | ||||
@router.get( | |||||
"/{vehicle_id}", response_model=OutputVehicle, status_code=status.HTTP_200_OK | |||||
) | |||||
async def get_vehicle(vehicle_id: int, db: Session = Depends(get_db)): | |||||
vehicle = get_vehicle_by_id(vehicle_id=vehicle_id, db=db) | |||||
if not vehicle: | |||||
raise HTTPException(status_code=404, detail="Vehicle not found") | |||||
return vehicle |
@@ -23,6 +23,11 @@ def create_new_user(user: UserCreate, db: Session): | |||||
return user_object | return user_object | ||||
def get_user_by_id(user_id: int, db: Session): | |||||
user = db.query(User).filter(User.Id == user_id).first() | |||||
return user | |||||
def verify_driver_exists(driver_id: int, db: Session): | def verify_driver_exists(driver_id: int, db: Session): | ||||
driver = db.query(User).filter(User.Id == driver_id).first() | driver = db.query(User).filter(User.Id == driver_id).first() | ||||
if not driver: | if not driver: | ||||
@@ -40,3 +40,8 @@ def assign_vehicle_driver(vehicle_id: int, driver_id: int, db: Session): | |||||
def list_vehicles(db: Session): | def list_vehicles(db: Session): | ||||
vehicles = db.query(Vehicle).all() | vehicles = db.query(Vehicle).all() | ||||
return vehicles | return vehicles | ||||
def get_vehicle_by_id(vehicle_id: int, db: Session): | |||||
vehicle = db.query(Vehicle).filter(Vehicle.Id == vehicle_id).first() | |||||
return vehicle |