opus-submitter/polylan_submitter/noita/schemas.py

45 lines
839 B
Python

from typing import Optional
from datetime import datetime
from ninja import Schema, ModelSchema
from noita.models import Objectiv
class ObjectivOut(ModelSchema):
class Meta:
model = Objectiv
fields = ["objectiv_id", "count"]
class NoitaSubmissionOut(Schema):
id: str
user_id: Optional[int]
username: Optional[str]
file_size: int
content_type: str
created_at: datetime
processed: bool
class ObjectivResultOut(Schema):
objectiv_id: str
count: int
points_per_objectiv: int
total_points: int
class ResultsOut(Schema):
total_score: int
objectives: list[ObjectivResultOut]
class LeaderboardEntryOut(Schema):
rank: int
username: str
total_score: int
objectives_count: int
class LeaderboardOut(Schema):
leaderboard: list[LeaderboardEntryOut]