"""SuperAdmin-managed optional retailer API credentials.""" from sqlalchemy import Boolean, ForeignKey, String, UniqueConstraint from sqlalchemy.orm import Mapped, mapped_column from app.models.base import Base, TimestampMixin, generate_uuid class PlatformApiCredential(Base, TimestampMixin): """Encrypted per-platform API key — highest priority for price/presence fetches.""" __tablename__ = "platform_api_credentials" __table_args__ = (UniqueConstraint("platform_id", name="uq_platform_api_platform"),) id: Mapped[str] = mapped_column(String(36), primary_key=True, default=generate_uuid) platform_id: Mapped[str] = mapped_column(String(50), nullable=False, index=True) provider: Mapped[str] = mapped_column(String(50), nullable=False) api_key_encrypted: Mapped[str] = mapped_column(String(512), nullable=False) api_secret_encrypted: Mapped[str | None] = mapped_column(String(512), nullable=True) is_enabled: Mapped[bool] = mapped_column(Boolean, nullable=False, default=True) updated_by_id: Mapped[str] = mapped_column( String(36), ForeignKey("users.id", ondelete="SET NULL"), nullable=True, ) updated_by_email: Mapped[str] = mapped_column(String(255), nullable=False, default="") def __repr__(self) -> str: return f""