| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- from __future__ import annotations
- from datetime import datetime
- from sqlalchemy import Column, DateTime, func
- from sqlmodel import Field, SQLModel
- class User(SQLModel, table=True):
- __tablename__ = "users"
- id: int | None = Field(default=None, primary_key=True)
- username: str = Field(index=True, unique=True, max_length=255)
- password: str = Field(max_length=255)
- role: str = Field(default="user", max_length=50)
- created_at: datetime | None = Field(
- default=None,
- sa_column=Column(DateTime, server_default=func.now()),
- )
- is_active: bool = Field(default=True)
- updated_at: datetime | None = Field(
- default=None,
- sa_column=Column(DateTime, server_default=func.now(), onupdate=func.now()),
- )
- class OperationLog(SQLModel, table=True):
- """操作日志表 - 对应 operation_logs"""
- __tablename__ = "operation_logs"
- id: int | None = Field(default=None, primary_key=True)
- user_id: int = Field(index=True)
- username: str = Field(max_length=50)
- operation_type: str = Field(max_length=50, index=True)
- resource_type: str = Field(max_length=50, index=True)
- resource_id: int | None = Field(default=None)
- description: str | None = Field(default=None)
- ip_address: str | None = Field(default=None, max_length=50)
- user_agent: str | None = Field(default=None, max_length=255)
- created_at: datetime | None = Field(
- default=None,
- sa_column=Column(DateTime, server_default=func.now(), index=True),
- )
|