From 6a2adc1febc6499f15b3bb152db573ecd59cdec0 Mon Sep 17 00:00:00 2001 From: Brian Carlson Date: Wed, 23 Feb 2011 19:40:52 -0600 Subject: [PATCH] more api compat --- lib/binding.js | 24 +++++++++++++++++++----- lib/utils.js | 1 + test/integration/client/api-tests.js | 3 +++ 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/lib/binding.js b/lib/binding.js index e12f691b..e6b6f458 100644 --- a/lib/binding.js +++ b/lib/binding.js @@ -1,5 +1,6 @@ //require the c++ bindings & export to javascript var binding = require(__dirname + '/../build/default/binding'); +var utils = require(__dirname + "/utils"); var Connection = binding.Connection; var p = Connection.prototype; @@ -11,8 +12,8 @@ var add = function(params, config, paramName) { } var getLibpgConString = function(config, callback) { - var params = [] if(typeof config == 'object') { + var params = [] add(params, config, 'user'); add(params, config, 'password'); add(params, config, 'port'); @@ -25,8 +26,12 @@ var getLibpgConString = function(config, callback) { } params.push("hostaddr=127.0.0.1 "); } + callback(params.join(" ")); + } else if (typeof config == 'string') { + getLibpgConString(utils.parseConnectionString(config), callback) + } else { + throw new Error("Unrecognized config type for connection"); } - callback(params.join(" ")); } var nativeConnect = p.connect; @@ -73,10 +78,19 @@ var ctor = function(config) { this.emit('end'); this._activeQuery = null; connection._pulseQueryQueue(); - }) + }); return connection; -} +}; + +var connect = function(config, callback) { + var client = new ctor(config); + client.connect(); + client.on('connect', function() { + callback(null, client); + }) +}; module.exports = { - Client:ctor + Client: ctor, + connect: connect }; diff --git a/lib/utils.js b/lib/utils.js index 32726b8f..3b147ac2 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -11,6 +11,7 @@ if(typeof events.EventEmitter.prototype.once !== 'function') { }); }; } + var Pool = function(maxSize, createFn) { events.EventEmitter.call(this); this.maxSize = maxSize; diff --git a/test/integration/client/api-tests.js b/test/integration/client/api-tests.js index d77968a6..b126a29b 100644 --- a/test/integration/client/api-tests.js +++ b/test/integration/client/api-tests.js @@ -1,5 +1,8 @@ var helper = require(__dirname + '/../test-helper'); var pg = require(__dirname + '/../../../lib'); +if(helper.args.libpq) { + pg = require(__dirname + "/../../../lib/binding"); +} var connectionString = helper.connectionString(__filename); var log = function() {