You've already forked RekomenciBackend
fix(): copy domain entities upon uow.add
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user