feat: marketplaces endpoints
This commit is contained in:
@ -1,8 +1,9 @@
|
||||
from .deal_product import DealProductRepository as DealProductRepository
|
||||
from .product_service import ProductServiceRepository as ProductServiceRepository
|
||||
from .deal_service import DealServiceRepository as DealServiceRepository
|
||||
from .product import ProductRepository as ProductRepository
|
||||
from .service import ServiceRepository as ServiceRepository
|
||||
from .services_kit import ServicesKitRepository as ServicesKitRepository
|
||||
from .service_category import ServiceCategoryRepository as ServiceCategoryRepository
|
||||
from .barcode_template import BarcodeTemplateRepository as BarcodeTemplateRepository
|
||||
from .deal_product import DealProductRepository as DealProductRepository
|
||||
from .deal_service import DealServiceRepository as DealServiceRepository
|
||||
from .marketplace import MarketplaceRepository as MarketplaceRepository
|
||||
from .product import ProductRepository as ProductRepository
|
||||
from .product_service import ProductServiceRepository as ProductServiceRepository
|
||||
from .service import ServiceRepository as ServiceRepository
|
||||
from .service_category import ServiceCategoryRepository as ServiceCategoryRepository
|
||||
from .services_kit import ServicesKitRepository as ServicesKitRepository
|
||||
|
||||
62
modules/fulfillment_base/repositories/marketplace.py
Normal file
62
modules/fulfillment_base/repositories/marketplace.py
Normal file
@ -0,0 +1,62 @@
|
||||
from sqlalchemy.orm import joinedload
|
||||
|
||||
from modules.clients.models import Client
|
||||
from modules.fulfillment_base.models import (
|
||||
Marketplace,
|
||||
BaseMarketplace,
|
||||
)
|
||||
from modules.fulfillment_base.schemas.marketplace import (
|
||||
CreateMarketplaceSchema,
|
||||
UpdateMarketplaceSchema,
|
||||
)
|
||||
from repositories.mixins import *
|
||||
|
||||
|
||||
class MarketplaceRepository(
|
||||
RepCrudMixin[Marketplace, CreateMarketplaceSchema, UpdateMarketplaceSchema],
|
||||
):
|
||||
session: AsyncSession
|
||||
entity_class = Marketplace
|
||||
entity_not_found_msg = "Маркетплейс не найден"
|
||||
|
||||
def _process_get_all_stmt_with_args(self, stmt: Select, *args) -> Select:
|
||||
client_id: int = args[0]
|
||||
return (
|
||||
stmt.options(
|
||||
joinedload(Marketplace.base_marketplace),
|
||||
joinedload(Marketplace.client),
|
||||
)
|
||||
.where(
|
||||
Marketplace.is_deleted.is_(False), Marketplace.client_id == client_id
|
||||
)
|
||||
.order_by(Marketplace.id)
|
||||
)
|
||||
|
||||
def _process_get_by_id_stmt(self, stmt: Select) -> Select:
|
||||
return stmt.options(
|
||||
joinedload(Marketplace.base_marketplace), joinedload(Marketplace.client)
|
||||
)
|
||||
|
||||
async def get_base_marketplaces(self) -> list[BaseMarketplace]:
|
||||
stmt = select(BaseMarketplace)
|
||||
result = await self.session.execute(stmt)
|
||||
return list(result.scalars().all())
|
||||
|
||||
async def _prepare_create(self, data: CreateMarketplaceSchema) -> dict:
|
||||
dict_data = data.model_dump()
|
||||
dict_data["base_marketplace_id"] = data.base_marketplace.id
|
||||
del dict_data["base_marketplace"]
|
||||
dict_data["client_id"] = data.client.id
|
||||
del dict_data["client"]
|
||||
return dict_data
|
||||
|
||||
async def update(
|
||||
self, template: Marketplace, data: UpdateMarketplaceSchema
|
||||
) -> Marketplace:
|
||||
if data.base_marketplace:
|
||||
data.base_marketplace = BaseMarketplace(
|
||||
**data.base_marketplace.model_dump()
|
||||
)
|
||||
if data.client:
|
||||
data.client = Client(**data.client.model_dump())
|
||||
return await self._apply_update_data_to_model(template, data, True)
|
||||
Reference in New Issue
Block a user