No curso foi criado esse método em "PessoaController.js":
async pegaTodasAsPessoas(req, res){
try{
const listaTodasAsPessoas = await pessoaServices.pegaPessoasEscopoTodos();
return res.status(200).json(listaTodasAsPessoas);
}catch(erro){
return res.status(500).json({ erro: erro.message });
}
}
Mas não seria melhor criar o método "pegaPorEscopo" em "Controller.js" que é genérico e herdado por todos controllers específicos?
async pegaPorEscopo(req, res) {
try {
// whitelist de scopes exposta pelo Service da entidade
const scopesPermitidos = this.#scopesPermitidos();
const scope = String(req.params?.scope || '').trim();
// 422: sem escopo na rota
if (!scope) {
return res.status(422).json({
erro: 'Nenhum escopo foi informado na rota.',
dicas: { 'scopes permitidos': scopesPermitidos }
});
}
// 422: escopo não permitido
if (!scopesPermitidos.includes(scope)) {
return res.status(422).json({
erro: 'Escopo inválido.',
detalhes: {
listagem: [
{
parametro: 'scope',
valorRecebido: scope,
dica: `Use um dos: ${scopesPermitidos.join(', ')}`,
tipo: 'valor_invalido'
}
]
}
});
}
// ✅ apenas aplica o escopo; não aceita query params (sem where/paginação)
const registros = await this.entidadeService.pegaTodosOsRegistros({ scope });
return res.status(200).json(registros);
} catch (erro) {
return res.status(500).json({ erro: erro.message });
}
}
Qual a melhor abordagem?