"""管理员 Token 表模型"""
import datetime
import sqlalchemy as sa
from sqlalchemy import func
from sqlalchemy.orm import Mapped, mapped_column
from backend.core.database import Base
class AdminToken(Base):
"""管理员认证 Token 表
登录成功后生成 uuid4 token,24 小时过期。
存储在数据库中,服务重启不丢失会话。
"""
__tablename__ = "admin_tokens"
id: Mapped[int] = mapped_column(sa.Integer, primary_key=True, autoincrement=True)
admin_id: Mapped[int] = mapped_column(
sa.Integer, sa.ForeignKey("admin_users.id", ondelete="CASCADE"), nullable=False,
)
token: Mapped[str] = mapped_column(sa.String(64), nullable=False, unique=True)
expires_at: Mapped[datetime.datetime] = mapped_column(sa.DateTime, nullable=False)
created_at: Mapped[datetime.datetime] = mapped_column(
sa.DateTime, nullable=False, server_default=func.now(),
)
__table_args__ = (
sa.Index("idx_admin_token", "token"),
)
def __repr__(self) -> str:
return f"<AdminToken(id={self.id}, admin_id={self.admin_id})>"