|
|
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) |
|
|
): |
|
|
|
|
|
if await validator.verify_email_exist(email=request.email, database=database): |
|
|
raise HTTPException( |
|
|
status_code=status.HTTP_400_BAD_REQUEST, detail="Email already registered" |
|
|
) |
|
|
|
|
|
|
|
|
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) |
|
|
|