Skip to content

Commit a7fbe95

Browse files
committed
make pg.connect config/conString argument optional
1 parent 7cfd76c commit a7fbe95

File tree

3 files changed

+78
-17
lines changed

3 files changed

+78
-17
lines changed

lib/client-pool.js

+11-4
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,20 @@ module.exports = {
99
}
1010

1111
var connect = function(config, callback) {
12-
//lookup pool using config as key
13-
//TODO this don't work so hot w/ object configs
14-
var pool = clientPools[config];
12+
var poolName = config;
13+
if(typeof config === 'function') {
14+
callback = config;
15+
config = defaults;
16+
}
17+
//get unique pool name
18+
if(typeof config === 'object') {
19+
poolName = config.user + config.database + config.host + config.port;
20+
}
21+
var pool = clientPools[poolName];
1522

1623
//create pool if doesn't exist
1724
if(!pool) {
18-
pool = clientPools[config] = new Pool(defaults.poolSize, function() {
25+
pool = clientPools[poolName] = new Pool(defaults.poolSize, function() {
1926
var client = new Client(config);
2027
client.connected = false;
2128
return client;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
var helper = require(__dirname + '/test-helper');
2+
3+
//setup defaults
4+
helper.pg.defaults.user = helper.args.user;
5+
helper.pg.defaults.password = helper.args.password;
6+
helper.pg.defaults.host = helper.args.host;
7+
helper.pg.defaults.port = helper.args.port;
8+
helper.pg.defaults.database = helper.args.database;
9+
helper.pg.defaults.poolSize = 1;
10+
11+
helper.pg.connect(assert.calls(function(err, client) {
12+
assert.isNull(err);
13+
client.end();
14+
}));
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
var helper = require(__dirname + '/test-helper');
22

33
helper.pg.defaults.poolSize = 1;
4+
helper.pg.defaults.user = helper.args.user;
5+
helper.pg.defaults.password = helper.args.password;
6+
helper.pg.defaults.database = helper.args.database;
7+
helper.pg.defaults.port = helper.args.port;
8+
helper.pg.defaults.host = helper.args.host;
49

510
var args = {
611
user: helper.args.user,
@@ -10,23 +15,58 @@ var args = {
1015
host: helper.args.host
1116
}
1217

13-
helper.pg.connect(args, assert.calls(function(err, client) {
14-
assert.isNull(err);
15-
client.iGotAccessed = true;
16-
client.query("SELECT NOW()")
17-
}))
18-
1918
var moreArgs = {
20-
user: helper.args.user + "2",
21-
host: helper.args.host,
19+
database: helper.args.database,
2220
password: helper.args.password,
21+
port: helper.args.port,
22+
user: helper.args.user,
23+
host: helper.args.host,
24+
zomg: true
25+
}
26+
27+
var badArgs = {
28+
user: helper.args.user + 'laksdjfl',
29+
host: helper.args.host,
30+
password: helper.args.password + 'asldkfjlas',
2331
database: helper.args.database,
2432
port: helper.args.port,
2533
zomg: true
2634
}
2735

28-
helper.pg.connect(moreArgs, assert.calls(function(err, client) {
29-
assert.isNull(err);
30-
assert.ok(client.iGotAccessed === true)
31-
client.end();
32-
}))
36+
test('connecting with complete config', function() {
37+
38+
helper.pg.connect(args, assert.calls(function(err, client) {
39+
assert.isNull(err);
40+
client.iGotAccessed = true;
41+
client.query("SELECT NOW()")
42+
}));
43+
44+
});
45+
46+
test('connecting with different config object', function() {
47+
48+
helper.pg.connect(moreArgs, assert.calls(function(err, client) {
49+
assert.isNull(err);
50+
assert.ok(client.iGotAccessed === true)
51+
client.query("SELECT NOW()");
52+
}))
53+
54+
});
55+
56+
test('connecting with all defaults', function() {
57+
58+
helper.pg.connect(assert.calls(function(err, client) {
59+
assert.isNull(err);
60+
assert.ok(client.iGotAccessed === true);
61+
client.end();
62+
}));
63+
64+
});
65+
66+
test('connecting with invalid config', function() {
67+
68+
helper.pg.connect(badArgs, assert.calls(function(err, client) {
69+
assert.ok(err != null, "Expected connection error using invalid connection credentials");
70+
}));
71+
72+
});

0 commit comments

Comments
 (0)