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("/") def get_users(limit:int = DEFAULT_LIMIT, page:int = DEFAULT_PAGE, search:str = ""): if page == 0: page = 1 offset = (page - 1) * limit user = UserServices().get_users(limit, offset, search) return ApiResponse( data=user, message="User fetched successfully" ) @router.get("/me") def get_user(request: Request): try: user_id = request.state.user["id"] user = 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}") def get_user(request: Request, user_id: int): user = UserServices().get_user(user_id) return ApiResponse( data=user, message="User fetched successfully" ) @router.delete("/") def delete_user(request: Request): user_id = request.state.user["id"] UserServices().delete_user(user_id) return ApiResponse( data="OK", message="User deleted successfully" ) @router.put("/") def update_user(request: Request, user_data: UserUpdate): user_id = request.state.user["id"] user = UserServices().update_user(user_id, user_data) return ApiResponse( data=user, message="User updated successfully" ) @router.put("/{user_id}") def update_user(request: Request, user_id: int, user_data: UserUpdate): user = UserServices().update_user(user_id, user_data) return ApiResponse( data=user, message="User updated successfully" )