"""普通业务表通用字段。""" from __future__ import annotations from datetime import datetime from sqlalchemy import BigInteger, Boolean, Integer, text from sqlalchemy.dialects.mysql import DATETIME from sqlalchemy.orm import Mapped, mapped_column class BusinessTableMixin: """除审计日志外六张普通业务表的统一字段。""" id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=True) created_by: Mapped[int | None] = mapped_column(BigInteger, nullable=True) updated_by: Mapped[int | None] = mapped_column(BigInteger, nullable=True) created_at: Mapped[datetime] = mapped_column( DATETIME(fsp=3), nullable=False, server_default=text("CURRENT_TIMESTAMP(3)"), ) updated_at: Mapped[datetime] = mapped_column( DATETIME(fsp=3), nullable=False, server_default=text("CURRENT_TIMESTAMP(3)"), onupdate=text("CURRENT_TIMESTAMP(3)"), ) deleted_at: Mapped[datetime | None] = mapped_column( DATETIME(fsp=3), nullable=True, ) is_deleted: Mapped[bool] = mapped_column( Boolean, nullable=False, server_default=text("0"), ) row_version: Mapped[int] = mapped_column( Integer, nullable=False, server_default=text("0"), )