dingdanquanliucheng/backend/app/models/base.py

29 lines
840 B
Python
Raw Normal View History

"""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:
"""时间戳 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:
"""软删除 Mixindeleted=0 表示正常deleted=1 表示已删除。
查询时需手动过滤 deleted == 0
"""
2026-05-14 13:51:06 +08:00
deleted: Mapped[int] = mapped_column(default=0)