feat: ozon sync

This commit is contained in:
2024-09-02 19:19:41 +03:00
parent 82236a7750
commit d24be8fb7d
8 changed files with 337 additions and 39 deletions

View File

@@ -0,0 +1,40 @@
from abc import ABC, abstractmethod
from sqlalchemy.ext.asyncio import AsyncSession
from external.marketplace.base import BaseMarketplaceApi
from models import Product, ProductBarcode, ProductImage
class BaseProductSynchronizer(ABC):
products: list[Product] = []
barcodes: list[ProductBarcode] = []
images: list[ProductImage] = []
marketplace_products: list = []
api: BaseMarketplaceApi
session: AsyncSession
def __init__(self, session, marketplace, api):
self.session = session
self.marketplace = marketplace
self.api = api
self._clear()
def _clear(self):
self.products = []
self.barcodes = []
self.images = []
self.marketplace_products = []
async def _write(self):
instances = self.products + self.marketplace_products + self.barcodes + self.images
self.session.add_all(instances)
await self.session.commit()
@abstractmethod
async def create_products(self):
pass
@abstractmethod
async def synchronize_products(self):
pass