32 lines
935 B
Python
32 lines
935 B
Python
from fastapi import APIRouter
|
|
|
|
from app.services.d2l import D2LService
|
|
from app.services.repository import get_repository
|
|
|
|
|
|
router = APIRouter(prefix="/api/dashboard", tags=["dashboard"])
|
|
repo = get_repository()
|
|
d2l = D2LService()
|
|
|
|
|
|
@router.get("/summary")
|
|
async def dashboard_summary():
|
|
courses = d2l.get_courses()
|
|
assignments = repo.list_assignments()
|
|
submissions = repo.list_submissions()
|
|
recordings = repo.list_recordings()
|
|
sync_runs = repo.list_sync_runs()
|
|
return {
|
|
"backend": repo.backend,
|
|
"counts": {
|
|
"courses": len(courses),
|
|
"assignments": len(assignments),
|
|
"submissions": len(submissions),
|
|
"recordings": len(recordings),
|
|
},
|
|
"latest_sync": sync_runs[-1] if sync_runs else None,
|
|
"recent_assignments": assignments[:8],
|
|
"recent_submissions": submissions[:8],
|
|
"recent_recordings": recordings[:8],
|
|
}
|