feat: ud service
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user