# Source: node-query.js

    "use strict";

    /** @module node-query */
    var NodeQuery = function() {

    	var instance = null;

    	/**
    	 * 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. Optional if the same as drivername
    	 * @return {queryBuilder}
    	 */
    	this.init = function (driverType, connObject, connLib) {
    		connLib = connLib || driverType;

    		var fs = require('fs'),
    			qb = require('./query-builder');

    		var paths = {
    			driver: __dirname + '/drivers/' + driverType + '.js',
    			adapter: __dirname + '/adapters/' + connLib + '.js'
    		};

    		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;
    	};

    	/**
    	 * Return an existing query builder instance
    	 *
    	 * @return {queryBuilder}
    	 */
    	this.getQuery = function () {
    		if ( ! instance) {
    			throw new Error("No Query Builder instance to return");
    		}

    		return instance;
    	};

    };

    module.exports = new NodeQuery();