from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.ext.asyncio import AsyncSession from services.user_service import UserService from models.schemas import UserUpdateRole, UserBlockBan, UserResponse from config.database import get_db from services.auth_service import AuthService from typing import Optional router = APIRouter() @router.get("/", response_model=list[UserResponse]) async def list_users(status: Optional[str] = None, db=Depends(get_db)): return await UserService.list_users(status, db) @router.patch("/role", status_code=200, dependencies=[Depends(AuthService.admin_required)]) async def change_role(user_update: UserUpdateRole, db: AsyncSession = Depends(get_db)): return await UserService.change_user_role(user_update, db) @router.post("/block", status_code=200, dependencies=[Depends(AuthService.admin_required)]) async def block_user(user_action: UserBlockBan, db: AsyncSession = Depends(get_db)): return await UserService.block_user(user_action, db) @router.post("/ban", status_code=200, dependencies=[Depends(AuthService.admin_required)]) async def ban_user(user_action: UserBlockBan, db: AsyncSession = Depends(get_db)): return await UserService.ban_user(user_action, db) @router.post("/unblock", status_code=200, dependencies=[Depends(AuthService.admin_required)]) async def unblock_user(user_action: UserBlockBan, db: AsyncSession = Depends(get_db)): return await UserService.unblock_user(user_action, db) @router.post("/unban", status_code=200, dependencies=[Depends(AuthService.admin_required)]) async def unban_user(user_action: UserBlockBan, db: AsyncSession = Depends(get_db)): return await UserService.unban_user(user_action, db)