Coverage for src/kwai/modules/portal/delete_news_item.py: 100%
12 statements
« prev ^ index » next coverage.py v7.6.10, created at 2024-01-01 00:00 +0000
« prev ^ index » next coverage.py v7.6.10, created at 2024-01-01 00:00 +0000
1"""Module for defining the use case "Delete News Item"."""
3from dataclasses import dataclass
5from kwai.modules.portal.news.news_item import NewsItemIdentifier
6from kwai.modules.portal.news.news_item_repository import NewsItemRepository
9@dataclass(kw_only=True, frozen=True, slots=True)
10class DeleteNewsItemCommand:
11 """Input for the use case "Delete News Item"."""
13 id: int
16class DeleteNewsItem:
17 """Use case "Delete Page"."""
19 def __init__(self, repo: NewsItemRepository):
20 """Initialize the use case.
22 Args:
23 repo: A repository for deleting a news item.
24 """
25 self._repo = repo
27 async def execute(self, command: DeleteNewsItemCommand) -> None:
28 """Executes the use case.
30 Args:
31 command: The input for this use case.
33 Raises:
34 NewsItemNotFoundException: when the news item does not exist.
35 """
36 news_item = await self._repo.get_by_id(NewsItemIdentifier(command.id))
37 await self._repo.delete(news_item)