Repositories¶
Camada anticorrupção: traduz exceções técnicas em erros de domínio.
py_return_success_or_error.repositories.repository
¶
Contrato da camada de repositório.
Repository
¶
Bases: ABC
Contrato do repositório: nunca lança falha técnica ao chamador.
É a abstração que o caso de uso recebe (inversão de dependência):
devolve sempre Success[TData] ou Failure[TError], com o erro
já traduzido para o conjunto fechado da feature.
Source code in src/py_return_success_or_error/repositories/repository.py
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | |
__call__(parameters)
abstractmethod
async
¶
Busca o dado e traduz falhas técnicas em erro de domínio.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
parameters
|
TParams
|
Parâmetros da busca. |
required |
Returns:
| Type | Description |
|---|---|
ReturnSuccessOrError[TData, TError]
|
|
Source code in src/py_return_success_or_error/repositories/repository.py
19 20 21 22 23 24 25 26 27 28 29 30 31 | |
py_return_success_or_error.repositories.repository_base
¶
Implementação base do repositório — a fronteira try/except.
RepositoryBase
¶
Bases: Repository[TData, TParams, TError]
Camada anticorrupção sobre um :class:DataSource.
Envolve a chamada ao datasource numa fronteira try/except:
- sucesso →
Success[TData]; - exceção técnica → :meth:
map_error→Failure[TError]; asyncio.CancelledError→ propaga (cancelamento não é falha de domínio).
Source code in src/py_return_success_or_error/repositories/repository_base.py
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | |
__call__(parameters)
async
¶
Executa o datasource dentro da fronteira de erro.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
parameters
|
TParams
|
Parâmetros da busca. |
required |
Returns:
| Type | Description |
|---|---|
ReturnSuccessOrError[TData, TError]
|
|
ReturnSuccessOrError[TData, TError]
|
traduzido por :meth: |
Source code in src/py_return_success_or_error/repositories/repository_base.py
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | |
__init__(datasource)
¶
Inicializa com a porta de dados a proteger.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
datasource
|
DataSource[TData, TParams]
|
A porta "burra" de acesso ao recurso externo. |
required |
Source code in src/py_return_success_or_error/repositories/repository_base.py
29 30 31 32 33 34 35 | |
map_error(exception, parameters)
abstractmethod
¶
Traduz a exceção técnica num caso do conjunto fechado da feature.
Abstrato: não há erro universal a fabricar — cada repositório
decide como cada exceção vira um caso de TError (tipicamente
com um caso "genérico" para o inesperado).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
exception
|
Exception
|
A exceção técnica capturada. |
required |
parameters
|
TParams
|
Os parâmetros da chamada que falhou. |
required |
Returns:
| Type | Description |
|---|---|
TError
|
O erro de domínio correspondente. |
Source code in src/py_return_success_or_error/repositories/repository_base.py
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | |