feat: a lot of a lot
This commit is contained in:
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user