123
This commit is contained in:
@@ -1,15 +1,41 @@
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import List
|
||||
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
import queries.general
|
||||
from database import Marketplace
|
||||
from updaters.stocks_updater import StockUpdate
|
||||
from marketplaces import MarketplaceApiFactory
|
||||
from marketplaces.base import BaseMarketplaceApi
|
||||
from queries.general import StockData
|
||||
from schemas.general import StockUpdate
|
||||
|
||||
|
||||
class BaseMarketplaceUpdater(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self, marketplace: Marketplace):
|
||||
pass
|
||||
marketplace: Marketplace
|
||||
marketplace_api: BaseMarketplaceApi
|
||||
session: AsyncSession
|
||||
|
||||
def __init__(self, marketplace: Marketplace, session: AsyncSession):
|
||||
self.marketplace = marketplace
|
||||
self.session = session
|
||||
self.marketplace_api = MarketplaceApiFactory.get_marketplace_api(marketplace)
|
||||
|
||||
@abstractmethod
|
||||
async def update(self, updates: List[StockUpdate]):
|
||||
def get_update_for_marketplace(self,
|
||||
stock_data: StockData) -> dict:
|
||||
pass
|
||||
|
||||
async def update(self, updates: List[StockUpdate]):
|
||||
product_ids = list(set([update.product_id for update in updates]))
|
||||
stock_data_list = await queries.general.get_stocks_data(
|
||||
session=self.session,
|
||||
marketplace=self.marketplace,
|
||||
product_ids=product_ids
|
||||
)
|
||||
return
|
||||
marketplace_updates = []
|
||||
for stock_data in stock_data_list:
|
||||
marketplace_update = self.get_update_for_marketplace(stock_data)
|
||||
marketplace_updates.append(marketplace_update)
|
||||
await self.marketplace_api.update_stocks(marketplace_updates)
|
||||
|
||||
Reference in New Issue
Block a user