"""Delete post use case.""" from uuid import UUID from app.application.interfaces import TransactionManager from app.domain.exceptions import ForbiddenException, NotFoundException from app.domain.repositories import PostRepository class DeletePostUseCase: """Use case for deleting a blog post.""" def __init__( self, post_repo: PostRepository, tx_manager: TransactionManager, ) -> None: self._post_repo = post_repo self._tx_manager = tx_manager async def execute(self, post_id: UUID, current_user_id: str) -> None: """Execute the use case.""" post = await self._post_repo.get_by_id(post_id) if not post: raise NotFoundException(f"Post with id '{post_id}' not found") # Check authorization if post.author_id != current_user_id: raise ForbiddenException("You can only delete your own posts") # Delete the post await self._post_repo.delete(post_id) # Commit transaction await self._tx_manager.commit()