2
respostas

Usar regra no model ou em um repository

Minha dúvida é que tenho um classe user e uma classe product. Preciso exibir todos os produtos se o user for admin mas se não for listar apenas os produtos desse usuário. Alguns me falaram que deveria fazer um método na classe user e outros que deveria criar um repository para isso. Qual seria melhor prática nesse cenário?

2 respostas

Oi Marcelo, tudo bom?

Realmente, há duas formas de fazer isso. Uma pelo banco outra pela memória.

Repara que se formos pelo lado da memoria, pensando em processamento, estamos buscando todos os dados no banco, para pegar uma lista na memoria. A partir dessa lista aplicariamos um filtro (algum conjunto de ifs em um for) para selecionar os casos que a gente quer.

Criando um repository especifico para isso estamos buscando direto do banco exatamente os dados que a gente quer =)

Esse Repository pode ser o proprio ProductRepository. Algo como, findAllByUserRole.

A gente só precisaria tratar o caso de verificar se o usuario é admin para chamar o método certo do nosso repository.

Pensei em criar um método getAllProducts que verifica se o usuario é admin, se for ele lista todos, se não for ele lista apenas os produtos desse usuário. Seria a forma correta? Outra coisa, como poderia usar esse método? Poderia se um método estático?