from datetime import datetime, timezone from sqlalchemy import DateTime, Numeric from sqlalchemy.orm import Mapped, mapped_column class IdMixin: id: Mapped[int] = mapped_column(primary_key=True) class SoftDeleteMixin: is_deleted: Mapped[bool] = mapped_column( default=False, nullable=False, ) class CreatedAtMixin: created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), nullable=False, ) class LastModifiedAtMixin: last_modified_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), nullable=False, ) class PriceMixin: price: Mapped[float] = mapped_column(Numeric(12, 2), comment="Стоимость") class CostMixin: cost: Mapped[float] = mapped_column(Numeric(12, 2), comment="Себестоимость")