From e271f33e799cc10cc991f05b8a3b86619e5fc526 Mon Sep 17 00:00:00 2001 From: qwerdvd <2450899274@qq.com> Date: Sat, 30 Sep 2023 00:10:15 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E4=BF=AE=E6=AD=A3=E4=B8=80=E4=B8=8B?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../arknightsuid_resource/memoryStore.py | 3 ++- ArknightsUID/utils/database/models.py | 18 +++++++++++++++--- ArknightsUID/utils/models/common.py | 4 ++-- pyproject.toml | 4 ++++ 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/ArknightsUID/arknightsuid_resource/memoryStore.py b/ArknightsUID/arknightsuid_resource/memoryStore.py index 1fa461e..9fcb478 100644 --- a/ArknightsUID/arknightsuid_resource/memoryStore.py +++ b/ArknightsUID/arknightsuid_resource/memoryStore.py @@ -5,7 +5,7 @@ import json import os import pickle import shutil -from datetime import UTC, datetime, timedelta +from datetime import datetime, timedelta from pathlib import Path from tempfile import mkstemp from typing import Any @@ -14,6 +14,7 @@ import anyio from anyio import Path as anyioPath from anyio.to_thread import run_sync from msgspec import Struct +from pytz import UTC from gsuid_core.logger import logger diff --git a/ArknightsUID/utils/database/models.py b/ArknightsUID/utils/database/models.py index a4ada8b..07ad92d 100644 --- a/ArknightsUID/utils/database/models.py +++ b/ArknightsUID/utils/database/models.py @@ -1,6 +1,6 @@ -from typing import Dict, Literal, Union +from typing import Dict, Literal, Optional, Type, Union -from gsuid_core.utils.database.base_models import Bind, Push, T_BaseIDModel, T_User, User, with_session, BaseModel +from gsuid_core.utils.database.base_models import Bind, Push, T_BaseIDModel, User, with_session, BaseModel from gsuid_core.webconsole.mount_app import GsAdminModel, PageSchema, site from sqlmodel import Field from sqlalchemy.future import select @@ -78,6 +78,18 @@ class ArknightsPush(Push, table=True): training_is_push=False ) + @classmethod + @with_session + async def base_select_data( + cls: Type[T_BaseIDModel], session: AsyncSession, **data + ) -> Optional[T_BaseIDModel]: + stmt = select(cls) + for k, v in data.items(): + stmt = stmt.where(getattr(cls, k) == v) + result = await session.execute(stmt) + data = result.scalars().all() + return data[0] if data else None + @classmethod async def update_push_data(cls, uid: str, data: Dict) -> bool: retcode = -1 @@ -98,7 +110,7 @@ class ArknightsPush(Push, table=True): @classmethod async def select_push_data( - cls: type[T_BaseIDModel], uid: str + cls: Type[T_BaseIDModel], uid: str ) -> Union[T_BaseIDModel, None]: return await cls.base_select_data(uid=uid) diff --git a/ArknightsUID/utils/models/common.py b/ArknightsUID/utils/models/common.py index 87359fa..5181c2a 100644 --- a/ArknightsUID/utils/models/common.py +++ b/ArknightsUID/utils/models/common.py @@ -2,7 +2,7 @@ import base64 import json from collections.abc import Callable, Iterable, Iterator from copy import copy, deepcopy -from typing import Any, Dict, List, Tuple, TypeVar, Union +from typing import Any, Dict, List, Tuple, Type, TypeVar, Union from msgspec import Meta, Struct, UnsetType, convert, field from msgspec import json as mscjson @@ -29,7 +29,7 @@ class BaseStruct(Struct, forbid_unknown_fields=True, omit_defaults=True, gc=Fals @classmethod def convert( - cls: type[Model], + cls: Type[Model], obj: Any, *, strict: bool = True, diff --git a/pyproject.toml b/pyproject.toml index 3121d79..6b5b0a9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -51,6 +51,10 @@ extra_standard_library = ["typing_extensions"] [tool.pytest.ini_options] asyncio_mode = "auto" +[tool.pyright] +pythonVersion = "3.8" +pythonPlatform = "All" + [tool.ruff] select = ["E", "W", "F", "UP", "C", "T", "PYI", "PT", "Q"] ignore = ["C901", "Q000"]