from dataclasses import dataclass from campaigns.assets.models import Asset from campaigns.assets.services import AssetService from campaigns.connectors.db import Database, session_context from campaigns.core.handler import Handler @dataclass(frozen=True) class GetAssetRequest: asset_id: str @dataclass class GetAssetHandler(Handler[GetAssetRequest, Asset]): db: Database asset_service: AssetService @session_context(in_transaction=False) async def handle(self, request: GetAssetRequest) -> Asset: return await self.asset_service.get_asset(asset_id=request.asset_id)