""" 基础模型定义 ============ """ import uuid from datetime import UTC, datetime from sqlalchemy import DateTime from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.orm import Mapped, mapped_column from app.db.session import Base class BaseModel(Base): """ 基础模型 - 所有模型继承此类 提供: - UUID 主键(自动生成) - 创建时间 - 更新时间 """ __abstract__ = True id: Mapped[str] = mapped_column( UUID(as_uuid=False), primary_key=True, default=lambda: str(uuid.uuid4()), ) created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=lambda: datetime.now(UTC), nullable=False, ) updated_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=lambda: datetime.now(UTC), onupdate=lambda: datetime.now(UTC), nullable=False, ) def to_dict(self) -> dict: """转换为字典(用于序列化)""" return {column.name: getattr(self, column.name) for column in self.__table__.columns}