No curso foi desenvolvido esses 2 métodos em "Services.js":
onst dataSource = require('../database/models');
class Services {
constructor(nomeDoModel) {
this.model = nomeDoModel;
}
async pegaTodosOsRegistros(where = {}) {
return dataSource[this.model].findAll({ where: { ...where } });
}
async pegaRegistrosPorEscopo(escopo) {
return dataSource[this.model].scope(escopo).findAll();
}
Eu pensei em juntar esses 2 método fazendo esse:
const dataSource = require('../database/models'); //como o arquivo é index.js não precisamos passar o nome do arquivo.
class Services {
constructor(modelo) {
this.modelo = modelo;
}
async pegaTodosOsRegistros(opts = {}) {
const { scope, where, ...resto } = opts;
// 1) Resolve o "model" (com ou sem scope)
let modelo = dataSource[this.modelo];
if (scope) {
modelo = modelo.scope(scope);
}
// 2) Monta as opções finais pro findAll
const opcoes = { ...resto };
if (where && Object.keys(where).length > 0) {
opcoes.where = where; // deixa o Sequelize combinar com o que vier do scope
}
// 3) Executa
return modelo.findAll(opcoes);
}
}