From 0bde640bab2a2ca81ca95bd77a619d40db351770 Mon Sep 17 00:00:00 2001 From: Brian Carlson Date: Mon, 15 Nov 2010 00:42:38 -0600 Subject: [PATCH] overloaded "simple" query api to provide callback enabled prepared statement --- lib/client.js | 15 +++++++++++++-- lib/query.js | 2 +- test/integration/client/api-tests.js | 21 +++++++++++++-------- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/lib/client.js b/lib/client.js index 0d0f2e39..4b629495 100644 --- a/lib/client.js +++ b/lib/client.js @@ -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(); diff --git a/lib/query.js b/lib/query.js index f4ebc66f..0a0bd227 100644 --- a/lib/query.js +++ b/lib/query.js @@ -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); diff --git a/test/integration/client/api-tests.js b/test/integration/client/api-tests.js index af194141..c4d6eea3 100644 --- a/test/integration/client/api-tests.js +++ b/test/integration/client/api-tests.js @@ -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')