from abc import ABC, abstractmethod from typing import Union from sqlalchemy.ext.asyncio import AsyncSession from external.marketplace.factory import MarketplaceApiFactory from external.marketplace.ozon.core import OzonMarketplaceApi from external.marketplace.wildberries.core import WildberriesMarketplaceApi from external.marketplace.yandex.core import YandexMarketplaceApi from models import Marketplace class BaseMarketplaceController(ABC): api: Union[WildberriesMarketplaceApi, OzonMarketplaceApi, YandexMarketplaceApi] marketplace: Marketplace session: AsyncSession def __init__(self, session: AsyncSession, marketplace: Marketplace): self.api = MarketplaceApiFactory.get_marketplace_api(marketplace) self.marketplace = marketplace self.session = session @abstractmethod async def create_products(self): pass @abstractmethod async def synchronize_products(self): pass