base.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. """普通业务表通用字段。"""
  2. from __future__ import annotations
  3. from datetime import datetime
  4. from sqlalchemy import BigInteger, Boolean, Integer, text
  5. from sqlalchemy.dialects.mysql import DATETIME
  6. from sqlalchemy.orm import Mapped, mapped_column
  7. class BusinessTableMixin:
  8. """除审计日志外六张普通业务表的统一字段。"""
  9. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=True)
  10. created_by: Mapped[int | None] = mapped_column(BigInteger, nullable=True)
  11. updated_by: Mapped[int | None] = mapped_column(BigInteger, nullable=True)
  12. created_at: Mapped[datetime] = mapped_column(
  13. DATETIME(fsp=3),
  14. nullable=False,
  15. server_default=text("CURRENT_TIMESTAMP(3)"),
  16. )
  17. updated_at: Mapped[datetime] = mapped_column(
  18. DATETIME(fsp=3),
  19. nullable=False,
  20. server_default=text("CURRENT_TIMESTAMP(3)"),
  21. onupdate=text("CURRENT_TIMESTAMP(3)"),
  22. )
  23. deleted_at: Mapped[datetime | None] = mapped_column(
  24. DATETIME(fsp=3),
  25. nullable=True,
  26. )
  27. is_deleted: Mapped[bool] = mapped_column(
  28. Boolean,
  29. nullable=False,
  30. server_default=text("0"),
  31. )
  32. row_version: Mapped[int] = mapped_column(
  33. Integer,
  34. nullable=False,
  35. server_default=text("0"),
  36. )