| 
 | 1 | +from dataclasses import dataclass  | 
 | 2 | +from functools import partial  | 
 | 3 | + | 
 | 4 | +from fastapi import FastAPI  | 
 | 5 | +from models_library.resource_tracker_licensed_items_checkouts import (  | 
 | 6 | +    LicensedItemCheckoutID,  | 
 | 7 | +)  | 
 | 8 | +from servicelib.rabbitmq._client_rpc import RabbitMQRPCClient  | 
 | 9 | +from servicelib.rabbitmq.rpc_interfaces.resource_usage_tracker.licensed_items_checkouts import (  | 
 | 10 | +    get_licensed_item_checkout as _get_licensed_item_checkout,  | 
 | 11 | +)  | 
 | 12 | + | 
 | 13 | +from ..exceptions.service_errors_utils import service_exception_mapper  | 
 | 14 | +from ..models.schemas.model_adapter import LicensedItemCheckoutGet  | 
 | 15 | + | 
 | 16 | +_exception_mapper = partial(  | 
 | 17 | +    service_exception_mapper, service_name="ResourceUsageTracker"  | 
 | 18 | +)  | 
 | 19 | + | 
 | 20 | + | 
 | 21 | +@dataclass  | 
 | 22 | +class ResourceUsageTrackerClient:  | 
 | 23 | +    _client: RabbitMQRPCClient  | 
 | 24 | + | 
 | 25 | +    @_exception_mapper(rpc_exception_map={})  | 
 | 26 | +    async def get_licensed_item_checkout(  | 
 | 27 | +        self, *, product_name: str, licensed_item_checkout_id: LicensedItemCheckoutID  | 
 | 28 | +    ) -> LicensedItemCheckoutGet:  | 
 | 29 | +        _licensed_item_checkout = await _get_licensed_item_checkout(  | 
 | 30 | +            rabbitmq_rpc_client=self._client,  | 
 | 31 | +            product_name=product_name,  | 
 | 32 | +            licensed_item_checkout_id=licensed_item_checkout_id,  | 
 | 33 | +        )  | 
 | 34 | +        return LicensedItemCheckoutGet(  | 
 | 35 | +            licensed_item_checkout_id=_licensed_item_checkout.licensed_item_checkout_id,  | 
 | 36 | +            licensed_item_id=_licensed_item_checkout.licensed_item_id,  | 
 | 37 | +            wallet_id=_licensed_item_checkout.wallet_id,  | 
 | 38 | +            user_id=_licensed_item_checkout.user_id,  | 
 | 39 | +            product_name=_licensed_item_checkout.product_name,  | 
 | 40 | +            started_at=_licensed_item_checkout.started_at,  | 
 | 41 | +            stopped_at=_licensed_item_checkout.stopped_at,  | 
 | 42 | +            num_of_seats=_licensed_item_checkout.num_of_seats,  | 
 | 43 | +        )  | 
 | 44 | + | 
 | 45 | + | 
 | 46 | +def setup(app: FastAPI, rabbitmq_rmp_client: RabbitMQRPCClient):  | 
 | 47 | +    app.state.wb_api_rpc_client = ResourceUsageTrackerClient(  | 
 | 48 | +        _client=rabbitmq_rmp_client  | 
 | 49 | +    )  | 
0 commit comments