Quiero crear una consulta que devuelva un modelo que no sea db utilizando el DSL de Sequelize. Escribí la consulta sin procesar de la siguiente manera:
instanceMethods: { getHoursReport: function({from, to, companies}) { let currentDate = new Date(); from = from || new Date( currentDate.getFullYear(), currentDate.getMonth(), 1 ); to = to || new Date( currentDate.getFullYear(), currentDate.getMonth() + 1, 0 ); let fromString = from.toISOString(); let toString = to.toISOString(); let companiesFilter = 'true'; if (typeof companies !== 'undefined' && companies.length > 0) { companiesFilter = `c.id IN ('${companies.join("','")}')`; } // @todo: Use Sequelize DSL to make the query const query = ` SELECT p.id as contractor, string_agg(DISTINCT pr.name, ';') as projects, round(sum(te.hours), 2) as "totalHours", round(sum(te.hours * te.rate), 2) as "totalPay" FROM person_company_roles pcr JOIN companies c ON pcr."companyId" = c.id JOIN projects pr ON pr."clientId" = c.id JOIN project_timesheets pt ON pt."projectId" = pr.id JOIN timesheet_entries te ON pt.id = te."timesheetId" JOIN people p ON p.id = pt."contractorId" WHERE pcr."personId" = '${this.id}' AND pcr.role = 'owner' AND te."entryDate"::date BETWEEN '${fromString}'::date AND '${toString}'::date AND ${companiesFilter} GROUP BY p.id; `; return sequelize.query(query, { model: sequelize.models.hoursReport }).then( report => report[0] ); } }En los documentos de Sequelize, la consulta se crea a partir de un modelo. Entonces, no entiendo cómo podría crear la consulta desde mi modelo hoursReport .
Cualquier ayuda será apreciada.
Gracias por adelantado