# app/api/v1/admin/users.py """ User management endpoints for admin. """ import logging from typing import List from fastapi import APIRouter, Depends, Query from sqlalchemy.orm import Session from app.api.deps import get_current_admin_api from app.core.database import get_db from app.services.admin_service import admin_service from app.services.stats_service import stats_service from models.schema.auth import UserResponse from models.database.user import User router = APIRouter(prefix="/users") logger = logging.getLogger(__name__) @router.get("", response_model=List[UserResponse]) def get_all_users( skip: int = Query(0, ge=0), limit: int = Query(100, ge=1, le=1000), db: Session = Depends(get_db), current_admin: User = Depends(get_current_admin_api), ): """Get all users (Admin only).""" users = admin_service.get_all_users(db=db, skip=skip, limit=limit) return [UserResponse.model_validate(user) for user in users] @router.put("/{user_id}/status") def toggle_user_status( user_id: int, db: Session = Depends(get_db), current_admin: User = Depends(get_current_admin_api), ): """Toggle user active status (Admin only).""" user, message = admin_service.toggle_user_status(db, user_id, current_admin.id) return {"message": message} @router.get("/stats") def get_user_statistics( db: Session = Depends(get_db), current_admin: User = Depends(get_current_admin_api), ): """Get user statistics for admin dashboard (Admin only).""" return stats_service.get_user_statistics(db)