refactor(database): use a new 'On-Demand' design (#86)

Technical Details: https://blog.mxgame.top/2025/11/22/An-On-Demand-Design-Within-SQLModel/
This commit is contained in:
MingxuanGame
2025-11-23 21:41:02 +08:00
committed by GitHub
parent 42f1d53d3e
commit 40da994ae8
46 changed files with 4396 additions and 2354 deletions

View File

@@ -3,16 +3,16 @@ from datetime import UTC, datetime
from app.models.score import GameMode
from pydantic import BaseModel, field_serializer
from pydantic import BaseModel, FieldSerializationInfo, field_serializer
class UTCBaseModel(BaseModel):
@field_serializer("*", when_used="json")
def serialize_datetime(self, v, _info):
@field_serializer("*", when_used="always")
def serialize_datetime(self, v, _info: FieldSerializationInfo):
if isinstance(v, datetime):
if v.tzinfo is None:
v = v.replace(tzinfo=UTC)
return v.astimezone(UTC).isoformat().replace("+00:00", "Z")
return v.astimezone(UTC)
return v