overloaded "simple" query api to provide callback enabled prepared statement

This commit is contained in:
Brian Carlson 2010-11-15 00:42:38 -06:00
parent 91aac6d350
commit 0bde640bab
3 changed files with 27 additions and 11 deletions

View File

@ -98,10 +98,21 @@ p.pulseQueryQueue = function() {
}
};
p.query = function(config, callback) {
p.query = function(config, values, callback) {
//can take in strings or config objects
config = (config.text || config.name) ? config : { text: config };
config.callback = config.callback || callback;
if(values) {
if(typeof values === 'function') {
callback = values;
}
else {
config.values = values;
}
}
if(callback) {
config.callback = callback;
}
var query = new Query(config);
this.queryQueue.push(query);
this.pulseQueryQueue();

View File

@ -50,7 +50,7 @@ p.submit = function(connection) {
result[names[i]] = rawValue === null ? null : converters[i](rawValue);
}
self.emit('row', result);
//if no reciever, buffer rows
if(self.callback) {
rows.push(result);

View File

@ -2,33 +2,38 @@ var helper = require(__dirname + '/../test-helper');
var pg = require(__dirname + '/../../../lib');
var connected = false
var called = false
var simpleCalled = false
var preparedCalled = false
pg.connect(helper.args, function(err, client) {
connected = true
test('error is null', function() {
assert.equal(err, null)
})
test('query execution', function() {
test('simple query execution', function() {
client.query('CREATE TEMP TABLE band(name varchar(100))')
client.query("INSERT INTO band (name) VALUES ('dead black hearts')")
client.query("SELECT * FROM band WHERE name = 'dead black hearts'", function(err, result) {
called = true;
simpleCalled = true
assert.equal(result.rows.pop().name, 'dead black hearts')
})
})
test('prepared statement execution', function() {
client.query('SELECT * FROM band WHERE name = $1', ['dead black hearts'], function(err, result) {
preparedCalled = true
assert.equal(result.rows.pop().name, 'dead black hearts')
})
})
})
process.on('exit', function() {
assert.ok(connected, 'never connected')
assert.ok(called, 'query result callback was never called')
assert.ok(simpleCalled, 'query result callback was never called')
assert.ok(preparedCalled, 'prepared callback was never called')
})
test('raises error if cannot connect', function() {
pg.connect({database:'asdlfkajsdf there is no way this is a real database, right?!'}, function(err, client) {
assert.ok(err, 'error was null')