feat: a lot of a lot

This commit is contained in:
2024-09-01 01:05:11 +03:00
parent 867dfbe597
commit 4ae03284a3
43 changed files with 700 additions and 13 deletions

View File

@@ -1,7 +1,9 @@
from sqlalchemy import select
from pyexpat.errors import messages
from sqlalchemy import select, insert, delete, update
from sqlalchemy.orm import joinedload
from models import BaseMarketplace
from schemas.marketplace import GetAllBaseMarketplacesResponse
from models import BaseMarketplace, Marketplace
from schemas.marketplace import *
from services.base import BaseService
@@ -12,3 +14,81 @@ class MarketplaceService(BaseService):
return GetAllBaseMarketplacesResponse(
base_marketplaces=base_marketplaces
)
async def get_client_marketplaces(self, request: GetClientMarketplacesRequest) -> GetClientMarketplacesResponse:
stmt = (
select(
Marketplace
)
.options(
joinedload(Marketplace.base_marketplace),
joinedload(Marketplace.client)
)
.where(
Marketplace.client_id == request.client_id
)
)
marketplaces = (await self.session.scalars(stmt)).all()
return GetClientMarketplacesResponse(
marketplaces=marketplaces
)
async def create_marketplace(self, request: CreateMarketplaceRequest) -> CreateMarketplaceResponse:
try:
marketplace = request.marketplace
marketplace_dict = marketplace.dict()
stmt = (
insert(Marketplace)
.values(
**marketplace_dict
)
)
await self.session.execute(stmt)
await self.session.commit()
return CreateMarketplaceResponse(ok=True, message='Маркетплейс успешно создан')
except Exception as e:
await self.session.rollback()
return CreateMarketplaceResponse(ok=False, message=str(e))
async def delete_marketplace(self, request: DeleteMarketplaceRequest) -> DeleteMarketplaceResponse:
try:
stmt = (
delete(Marketplace)
.where(
Marketplace.id == request.marketplace_id
)
)
await self.session.execute(stmt)
await self.session.commit()
return DeleteMarketplaceResponse(ok=True, message='Маркетплейс успешно удален')
except Exception as e:
await self.session.rollback()
return DeleteMarketplaceResponse(ok=False, message=str(e))
async def update_marketplace(self, request: UpdateMarketplaceRequest) -> UpdateMarketplaceResponse:
try:
marketplace = request.marketplace
marketplace_dict = marketplace.dict()
del marketplace_dict['id']
del marketplace_dict['base_marketplace']
del marketplace_dict['client']
marketplace_dict['base_marketplace_key'] = marketplace.base_marketplace.key
marketplace_dict['client_id'] = marketplace.client.id
stmt = (
update(
Marketplace
)
.values(
**marketplace_dict
)
.where(
Marketplace.id == marketplace.id
)
)
await self.session.execute(stmt)
await self.session.commit()
return UpdateMarketplaceResponse(ok=True, message='Маркетплейс успешно обновлен')
except Exception as e:
await self.session.rollback()
return UpdateMarketplaceResponse(ok=False, message=str(e))