feat: crappy reordering
This commit is contained in:
@@ -112,6 +112,19 @@ async def create_category(
|
|||||||
return await ServiceService(session).create_category(request)
|
return await ServiceService(session).create_category(request)
|
||||||
|
|
||||||
|
|
||||||
|
@service_router.post(
|
||||||
|
'/categories/update',
|
||||||
|
response_model=ServiceUpdateCategoryResponse,
|
||||||
|
operation_id="update_service_category",
|
||||||
|
dependencies=[Depends(authorized_user)]
|
||||||
|
)
|
||||||
|
async def update_category(
|
||||||
|
session: Annotated[AsyncSession, Depends(get_session)],
|
||||||
|
request: ServiceUpdateCategoryRequest
|
||||||
|
):
|
||||||
|
return await ServiceService(session).update_category(request)
|
||||||
|
|
||||||
|
|
||||||
@service_router.post(
|
@service_router.post(
|
||||||
'/categories/reorder',
|
'/categories/reorder',
|
||||||
response_model=ServiceCategoryReorderResponse,
|
response_model=ServiceCategoryReorderResponse,
|
||||||
|
|||||||
@@ -122,6 +122,10 @@ class ServiceCategoryReorderRequest(BaseSchema):
|
|||||||
service_type: int
|
service_type: int
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceUpdateCategoryRequest(BaseSchema):
|
||||||
|
category: ServiceCategorySchema
|
||||||
|
|
||||||
|
|
||||||
# endregion
|
# endregion
|
||||||
|
|
||||||
# region Responses
|
# region Responses
|
||||||
@@ -183,4 +187,8 @@ class ServiceReorderResponse(OkMessageSchema):
|
|||||||
|
|
||||||
class ServiceCategoryReorderResponse(OkMessageSchema):
|
class ServiceCategoryReorderResponse(OkMessageSchema):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceUpdateCategoryResponse(OkMessageSchema):
|
||||||
|
pass
|
||||||
# endregion
|
# endregion
|
||||||
|
|||||||
@@ -160,6 +160,26 @@ class ServiceService(BaseService):
|
|||||||
raw_category = request.category
|
raw_category = request.category
|
||||||
category_dict = raw_category.model_dump()
|
category_dict = raw_category.model_dump()
|
||||||
del category_dict['id']
|
del category_dict['id']
|
||||||
|
last_deal_service_rank = await self.session.scalar(
|
||||||
|
select(ServiceCategory.deal_service_rank)
|
||||||
|
.order_by(ServiceCategory.deal_service_rank.desc())
|
||||||
|
.limit(1)
|
||||||
|
)
|
||||||
|
last_product_service_rank = await self.session.scalar(
|
||||||
|
select(ServiceCategory.product_service_rank)
|
||||||
|
.order_by(ServiceCategory.product_service_rank.desc())
|
||||||
|
.limit(1)
|
||||||
|
)
|
||||||
|
last_product_service_rank = lexorank.parse(
|
||||||
|
last_product_service_rank) if last_product_service_rank else middle(
|
||||||
|
Bucket.BUCEKT_0)
|
||||||
|
last_deal_service_rank = lexorank.parse(last_deal_service_rank) if last_deal_service_rank else middle(
|
||||||
|
Bucket.BUCEKT_0)
|
||||||
|
last_deal_service_rank = last_deal_service_rank.next()
|
||||||
|
last_product_service_rank = last_product_service_rank.next()
|
||||||
|
category_dict['deal_service_rank'] = str(last_deal_service_rank)
|
||||||
|
category_dict['product_service_rank'] = str(last_product_service_rank)
|
||||||
|
|
||||||
category = ServiceCategory(**category_dict)
|
category = ServiceCategory(**category_dict)
|
||||||
self.session.add(category)
|
self.session.add(category)
|
||||||
await self.session.commit()
|
await self.session.commit()
|
||||||
@@ -379,3 +399,21 @@ class ServiceService(BaseService):
|
|||||||
return ServiceCategoryReorderResponse(ok=True, message="Категории успешно пересортированы")
|
return ServiceCategoryReorderResponse(ok=True, message="Категории успешно пересортированы")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return ServiceCategoryReorderResponse(ok=False, message=f"Неудалось пересортировать категорию, ошибка: {e}")
|
return ServiceCategoryReorderResponse(ok=False, message=f"Неудалось пересортировать категорию, ошибка: {e}")
|
||||||
|
|
||||||
|
async def update_category(self, request: ServiceUpdateCategoryRequest) -> ServiceUpdateResponse:
|
||||||
|
try:
|
||||||
|
raw_category = request.category
|
||||||
|
category = await (self.session.get(ServiceCategory, raw_category.id))
|
||||||
|
if not category:
|
||||||
|
return ServiceUpdateResponse(ok=False, message="Категория не найдена")
|
||||||
|
category_dict = raw_category.dict()
|
||||||
|
del category_dict['id']
|
||||||
|
await self.session.execute(
|
||||||
|
update(ServiceCategory)
|
||||||
|
.where(ServiceCategory.id == raw_category.id)
|
||||||
|
.values(**category_dict)
|
||||||
|
)
|
||||||
|
await self.session.commit()
|
||||||
|
return ServiceUpdateResponse(ok=True, message="Категория успешно обновлена")
|
||||||
|
except Exception as e:
|
||||||
|
return ServiceUpdateResponse(ok=False, message=f"Неудалось обновить категорию, ошибка: {e}")
|
||||||
|
|||||||
Reference in New Issue
Block a user