70 lines
2.0 KiB
Python
70 lines
2.0 KiB
Python
from fastapi import APIRouter, Request, Depends
|
|
|
|
from middleware.auth_dependency import auth_required
|
|
from services.userServices import UserServices
|
|
from schemas.ApiResponse import ApiResponse
|
|
from schemas.UpdateSchemas import UserUpdate
|
|
from utils.constants import DEFAULT_LIMIT, DEFAULT_PAGE
|
|
|
|
router = APIRouter()
|
|
|
|
@router.get("/")
|
|
async def get_users(limit:int = DEFAULT_LIMIT, page:int = DEFAULT_PAGE, search:str = ""):
|
|
if page == 0:
|
|
page = 1
|
|
offset = (page - 1) * limit
|
|
|
|
user = await UserServices().get_users(limit, offset, search)
|
|
|
|
return ApiResponse(
|
|
data=user,
|
|
message="User fetched successfully"
|
|
)
|
|
|
|
@router.get("/me")
|
|
async def get_user(request: Request):
|
|
try:
|
|
user_id = request.state.user["id"]
|
|
user = await UserServices().get_user(user_id)
|
|
return ApiResponse(
|
|
data=user,
|
|
message="User fetched successfully"
|
|
)
|
|
except Exception as e:
|
|
logger.error(f"Error getting user: {str(e)}")
|
|
raise e
|
|
|
|
@router.get("/{user_id}")
|
|
async def get_user(request: Request, user_id: int):
|
|
user = await UserServices().get_user(user_id)
|
|
return ApiResponse(
|
|
data=user,
|
|
message="User fetched successfully"
|
|
)
|
|
|
|
@router.delete("/")
|
|
async def delete_user(request: Request):
|
|
user_id = request.state.user["id"]
|
|
await UserServices().delete_user(user_id)
|
|
return ApiResponse(
|
|
data="OK",
|
|
message="User deleted successfully"
|
|
)
|
|
|
|
@router.put("/")
|
|
async def update_user(request: Request, user_data: UserUpdate):
|
|
user_id = request.state.user["id"]
|
|
user = await UserServices().update_user(user_id, user_data)
|
|
return ApiResponse(
|
|
data=user,
|
|
message="User updated successfully"
|
|
)
|
|
|
|
@router.put("/{user_id}")
|
|
async def update_user(request: Request, user_id: int, user_data: UserUpdate):
|
|
user = await UserServices().update_user(user_id, user_data)
|
|
return ApiResponse(
|
|
data=user,
|
|
message="User updated successfully"
|
|
)
|