From dc522a8e934890e42b6f1766eec11eb95c3b1779 Mon Sep 17 00:00:00 2001 From: Yuerchu Date: Mon, 14 Jul 2025 15:43:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AF=BB=E5=8F=96=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=B8=8E=E5=85=B6=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/user.py | 35 +++++++++++++++++++++++++++++++++++ tests/test_db_user.py | 12 +++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/models/user.py b/models/user.py index ec928f9..4a571f1 100644 --- a/models/user.py +++ b/models/user.py @@ -107,4 +107,39 @@ class User(BaseModel, table=True): except Exception as e: await session.rollback() raise e + return user + + async def get( + id: int = None, + email: str = None + ) -> Optional["User"]: + """ + 获取用户信息。 + + :param id: 用户ID,默认为 None + :type id: int + :param email: 用户邮箱,默认为 None + :type email: str + :return: 用户对象或 None + :rtype: Optional[User] + """ + + from .database import get_session + from sqlmodel import select + + session = get_session() + + if id is None and email is None: + return None + + async for session in get_session(): + query = select(User) + if id is not None: + query = query.where(User.id == id) + if email is not None: + query = query.where(User.email == email) + + result = await session.exec(query) + user = result.one_or_none() + return user \ No newline at end of file diff --git a/tests/test_db_user.py b/tests/test_db_user.py index 698d32d..6455016 100644 --- a/tests/test_db_user.py +++ b/tests/test_db_user.py @@ -26,4 +26,14 @@ async def test_user_curd(): assert created_user.id is not None assert created_user.email == 'test_user' assert created_user.password == 'test_password' - assert created_user.group_id == created_group.id \ No newline at end of file + assert created_user.group_id == created_group.id + + # 测试查 Read + fetched_user = await User.get(id=created_user.id) + + assert fetched_user is not None + assert fetched_user.email == 'test_user' + assert fetched_user.password == 'test_password' + assert fetched_user.group_id == created_group.id + + # 测试改 Update \ No newline at end of file