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

@@ -38,6 +38,30 @@ async def create(
return await ServiceService(session).create(request) return await ServiceService(session).create(request)
@service_router.post(
'/update',
response_model=ServiceUpdateResponse,
operation_id="update_service"
)
async def update(
session: Annotated[AsyncSession, Depends(get_session)],
request: ServiceUpdateRequest
):
return await ServiceService(session).update(request)
@service_router.post(
'/delete',
response_model=ServiceDeleteResponse,
operation_id="delete_service"
)
async def delete(
session: Annotated[AsyncSession, Depends(get_session)],
request: ServiceDeleteRequest
):
return await ServiceService(session).delete(request)
@service_router.get( @service_router.get(
'/categories/get-all', '/categories/get-all',
response_model=ServiceGetAllCategoriesResponse, response_model=ServiceGetAllCategoriesResponse,

View File

@@ -28,6 +28,14 @@ class ServiceCreateCategoryRequest(CustomModelCamel):
category: ServiceCategorySchema category: ServiceCategorySchema
class ServiceUpdateRequest(CustomModelCamel):
data: ServiceSchema
class ServiceDeleteRequest(CustomModelCamel):
service_id: int
# endregion # endregion
@@ -46,4 +54,12 @@ class ServiceCreateResponse(OkMessageSchema):
class ServiceCreateCategoryResponse(OkMessageSchema): class ServiceCreateCategoryResponse(OkMessageSchema):
pass pass
class ServiceUpdateResponse(OkMessageSchema):
pass
class ServiceDeleteResponse(OkMessageSchema):
pass
# endregion # endregion

View File

@@ -1,11 +1,12 @@
from sqlalchemy import select from sqlalchemy import select, update
from sqlalchemy.orm import joinedload from sqlalchemy.orm import joinedload
from models import Service, ServiceCategory from models import Service, ServiceCategory
from services.base import BaseService from services.base import BaseService
from schemas.service import ServiceGetAllResponse, ServiceSchema, ServiceGetAllCategoriesResponse, \ from schemas.service import ServiceGetAllResponse, ServiceSchema, ServiceGetAllCategoriesResponse, \
ServiceCategorySchema, ServiceCreateRequest, ServiceCreateResponse, ServiceCreateCategoryRequest, \ ServiceCategorySchema, ServiceCreateRequest, ServiceCreateResponse, ServiceCreateCategoryRequest, \
ServiceCreateCategoryResponse ServiceCreateCategoryResponse, ServiceUpdateRequest, ServiceUpdateResponse, ServiceDeleteResponse, \
ServiceDeleteRequest
class ServiceService(BaseService): class ServiceService(BaseService):
@@ -33,6 +34,42 @@ class ServiceService(BaseService):
except Exception as e: except Exception as e:
return ServiceCreateResponse(ok=False, message=f"Неудалось создать услугу, ошибка: {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: async def create_category(self, request: ServiceCreateCategoryRequest) -> ServiceCreateCategoryResponse:
try: try:
raw_category = request.category raw_category = request.category