from sqlalchemy import ForeignKey, JSON from sqlalchemy.orm import Mapped, mapped_column, relationship from typing_extensions import TYPE_CHECKING from models import BaseModel if TYPE_CHECKING: from models import Client class BaseMarketplace(BaseModel): __tablename__ = 'base_marketplaces' key: Mapped[str] = mapped_column(primary_key=True) name: Mapped[str] = mapped_column() icon_url: Mapped[str] = mapped_column() class Marketplace(BaseModel): __tablename__ = 'marketplaces' id: Mapped[int] = mapped_column(primary_key=True) base_marketplace_key: Mapped[str] = mapped_column(ForeignKey("base_marketplaces.key"), nullable=False) base_marketplace: Mapped["BaseMarketplace"] = relationship(lazy="joined") client_id: Mapped[int] = mapped_column(ForeignKey('clients.id'), nullable=False, comment='ID клиента') client: Mapped["Client"] = relationship('Client') name: Mapped[str] = mapped_column(nullable=False) auth_data: Mapped[dict] = mapped_column(type_=JSON)