ability to init connection with url instead of config object

This commit is contained in:
brianc 2010-11-10 21:45:39 -06:00
parent aa975af83d
commit d77fd0ee65
2 changed files with 35 additions and 0 deletions

View File

@ -2,13 +2,27 @@ var sys = require('sys');
var net = require('net');
var crypto = require('crypto');
var EventEmitter = require('events').EventEmitter;
var url = require('url');
var Query = require(__dirname + '/query');
var utils = require(__dirname + '/utils');
var Connection = require(__dirname + '/connection');
var parseConnectionString = function(str) {
var result = url.parse(str);
result.host = result.hostname;
result.database = result.pathname.slice(1);
var auth = (result.auth || ':').split(':');
result.user = auth[0];
result.password = auth[1];
return result;
};
var Client = function(config) {
EventEmitter.call(this);
if(typeof config === 'string') {
config = parseConnectionString(config)
}
config = config || {};
this.user = config.user;
this.database = config.database;

View File

@ -0,0 +1,21 @@
require(__dirname + '/test-helper');
test("using connection string in client constructor", function() {
var client = new Client("postgres://brian:pw@boom:381/lala");
test("parses user", function() {
assert.equal(client.user,'brian');
})
test("parses password", function() {
assert.equal(client.password, 'pw');
})
test("parses host", function() {
assert.equal(client.host, 'boom');
})
test('parses port', function() {
assert.equal(client.port, 381)
})
test('parses database', function() {
assert.equal(client.database, 'lala')
})
})