2026-05-30 06:57:21 +08:00
|
|
|
|
"""ORM 模型公共 Mixin 定义。
|
|
|
|
|
|
|
|
|
|
|
|
提供时间戳和软删除等通用字段,被所有业务模型继承。
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
2026-05-14 13:51:06 +08:00
|
|
|
|
from sqlalchemy import DateTime, func
|
|
|
|
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
2026-05-14 10:15:51 +08:00
|
|
|
|
|
|
|
|
|
|
|
2026-05-14 13:51:06 +08:00
|
|
|
|
class TimestampMixin:
|
2026-05-30 06:57:21 +08:00
|
|
|
|
"""时间戳 Mixin,自动维护 created_at 和 updated_at 字段。
|
|
|
|
|
|
|
|
|
|
|
|
created_at 由数据库服务器默认值设置,updated_at 在每次更新时自动刷新。
|
|
|
|
|
|
"""
|
2026-05-14 13:51:06 +08:00
|
|
|
|
created_at: Mapped[DateTime] = mapped_column(DateTime, server_default=func.now())
|
|
|
|
|
|
updated_at: Mapped[DateTime] = mapped_column(
|
|
|
|
|
|
DateTime,
|
|
|
|
|
|
server_default=func.now(),
|
|
|
|
|
|
onupdate=func.now(),
|
|
|
|
|
|
)
|
2026-05-14 10:15:51 +08:00
|
|
|
|
|
|
|
|
|
|
|
2026-05-14 13:51:06 +08:00
|
|
|
|
class AuditMixin:
|
2026-05-30 06:57:21 +08:00
|
|
|
|
"""软删除 Mixin,deleted=0 表示正常,deleted=1 表示已删除。
|
|
|
|
|
|
|
|
|
|
|
|
查询时需手动过滤 deleted == 0。
|
|
|
|
|
|
"""
|
2026-05-14 13:51:06 +08:00
|
|
|
|
deleted: Mapped[int] = mapped_column(default=0)
|