# from typing import List from app import db from app.auth.jwt import get_current_user from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from . import schema, services, validator router = APIRouter(tags=["Users"], prefix="/user") @router.post("/", status_code=status.HTTP_201_CREATED) async def create_user_registration( request: schema.User, database: Session = Depends(db.get_db) ): # Verify the user email doesn't already exist if await validator.verify_email_exist(email=request.email, database=database): raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail="Email already registered" ) # If the email doesn't exist, create a new user new_user = await services.new_user_register(request=request, database=database) return new_user @router.get("/") async def get_all_users( database: Session = Depends(db.get_db), current_user: schema.User = Depends(get_current_user), ): return await services.all_users(database) @router.get("/{id}", response_model=schema.DisplayUser) async def get_user_by_id( id: int, database: Session = Depends(db.get_db), current_user: schema.User = Depends(get_current_user), ): return await services.get_user_by_id(id, database) @router.delete("/{id}", status_code=status.HTTP_204_NO_CONTENT) async def delete_user_by_id( id: int, database: Session = Depends(db.get_db), current_user: schema.User = Depends(get_current_user), ): return await services.delete_user_by_id(id, database)