Python implementation of Domain Notification Pattern inspired by Flunt (.NET)
Project description
PORTUGUÊS | ENGLISH
🐍 PyFlunt: Domain Notification Pattern
Implementação Python inspirada no Flunt (.NET)
Flunt te auxilia a implementar Domain Notification Pattern em sua aplicação para centralizar erros e mudanças em determinadas ações e entidades.
Flunt surgiu de duas necessidades: implementar o Domain Notification Pattern para substituir exceções no nível de domínio da aplicação e reduzir a quantidade de IFs (complexidade) usando uma abordagem baseada em contratos.
Assim, basicamente o que o Flunt faz é adicionar uma lista de Notificações à sua classe e vários métodos para interagir com ela.
➡️ Como usar
🔧 Instalação
pip install flunt
🔔 Notifiable
from flunt.notifications.notifiable import Notifiable
from flunt.validations.contract import Contract
class Nome(Notifiable):
def __init__(self, nome):
super().__init__()
if len(nome) > 3:
self.add_notification(
Notification(field='nome', message='nome inválido')
)
self._nome = nome
📜 Contract
"""Módulo Objetos de Valor."""
from flunt.notifications.notifiable import Notifiable
from flunt.validations.contract import Contract
class Nome(Notifiable):
"""Classe Objeto de Valor Nome."""
def __init__(self, primeiro_nome, ultimo_nome):
"""Encontrar 'Construtor'."""
super().__init__()
self.primeiro_nome = primeiro_nome
self.ultimo_nome = ultimo_nome
self.add_notifications(
Contract()
.requires(self.primeiro_nome, 'primeiro nome')
.requires(self.ultimo_nome, 'último nome')
.is_greater_than(
value=self.primeiro_nome,
comparer=3,
key="primeiro_nome",
message="Mínimo de 3 caracteres",
)
.is_greater_than(
value=self.ultimo_nome,
comparer=3,
key="ultimo_nome",
message="Mínimo de 3 caracteres",
)
.get_notifications()
)
nome = Nome('Emerson', 'Delatorre')
if not nome.is_valid():
for notification in nome.get_notifications():
print(notification)
Contribuindo
Consulte nosso DevGuide no link a seguir: CONTRIBUTING
Registro de Alterações
Consulte nosso registro de alterações no link a seguir: CHANGELOG
📄 Licença
Este projeto contém a licença MIT. Consulte o arquivo LICENSE.
Mods
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.