"""Рейтинги и агрегат главной страницы.""" from __future__ import annotations from fastapi import APIRouter, Depends, Query from sqlmodel import Session from app.auth.deps import get_current_user from app.db.session import get_session from app.models import User from app.schemas import api as s from app.services import stats_service router = APIRouter(tags=["stats"]) @router.get("/stats/leaderboard", response_model=s.Leaderboard) def overall_leaderboard( limit: int = Query(50, ge=1, le=200), session: Session = Depends(get_session), _user: User = Depends(get_current_user), ) -> dict: board = stats_service.leaderboard(session, group_id=None) board["entries"] = board["entries"][:limit] return board @router.get("/home", response_model=s.HomeResponse) def home( session: Session = Depends(get_session), user: User = Depends(get_current_user), ) -> dict: return stats_service.home(session, user.id, user.active_group_id) # type: ignore[arg-type]