feat: ud service

This commit is contained in:
2024-04-29 04:28:49 +03:00
parent 4431629cba
commit e3f6d982e5
3 changed files with 79 additions and 2 deletions

View File

@@ -1,11 +1,12 @@
from sqlalchemy import select
from sqlalchemy import select, update
from sqlalchemy.orm import joinedload
from models import Service, ServiceCategory
from services.base import BaseService
from schemas.service import ServiceGetAllResponse, ServiceSchema, ServiceGetAllCategoriesResponse, \
ServiceCategorySchema, ServiceCreateRequest, ServiceCreateResponse, ServiceCreateCategoryRequest, \
ServiceCreateCategoryResponse
ServiceCreateCategoryResponse, ServiceUpdateRequest, ServiceUpdateResponse, ServiceDeleteResponse, \
ServiceDeleteRequest
class ServiceService(BaseService):
@@ -33,6 +34,42 @@ class ServiceService(BaseService):
except Exception as e:
return ServiceCreateResponse(ok=False, message=f"Неудалось создать услугу, ошибка: {e}")
async def update(self, request: ServiceUpdateRequest) -> ServiceUpdateResponse:
try:
raw_service = request.data
service = await (self.session
.scalars(select(Service)
.filter(Service.id == raw_service.id)))
if not service:
return ServiceUpdateResponse(ok=False, message="Услуга не найдена")
service_dict = raw_service.dict()
service_dict['category_id'] = raw_service.category.id
del service_dict['category']
await self.session.execute(
update(Service)
.where(Service.id == raw_service.id)
.values(**service_dict)
)
await self.session.commit()
return ServiceUpdateResponse(ok=True, message="Услуга успешно обновлена")
except Exception as e:
return ServiceUpdateResponse(ok=False, message=f"Неудалось обновить услугу, ошибка: {e}")
async def delete(self, request: ServiceDeleteRequest) -> ServiceDeleteResponse:
try:
service = await (self.session
.scalar(select(Service)
.filter(Service.id == request.service_id)))
if not service:
return ServiceDeleteResponse(ok=False, message="Услуга не найдена")
await self.session.delete(service)
await self.session.commit()
return ServiceDeleteResponse(ok=True, message="Услуга успешно удалена")
except Exception as e:
return ServiceDeleteResponse(ok=False, message=f"Неудалось удалить услугу, ошибка: {e}")
async def create_category(self, request: ServiceCreateCategoryRequest) -> ServiceCreateCategoryResponse:
try:
raw_category = request.category