| 1234567891011121314151617181920212223242526272829 |
- """Base model with common columns shared by all bx_ tables."""
- from datetime import datetime
- from sqlalchemy import BigInteger, String, SmallInteger, DateTime, func
- from sqlalchemy.orm import Mapped, mapped_column, DeclarativeBase
- from app.database import Base
- class BaseModel(Base):
- """Abstract base providing id, create_by, create_time, update_by, update_time."""
- __abstract__ = True
- id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=True)
- create_by: Mapped[str | None] = mapped_column(String(64), default=None)
- create_time: Mapped[datetime] = mapped_column(
- DateTime, nullable=False, server_default=func.now()
- )
- update_by: Mapped[str | None] = mapped_column(String(64), default=None)
- update_time: Mapped[datetime] = mapped_column(
- DateTime, nullable=False, server_default=func.now(), onupdate=func.now()
- )
- class SoftDeleteMixin:
- """Mixin for soft-delete support (del_flag column)."""
- del_flag: Mapped[int] = mapped_column(
- SmallInteger, nullable=False, default=0, server_default="0"
- )
|