diff --git a/nonebot_plugin_tetris_stats/games/schemas.py b/nonebot_plugin_tetris_stats/games/schemas.py index 1ac2681..d9a6639 100644 --- a/nonebot_plugin_tetris_stats/games/schemas.py +++ b/nonebot_plugin_tetris_stats/games/schemas.py @@ -1,20 +1,21 @@ from abc import ABC, abstractmethod +from typing import Any, Generic, TypeVar from pydantic import BaseModel from ..utils.typing import GameType - -class Base(BaseModel): - platform: GameType +T = TypeVar('T', bound=GameType) -class BaseUser(ABC, Base): +class BaseUser(BaseModel, ABC, Generic[T]): """游戏用户""" - def __eq__(self, __value: object) -> bool: - if isinstance(__value, BaseUser): - return self.unique_identifier == __value.unique_identifier + platform: T + + def __eq__(self, other: Any) -> bool: # noqa: ANN401 + if isinstance(other, BaseUser): + return self.unique_identifier == other.unique_identifier return False @property diff --git a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/user.py b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/user.py index d585609..8407dfa 100644 --- a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/user.py +++ b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/user.py @@ -6,7 +6,7 @@ from ....schemas import BaseUser from ...constant import GAME_TYPE -class User(BaseUser): +class User(BaseUser[Literal['IO']]): platform: Literal['IO'] = GAME_TYPE ID: str diff --git a/nonebot_plugin_tetris_stats/games/top/api/schemas/user.py b/nonebot_plugin_tetris_stats/games/top/api/schemas/user.py index 24ac9df..1439723 100644 --- a/nonebot_plugin_tetris_stats/games/top/api/schemas/user.py +++ b/nonebot_plugin_tetris_stats/games/top/api/schemas/user.py @@ -6,7 +6,7 @@ from ....schemas import BaseUser from ...constant import GAME_TYPE -class User(BaseUser): +class User(BaseUser[Literal['TOP']]): platform: Literal['TOP'] = GAME_TYPE user_name: str diff --git a/nonebot_plugin_tetris_stats/games/tos/api/schemas/user.py b/nonebot_plugin_tetris_stats/games/tos/api/schemas/user.py index 18cdbc8..a2d609b 100644 --- a/nonebot_plugin_tetris_stats/games/tos/api/schemas/user.py +++ b/nonebot_plugin_tetris_stats/games/tos/api/schemas/user.py @@ -6,7 +6,7 @@ from ....schemas import BaseUser from ...constant import GAME_TYPE -class User(BaseUser): +class User(BaseUser[Literal['TOS']]): platform: Literal['TOS'] = GAME_TYPE teaid: str diff --git a/nonebot_plugin_tetris_stats/utils/render/schemas/tetrio/record/base.py b/nonebot_plugin_tetris_stats/utils/render/schemas/tetrio/record/base.py index 76859e6..b809a85 100644 --- a/nonebot_plugin_tetris_stats/utils/render/schemas/tetrio/record/base.py +++ b/nonebot_plugin_tetris_stats/utils/render/schemas/tetrio/record/base.py @@ -70,6 +70,4 @@ class Record(BaseModel): rank: int | None personal_rank: int | None - statistic: Statistic - play_at: datetime diff --git a/nonebot_plugin_tetris_stats/utils/render/schemas/tetrio/record/sprint.py b/nonebot_plugin_tetris_stats/utils/render/schemas/tetrio/record/sprint.py index 9928cd6..09b1063 100644 --- a/nonebot_plugin_tetris_stats/utils/render/schemas/tetrio/record/sprint.py +++ b/nonebot_plugin_tetris_stats/utils/render/schemas/tetrio/record/sprint.py @@ -1,5 +1,7 @@ from .base import Record as BaseRecord +from .base import Statistic class Record(BaseRecord): + statistic: Statistic time: str