joola.io.engine
Version:
joola.io's Framework Engine
73 lines (65 loc) • 1.81 kB
JavaScript
/**
* 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;