Files
tgex-backend/src/usecase/creative/update_creative.py

46 lines
1.2 KiB
Python

import logging
import uuid
from typing import TYPE_CHECKING
from src import domain, dto
if TYPE_CHECKING:
from .. import Usecase
log = logging.getLogger(__name__)
async def update_creative(
self: 'Usecase',
creative_id: uuid.UUID,
input: dto.UpdateCreativeInput,
user_id: uuid.UUID,
workspace_id: uuid.UUID,
) -> dto.CreativeOutput:
await self.ensure_workspace_access(workspace_id, user_id)
creative = await self.database.get_creative(workspace_id, creative_id)
if not creative:
log.warning('User %s attempted to update unavailable creative %s', user_id, creative_id)
raise domain.CreativeNotFound(creative_id)
if input.name:
creative.name = input.name
if input.text:
creative.text = input.text
if input.status:
creative.status = input.status
await self.database.update_creative(creative)
return dto.CreativeOutput(
id=creative.id,
name=creative.name,
text=creative.text,
project_id=creative.project_id,
project_channel_title=creative.project.channel.title,
created_at=creative.created_at,
status=creative.status,
placements_count=creative.placements_count,
)