from datetime import datetime from typing import Optional from sqlmodel import Field, SQLModel class AuthLoginLog(SQLModel, table=True): __tablename__ = "sys_login_log" id: Optional[int] = Field(default=None, primary_key=True) auth_type: str = Field(index=True) # panel | bot token_hash: str = Field(index=True, unique=True) subject_id: str = Field(index=True) bot_id: Optional[str] = Field(default=None, index=True) auth_source: str = Field(default="", index=True) created_at: datetime = Field(default_factory=datetime.utcnow, index=True) expires_at: datetime = Field(index=True) last_seen_at: datetime = Field(default_factory=datetime.utcnow, index=True) revoked_at: Optional[datetime] = Field(default=None, index=True) revoke_reason: Optional[str] = Field(default=None) client_ip: Optional[str] = Field(default=None) user_agent: Optional[str] = Field(default=None) device_info: Optional[str] = Field(default=None)