# Routes for user. MAIN PART OF THE API from fastapi import APIRouter, HTTPException, status from sqlalchemy.orm import Session from fastapi import Depends from typing import List from schemas.user import UserCreate, ShowUser from db.session import get_db from db.repository.user import create_new_user, list_users, get_user_by_id router = APIRouter() @router.post("/", response_model=ShowUser, status_code=status.HTTP_201_CREATED) def create_user(user: UserCreate, db: Session = Depends(get_db)): user = create_new_user(user=user, db=db) return user @router.get("/", response_model=List[ShowUser], status_code=status.HTTP_200_OK) def get_all_users(db: Session = Depends(get_db), role: str = None): if role == None: users = list_users(db=db) return users users = list_users(db=db, role=role) 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