from django.http import HttpRequest from ninja import Router, Schema from ninja.pagination import PageNumberPagination, paginate from .models import Score router = Router() class ScoreIn(Schema): username: str points: int class ScoreOut(Schema): id: int username: str points: int created_at: str @staticmethod def resolve_created_at(obj: Score) -> str: return obj.created_at.isoformat() @router.post("", response=ScoreOut) def submit_score(request: HttpRequest, payload: ScoreIn) -> Score: return Score.objects.create(username=payload.username, points=payload.points) @router.get("", response=list[ScoreOut]) @paginate(PageNumberPagination, page_size=20) def list_scores(request: HttpRequest) -> list[Score]: return Score.objects.all()