from typing import Optional from datetime import datetime from decimal import Decimal from sqlalchemy import DateTime, Integer, String, DECIMAL, ForeignKey, PrimaryKeyConstraint, ForeignKeyConstraint, UniqueConstraint from sqlalchemy.sql import func from sqlalchemy.orm import Mapped, mapped_column from core.database import Base class Package(Base): __tablename__ = "packages" # GBultos __table_args__ = ( PrimaryKeyConstraint('id', name='packages_pkey'), UniqueConstraint('key', name='packages_key_ukey'), ForeignKeyConstraint(['tenant_id'], ['a76.tenants.id'], name='fk_packages_tenant'), {"schema": "a76"} ) id: Mapped[int] = mapped_column(Integer, primary_key=True) tenant_id: Mapped[int] = mapped_column(Integer, nullable=False, index=True) key: Mapped[str] = mapped_column(String(5)) description_es: Mapped[Optional[str]] = mapped_column(String(40)) description_en: Mapped[Optional[str]] = mapped_column(String(40)) weight_unit: Mapped[Optional[Decimal]] = mapped_column(DECIMAL(19, 8)) plurals: Mapped[Optional[str]] = mapped_column(String(4)) plural_in: Mapped[Optional[str]] = mapped_column(String(4)) code_ace: Mapped[Optional[str]] = mapped_column(String(4)) code_aamex: Mapped[Optional[str]] = mapped_column(String(9)) # Timestamps 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)