28 lines
877 B
Python
28 lines
877 B
Python
import logging
|
|
from typing import TYPE_CHECKING
|
|
|
|
from src import domain, dto
|
|
|
|
if TYPE_CHECKING:
|
|
from .. import Usecase
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
async def get_creative(self: 'Usecase', input: dto.GetCreativeInput) -> dto.CreativeOutput:
|
|
creative = await self.database.get_creative(input.user_id, input.creative_id)
|
|
if not creative:
|
|
log.warning('User %s attempted to access unavailable creative %s', input.user_id, input.creative_id)
|
|
raise domain.CreativeNotFound(input.creative_id)
|
|
|
|
return dto.CreativeOutput(
|
|
id=creative.id,
|
|
name=creative.name,
|
|
text=creative.text,
|
|
target_channel_id=creative.target_channel_id,
|
|
target_channel_title=creative.target_channel.title,
|
|
created_at=creative.created_at,
|
|
status=creative.status,
|
|
placements_count=creative.placements_count,
|
|
)
|