Spaces:
Running
Running
| """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"<PlatformApiCredential {self.platform_id} provider={self.provider}>" | |