const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; module.exports = Self => { Self.remoteMethod('getTaxes', { description: 'Gets the taxes of a given order', accessType: 'READ', accepts: [{ arg: 'id', type: 'number', required: true, description: 'order id', http: {source: 'path'} }], returns: { type: 'object', root: true }, http: { path: `/:id/getTaxes`, verb: 'GET' } }); Self.getTaxes = async orderFk => { let conn = Self.dataSource.connector; let stmts = []; let stmt; stmts.push('DROP TEMPORARY TABLE IF EXISTS tmp.order'); stmt = new ParameterizedSQL(` CREATE TEMPORARY TABLE tmp.order (INDEX (orderFk)) ENGINE = MEMORY SELECT ? AS orderFk`, [orderFk]); stmts.push(stmt); stmts.push('CALL hedera.orderGetTax()'); let orderTaxIndex = stmts.push('SELECT * FROM tmp.orderAmount') - 1; stmts.push(` DROP TEMPORARY TABLE tmp.order, tmp.orderTax`); let sql = ParameterizedSQL.join(stmts, ';'); let result = await conn.executeStmt(sql); return result[orderTaxIndex]; }; };