Arag / app /models /platform_api_credential.py
AuthorBot
Add SuperAdmin retailer API keys with priority over env and free scraping.
ad1b7c6
Raw
History Blame Contribute Delete
1.37 kB
"""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}>"