Files
Fulfillment-Backend/marketplaces/factory.py

28 lines
1.0 KiB
Python

from typing import Union
from sqlalchemy.ext.asyncio import AsyncSession
from enums.base_marketplace import BaseMarketplace
from marketplaces.ozon.core import OzonController
from marketplaces.wildberries.core import WildberriesController
from marketplaces.yandex.core import YandexController
from models import Marketplace
class MarketplaceControllerFactory:
@staticmethod
def get_controller(session: AsyncSession, marketplace: Marketplace) -> Union[
WildberriesController,
OzonController,
YandexController
]:
match marketplace.base_marketplace_key:
case BaseMarketplace.WILDBERRIES:
return WildberriesController(session, marketplace)
case BaseMarketplace.OZON:
return OzonController(session, marketplace)
case BaseMarketplace.YANDEX_MARKET:
return YandexController(session, marketplace)
case _:
raise ValueError(f"Unsupported marketplace: {marketplace.base_marketplace_key}")