Coverage for fss\starter\system\mapper\user_mapper.py: 91%
11 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-11 19:09 +0800
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-11 19:09 +0800
1"""User operation mapper"""
3from typing import Union
5from sqlmodel import select
6from sqlmodel.ext.asyncio.session import AsyncSession
8from fss.common.persistence.sqlmodel_impl import SqlModelMapper
9from fss.starter.system.model.user_do import UserDO
12class UserMapper(SqlModelMapper[UserDO]):
13 async def get_user_by_username(
14 self, *, username: str, db_session: Union[AsyncSession, None] = None
15 ) -> Union[UserDO, None]:
16 """
17 Retrieve a user record by username.
19 Args:
20 username (str): The username to query.
21 db_session (AsyncSession or None, optional): The database session instance. If None, use the default
22 session.
24 Returns:
25 Union[UserDO, None]: The UserDO instance if found, otherwise None.
26 """
27 db_session = db_session or self.db.session
28 user = await db_session.execute(
29 select(UserDO).where(UserDO.username == username)
30 )
31 return user.scalar_one_or_none()
34userMapper = UserMapper(UserDO)