Coverage for api/handlers/orders/trash_orders.py: 52%
19 statements
« prev ^ index » next coverage.py v7.6.2, created at 2024-10-10 03:02 +0300
« prev ^ index » next coverage.py v7.6.2, created at 2024-10-10 03:02 +0300
1import asyncio
2from typing import Any
4from bson import ObjectId
5from database.orders import move_order_and_return
6from mongodb import buf_col, trash_orders_col
7from pymongo.results import DeleteResult
8from services.notifications.director import notification_api
9from sotrans_models.models.orders.order import (
10 OrderDBModel,
11 OrderStatus,
12 OrderUpdateModel,
13)
14from utils.helper import etag_detalizer
17async def on_put_trash_to_buffer(
18 order_id: ObjectId,
19) -> dict[str, Any] | OrderDBModel:
20 updated = await move_order_and_return(
21 order_id, trash_orders_col, buf_col, OrderStatus.buffer
22 )
23 asyncio.create_task(
24 notification_api.new_in_buffer(OrderDBModel(**updated))
25 )
26 return updated
29async def on_remove_from_trash(
30 order_id: ObjectId, order: OrderUpdateModel | None
31):
32 etag_q = (
33 {} if order is None or order.etag is None else {"etag": order.etag}
34 )
35 deleted: DeleteResult = await trash_orders_col.collection.delete_one(
36 {"id": order_id} | etag_q
37 )
38 if deleted.deleted_count == 1:
39 return
40 await etag_detalizer(trash_orders_col, etag_q, {"id": order_id})