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
« 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
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="是否超级用户")
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="最后登录时间")
20 class Meta:
21 table = "users"
22 table_description = "用户表"
23 ordering = ["-created_at"]
25 def __str__(self):
26 return f"User(id={self.id}, username={self.username}, email={self.email})"
28 async def update_last_login(self):
29 """更新最后登录时间"""
30 self.last_login = datetime.now()
31 await self.save(update_fields=["last_login"])