UNPKG

joola.io.engine

Version:
73 lines (65 loc) 1.81 kB
/** * joola.io * * Copyright Joola Smart Solutions, Ltd. <info@joo.la> * * Licensed under GNU General Public License 3.0 or later. * Some rights reserved. See LICENSE, AUTHORS. * * @license GPL-3.0+ <http://spdx.org/licenses/GPL-3.0+> */ var uuid = require('node-uuid'), mysql = require('./mysql'), mssql = require('./mssql'), pg = require('./postgres'); var createConnection = function (query) { var connection = null; switch (query.datasource.type) { case 'mysql': joola.logger.debug('open connection to mysql ' + query.datasource.id); connection = mysql; break; case 'postgres': joola.logger.debug('open connection to postgres ' + query.datasource.id); connection = pg; break; case 'mssql': joola.logger.debug('open connection to mssql ' + query.datasource.id); connection = mssql; break; default: break; } return connection; }; var exports = {}; exports.createQuery = function () { var query = { _id: null, id: function () { if (!this._id) this.id = uuid.v4(); return this.id; }(), datasource: null, options: null, type: "read", sql: "", limit: null }; return ce.extend(query, {}); }; exports.executeQuery = function (query, callback) { var db = createConnection(query); //var connection = db.open(query); joola.logger.silly('Execute query... [' + query.datasource.id + ']: ' + query.sql); db.executeQuery(query, function (err, rows, fields) { if (err) return callback(null, null, null, err); joola.logger.silly('Result contains ' + rows.rows.length + ' rows and ' + rows.fields.length + ' fields.'); return callback(query, rows, fields, err); }); //db.close(connection); }; module.exports = exports;