Coverage for arclith / application / use_cases / update.py: 100%
16 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-25 15:02 +0100
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-25 15:02 +0100
1from datetime import datetime, timezone
2from typing import Generic, TypeVar
4from arclith.domain.models.entity import Entity
5from arclith.domain.ports.logger import Logger
6from arclith.domain.ports.repository import Repository
8T = TypeVar("T", bound=Entity)
11class UpdateUseCase(Generic[T]):
12 def __init__(self, repository: Repository[T], logger: Logger) -> None:
13 self._repository = repository
14 self._logger = logger
16 async def execute(self, entity: T) -> T:
17 entity = entity.model_copy(update={
18 "updated_at": datetime.now(timezone.utc),
19 "version": entity.version + 1,
20 })
21 self._logger.info("✏️ Updating entity", type=type(entity).__name__, uuid=str(entity.uuid))
22 result = await self._repository.update(entity)
23 self._logger.info("✅ Entity updated", type=type(result).__name__, uuid=str(result.uuid))
24 return result