fix(): copy domain entities upon uow.add

This commit is contained in:
doas root
2025-11-17 22:58:26 +03:00
parent 89dffcabbd
commit 393f66a206
5 changed files with 133 additions and 24 deletions
@@ -1,7 +1,9 @@
import copy
from typing import Any, override
from sqlalchemy.ext.asyncio import AsyncSession
from template_project.application.common.entity import Entity
from template_project.application.common.unit_of_work import UnitOfWork
@@ -11,7 +13,8 @@ class DefaultUnitOfWork(UnitOfWork):
@override
async def add(self, *entities: Any) -> None:
self._session.add_all(entities)
filtered_entities = [copy.copy(entity) if isinstance(entity, Entity) else entity for entity in entities]
self._session.add_all(filtered_entities)
await self._session.flush()
@override
@@ -1,7 +1,7 @@
from collections.abc import Hashable
from dataclasses import dataclass
from dataclasses import dataclass, replace
from datetime import datetime
from typing import cast, dataclass_transform, override
from typing import Self, cast, dataclass_transform, override
from uuid import UUID
from template_project.application.common.errors import EntityAlreadyDeletedError
@@ -22,6 +22,9 @@ class Entity[EntityId: UUID](Hashable):
if self.deleted_at is not None:
raise EntityAlreadyDeletedError(entity_name=self.__class__.__name__)
def __copy__(self) -> Self:
return replace(self)
@override
def __eq__(self, other: object) -> bool:
if isinstance(other, Entity):