node-query/lib/node-query.js

52 lines
1.2 KiB
JavaScript
Raw Normal View History

2014-10-08 19:44:14 -04:00
"use strict";
2014-10-23 10:53:16 -04:00
/** @module node-query */
var nodeQuery = {};
2014-10-08 19:44:14 -04:00
var instance = null;
2014-10-23 10:53:16 -04:00
/**
* Create a query builder object
*
* @alias module:node-query
* @param {String} drivername - The name of the database type, eg. mysql or pg
* @param {Object} connObject - A connection object from the database library you are connecting with
* @param {String} connLib - The name of the db connection library you are using, eg. mysql or mysql2
* @return {queryBuilder}
*/
nodeQuery.init = function (driverType, connObject, connLib) {
var fs = require('fs'),
qb = require('./query-builder');
2014-10-20 16:56:45 -04:00
2014-10-23 10:53:16 -04:00
var paths = {
driver: __dirname + '/drivers/' + driverType + '.js',
adapter: __dirname + '/adapters/' + connLib + '.js'
2014-10-20 16:56:45 -04:00
};
2014-10-23 10:53:16 -04:00
Object.keys(paths).forEach(function(type) {
if ( ! fs.existsSync(paths[type]))
{
console.log(paths[type]);
throw new Error('Selected ' + type + ' does not exist!');
}
});
instance = qb(require(paths.driver), require(paths.adapter)(connObject));
return instance;
2014-10-23 10:53:16 -04:00
};
/**
* Return an existing query builder instance
*
* @return {queryBuilder}
*/
nodeQuery.getQuery = function () {
if ( ! instance) {
throw new Error("No Query Builder instance to return");
}
return instance;
};
2014-10-23 10:53:16 -04:00
module.exports = nodeQuery;