Coverage for src / fastapi_authly / contrib / tortoise_pg.py: 48%

21 statements  

« prev     ^ index     » next       coverage.py v7.13.1, created at 2026-01-20 11:54 +0800

1# fastapi_authly.contrib.tortoise_pg 

2from typing import Any, Optional 

3 

4from tortoise.exceptions import DoesNotExist 

5from ..interfaces import UserRepository 

6from ..schemas.user import UserCreate, UserPublic 

7from ..models.user import User 

8 

9 

10class TortoiseUserRepository(UserRepository): 

11 async def get_by_name(self, username: str) -> Optional[User]: 

12 try: 

13 return await User.get(username=username) 

14 except DoesNotExist: 

15 return None 

16 

17 async def get_by_id(self, user_id: str | int) -> Optional[User]: 

18 try: 

19 return await User.get(id=int(user_id)) 

20 except DoesNotExist: 

21 return None 

22 

23 async def create_user(self, user: UserCreate) -> User: 

24 obj = await User.create( 

25 username=user.username, 

26 email=user.email, 

27 hashed_password=user.password, 

28 is_active=user.is_active, 

29 is_superuser=user.is_superuser, 

30 ) 

31 return obj 

32 

33 async def to_public(self, user: User) -> UserPublic: 

34 return UserPublic.model_validate(user)