UNPKG

orange-orm

Version:

Object Relational Mapper

50 lines (43 loc) 1.14 kB
const getSessionSingleton = require('../getSessionSingleton'); function resolveExecuteQuery(context, query) { return resolve; function resolve(success, failed) { try { var client = getSessionSingleton(context, 'dbClient'); query = negotiateNullParams(query); client.executeQuery(query, onCompleted); } catch (e) { failed(e); } function onCompleted(err, rows) { if (!err) success(rows); else failed(err); } } } function negotiateNullParams(query) { if (query && query.parameters && query.parameters.length > 0 && (query.parameters.filter(x => x === null || x === undefined).length > 0)) { var splitted = query.sql().split('?'); var sql = ''; var parameters = []; var lastIndex = splitted.length - 1; for (var i = 0; i < lastIndex; i++) { if (query.parameters[i] === null || query.parameters[i] === undefined) sql += splitted[i] + 'null'; else { sql += splitted[i] + '?'; parameters.push(query.parameters[i]); } } sql += splitted[lastIndex]; return { sql: () => sql, parameters }; } else return query; } module.exports = resolveExecuteQuery;