from typing import Union from sqlalchemy.ext.asyncio import AsyncSession from database import Marketplace from database.sipro.enums.general import BaseMarketplace from updaters.ozon_updater import OzonUpdater from updaters.wildberries_updater import WildberriesUpdater from updaters.yandexmarket_updater import YandexmarketUpdater class UpdaterFactory: @staticmethod def get_updater(session: AsyncSession, marketplace: Marketplace) -> Union[ OzonUpdater, WildberriesUpdater, YandexmarketUpdater ]: match marketplace.base_marketplace: case BaseMarketplace.WILDBERRIES: return WildberriesUpdater(marketplace, session) case BaseMarketplace.OZON: return OzonUpdater(marketplace, session) case BaseMarketplace.YANDEX_MARKET: return YandexmarketUpdater(marketplace, session) raise ValueError()