Spaces:
Running
Running
File size: 3,357 Bytes
2f43b92 15ea62b 0359012 f1cd69e 0359012 a854ef9 15ea62b 0359012 15ea62b d67439e 0359012 d1d97b7 0359012 d1d97b7 0359012 15ea62b f1cd69e 0359012 35e685d 0359012 35e685d 0359012 4e4ad14 0359012 35e685d 0359012 35e685d 0359012 35e685d 15ea62b 0359012 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | from uuid import UUID
from fastapi import APIRouter, status, Depends, HTTPException
from sqlalchemy.orm import Session
from app.api.models.user import (
User,
UserResponse,
PasswordUpdate,
UserDeletedResponse,
User_GET_TOKEN,
Response_Token,
)
from app.core.database import get_db
from app.core.models.User import UserController
from app.utils import logger
router = APIRouter()
@router.post("/", status_code=status.HTTP_201_CREATED, response_model=UserResponse)
async def create_user(user: User, db: Session = Depends(get_db)):
try:
USER = UserController(db)
USER.create(
username=user.username,
email=user.email,
password=user.password,
)
return UserResponse.model_validate(USER.details())
except HTTPException as exc:
logger.error(exc)
raise exc
except Exception as exc:
logger.error(exc)
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc)
) from exc
@router.post(
"/get_token", status_code=status.HTTP_200_OK, response_model=Response_Token
)
async def get_user_token(user: User_GET_TOKEN, db: Session = Depends(get_db)):
try:
USER = UserController(db)
token = USER.read_token(user.email, user.password)
return {"token": token}
except HTTPException as exc:
logger.error(exc)
raise exc
except Exception as exc:
logger.error(exc)
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc)
) from exc
@router.get("/{user_id}/", status_code=status.HTTP_200_OK, response_model=UserResponse)
async def read_user(user_id: UUID, db: Session = Depends(get_db)):
try:
USER = UserController(db)
USER.read(user_id)
return UserResponse.model_validate(USER.details())
except HTTPException as exc:
logger.error(exc)
raise exc
except Exception as exc:
logger.error(exc)
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc)
) from exc
@router.put(
"/{user_id}/update_password/",
status_code=status.HTTP_200_OK,
response_model=UserResponse,
)
async def update_password(
user_id: UUID, password: PasswordUpdate, db: Session = Depends(get_db)
):
try:
USER = UserController(db)
USER.update_password(user_id, password.current_password, password.new_password)
return UserResponse.model_validate(USER.details())
except HTTPException as exc:
logger.error(exc)
raise exc
except Exception as exc:
logger.error(exc)
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc)
) from exc
@router.delete(
"/{user_id}/delete",
status_code=status.HTTP_200_OK,
response_model=UserDeletedResponse,
)
async def delete_user(user_id: UUID, db: Session = Depends(get_db)):
try:
USER = UserController(db)
USER.delete(user_id)
return {"detail": "User Deleted"}
except HTTPException as exc:
logger.error(exc)
raise exc
except Exception as exc:
logger.error(exc)
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc)
) from exc
|