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" )