28 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			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}")
 |