from datetime import datetime from sqlalchemy import DateTime, Integer from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy.sql import func class TimestampMixin: """Mixin for common timestamp fields""" created_at: Mapped[datetime] = mapped_column( DateTime, nullable=False, default=func.now() ) updated_at: Mapped[datetime] = mapped_column( DateTime, nullable=False, default=func.now(), onupdate=func.now() ) deleted_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True) class TenantScopedMixin: """Mixin for tenant and company scoped entities""" tenant_id: Mapped[int] = mapped_column(Integer, nullable=False, index=True) company_id: Mapped[int] = mapped_column(Integer, nullable=False, index=True) class PedimentoRelatedMixin(TenantScopedMixin): """Mixin for entities related to pedimentos""" pedimento_id: Mapped[int] = mapped_column(Integer, nullable=False)