mirror of
https://github.com/fastapi-practices/fastapi-best-architecture.git
synced 2026-10-07 18:30:59 +00:00
* Refactor foreign keys and relationships to pure logic * Revert of some changes * More revert * Update the user paginate * Update user create and update * Update dept select and delete * Rename the join query functions * Update select_join_serialize doc and README * Fix typo in README * Update the user delete * Update the user social * Update the dict plugin crud * Update the dict plugin version * Bump dependencies and pre-commits * Update the code generator plugin crud * Update the menu crud * Update the role crud * Update the data scope and rule crud * Restore get_paginated to get_select * Update the code generator plugin version * Add the py version in pre-commit * Remove the plugin include parameter config * Add more cache cleaning TODO * Rename get_with_relation to get_join * Add the user cache clear * Fix known compatibility issues * Update the version number to 1.11.0 * Fix lint * Optimize select_join_serialize logic * Delete cache cleanup comments * Update the oauth2 plugin version * Fix user-role table cleanup when user update
37 lines
1.9 KiB
Python
37 lines
1.9 KiB
Python
from datetime import datetime
|
|
|
|
import sqlalchemy as sa
|
|
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
from backend.common.model import Base, TimeZone, id_key
|
|
from backend.database.db import uuid4_str
|
|
from backend.utils.timezone import timezone
|
|
|
|
|
|
class User(Base):
|
|
"""用户表"""
|
|
|
|
__tablename__ = 'sys_user'
|
|
|
|
id: Mapped[id_key] = mapped_column(init=False)
|
|
uuid: Mapped[str] = mapped_column(sa.String(64), init=False, default_factory=uuid4_str, unique=True)
|
|
username: Mapped[str] = mapped_column(sa.String(64), unique=True, index=True, comment='用户名')
|
|
nickname: Mapped[str] = mapped_column(sa.String(64), comment='昵称')
|
|
password: Mapped[str | None] = mapped_column(sa.String(256), comment='密码')
|
|
salt: Mapped[bytes | None] = mapped_column(sa.LargeBinary(255), comment='加密盐')
|
|
email: Mapped[str | None] = mapped_column(sa.String(256), default=None, unique=True, index=True, comment='邮箱')
|
|
phone: Mapped[str | None] = mapped_column(sa.String(11), default=None, comment='手机号')
|
|
avatar: Mapped[str | None] = mapped_column(sa.String(256), default=None, comment='头像')
|
|
status: Mapped[int] = mapped_column(default=1, index=True, comment='用户账号状态(0停用 1正常)')
|
|
is_superuser: Mapped[bool] = mapped_column(default=False, comment='超级权限(0否 1是)')
|
|
is_staff: Mapped[bool] = mapped_column(default=False, comment='后台管理登陆(0否 1是)')
|
|
is_multi_login: Mapped[bool] = mapped_column(default=False, comment='是否重复登陆(0否 1是)')
|
|
join_time: Mapped[datetime] = mapped_column(TimeZone, init=False, default_factory=timezone.now, comment='注册时间')
|
|
last_login_time: Mapped[datetime | None] = mapped_column(
|
|
TimeZone, init=False, onupdate=timezone.now, comment='上次登录'
|
|
)
|
|
|
|
# 逻辑外键
|
|
dept_id: Mapped[int | None] = mapped_column(sa.BigInteger, default=None, comment='部门关联ID')
|