Coverage for src / fastapi_authly / models / user.py: 87%

23 statements  

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

1from tortoise import fields 

2from tortoise.models import Model 

3from datetime import datetime 

4 

5 

6class User(Model): 

7 id = fields.IntField(primary_key=True, description="用户ID") 

8 email = fields.CharField(max_length=255, unique=True, description="邮箱(唯一)") 

9 username = fields.CharField(max_length=100, unique=True, description="用户名(唯一)") 

10 hashed_password = fields.CharField(max_length=255, description="加密后的密码") 

11 full_name = fields.CharField(max_length=255, null=True, description="全名") 

12 is_active = fields.BooleanField(default=True, description="是否激活") 

13 is_superuser = fields.BooleanField(default=False, description="是否超级用户") 

14 

15 # 时间字段 

16 created_at = fields.DatetimeField(auto_now_add=True, description="创建时间") 

17 updated_at = fields.DatetimeField(auto_now=True, description="更新时间") 

18 last_login = fields.DatetimeField(null=True, description="最后登录时间") 

19 

20 class Meta: 

21 table = "users" 

22 table_description = "用户表" 

23 ordering = ["-created_at"] 

24 

25 def __str__(self): 

26 return f"User(id={self.id}, username={self.username}, email={self.email})" 

27 

28 async def update_last_login(self): 

29 """更新最后登录时间""" 

30 self.last_login = datetime.now() 

31 await self.save(update_fields=["last_login"])