23 lines
808 B
Python
23 lines
808 B
Python
"""Dashboard endpoints."""
|
|
|
|
from typing import Annotated, Literal
|
|
|
|
from fastapi import APIRouter, Depends, Query
|
|
|
|
from app.api.dependencies import DatabaseSession, require_permission
|
|
from app.models.entities import UserAccount
|
|
from app.schemas.common import ApiResponse
|
|
from app.schemas.dashboard import DashboardData
|
|
from app.services.dashboard import DashboardService
|
|
|
|
router = APIRouter(prefix="/dashboard", tags=["dashboard"])
|
|
|
|
|
|
@router.get("", response_model=ApiResponse[DashboardData])
|
|
async def get_dashboard(
|
|
session: DatabaseSession,
|
|
_current_user: Annotated[UserAccount, Depends(require_permission("risk.assess"))],
|
|
year: Literal["all", "2024", "2025", "2026"] = Query("all"),
|
|
) -> ApiResponse[DashboardData]:
|
|
return ApiResponse(data=await DashboardService(session).overview(year))
|