fix Pydantic serializer warnings

This commit is contained in:
咕谷酱
2025-08-21 23:48:58 +08:00
parent 822d7c6377
commit ad51514fb1
5 changed files with 265 additions and 6 deletions

View File

@@ -6,6 +6,7 @@ from app.models.score import GameMode
from .rank_history import RankHistory
from pydantic import field_validator
from sqlalchemy.ext.asyncio import AsyncAttrs
from sqlmodel import (
BigInteger,
@@ -43,6 +44,18 @@ class UserStatisticsBase(SQLModel):
replays_watched_by_others: int = Field(default=0)
is_ranked: bool = Field(default=True)
@field_validator('mode', mode='before')
@classmethod
def validate_mode(cls, v):
"""将字符串转换为 GameMode 枚举"""
if isinstance(v, str):
try:
return GameMode(v)
except ValueError:
# 如果转换失败,返回默认值
return GameMode.OSU
return v
class UserStatistics(AsyncAttrs, UserStatisticsBase, table=True):
__tablename__ = "lazer_user_statistics" # pyright: ignore[reportAssignmentType]