Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dúvida sobre validação #1

Open
mbackermann opened this issue Mar 3, 2021 · 2 comments
Open

Dúvida sobre validação #1

mbackermann opened this issue Mar 3, 2021 · 2 comments

Comments

@mbackermann
Copy link

A validação do usuário ficaria aonde? Por exemplo como e-mail obrigatório, senha mínima de 8 caracteres, nome obrigatório, etc? Isso faz parte do useCase já que é uma lógica de negócio? Mas se eu precisasse validar também no updateUserUseCase, eu teria código repetido. Talvez no DTO? Realmente é uma dúvida que tenho.

@rimelke
Copy link

rimelke commented Mar 13, 2021

Oii Maurício!!!

A validação poderia ser feita em um arquivo separado na pasta do useCase, ex: "CreateUserValidator"/"UpdateUserValidator". Esse arquivo seria uma classe que teria um método "validate", por exemplo, que receberia os dados de acordo com o DTO. Essa classe seria "injetada" no constructor do controller e seria chamada antes do useCase, propriamente. Poderia dar um throw no erro da validação, que cairia no try/catch do controller.

Dessa forma, a validação fica desacoplada do useCase, podendo ser modificada e até mesmo testada totalmente à parte. Apesar de como tu disse, em alguns casos haver uma repetição de código, acredito que esse desacoplamento seja necessário para respeitar os princípios e garantir a liberdade em uma futura modificação (ex: pode vir a acontecer dos dados do CreateUser e UpdateUser serem diferentes mesmo que hoje sejam os mesmos). ;D

@mbackermann
Copy link
Author

@rimelke Muito obrigado! Faz bastante sentido essa implementação. Vou aplicá-la.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants