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

1"""User operation mapper""" 

2 

3from typing import Union 

4 

5from sqlmodel import select 

6from sqlmodel.ext.asyncio.session import AsyncSession 

7 

8from fss.common.persistence.sqlmodel_impl import SqlModelMapper 

9from fss.starter.system.model.user_do import UserDO 

10 

11 

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. 

18 

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. 

23 

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() 

32 

33 

34userMapper = UserMapper(UserDO)