Source code for minos.saga.executions.repositories.abc

from abc import (
    ABC,
    abstractmethod,
)
from typing import (
    Union,
)
from uuid import (
    UUID,
)

from minos.common import (
    SetupMixin,
)

from ..saga import (
    SagaExecution,
)


[docs]class SagaExecutionRepository(SetupMixin, ABC): """Saga Execution Repository class."""
[docs] async def store(self, execution: SagaExecution) -> None: """Store an execution. :param execution: Execution to be stored. :return: This method does not return anything. """ return await self._store(execution)
async def _store(self, execution: SagaExecution) -> None: raise NotImplementedError
[docs] async def load(self, uuid: Union[str, UUID]) -> SagaExecution: """Load the saga execution stored on the given key. :param uuid: The key to identify the execution. :return: A ``SagaExecution`` instance. """ if not isinstance(uuid, UUID): uuid = UUID(uuid) return await self._load(uuid)
@abstractmethod async def _load(self, uuid: UUID) -> SagaExecution: raise NotImplementedError
[docs] async def delete(self, uuid: Union[SagaExecution, str, UUID]) -> None: """Delete the reference of the given key. :param uuid: Execution key to be deleted. :return: This method does not return anything. """ if isinstance(uuid, SagaExecution): uuid = uuid.uuid if not isinstance(uuid, UUID): uuid = UUID(uuid) return await self._delete(uuid)
async def _delete(self, key: UUID) -> None: raise NotImplementedError