fix Pydantic serializer warnings
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user