mirror of
https://github.com/brianc/node-postgres.git
synced 2025-12-08 20:16:25 +00:00
81 lines
2.1 KiB
JavaScript
81 lines
2.1 KiB
JavaScript
const Client = require('../')
|
|
const ok = require('okay')
|
|
const assert = require('assert')
|
|
const concat = require('concat-stream')
|
|
|
|
describe('async workflow', function () {
|
|
before(function (done) {
|
|
this.client = new Client()
|
|
this.client.connect(done)
|
|
})
|
|
|
|
const echoParams = function (params, cb) {
|
|
this.client.query(
|
|
'SELECT $1::text as first, $2::text as second',
|
|
params,
|
|
ok(cb, function (rows) {
|
|
checkParams(params, rows)
|
|
cb(null, rows)
|
|
})
|
|
)
|
|
}
|
|
|
|
const checkParams = function (params, rows) {
|
|
assert.equal(rows.length, 1)
|
|
assert.equal(rows[0].first, params[0])
|
|
assert.equal(rows[0].second, params[1])
|
|
}
|
|
|
|
it('sends async query', function (done) {
|
|
const params = ['one', 'two']
|
|
echoParams.call(this, params, done)
|
|
})
|
|
|
|
it('sends multiple async queries', function (done) {
|
|
const self = this
|
|
const params = ['bang', 'boom']
|
|
echoParams.call(
|
|
this,
|
|
params,
|
|
ok(done, function (rows) {
|
|
echoParams.call(self, params, done)
|
|
})
|
|
)
|
|
})
|
|
|
|
it('sends an async query, copies in, copies out, and sends another query', function (done) {
|
|
const self = this
|
|
this.client.querySync('CREATE TEMP TABLE test(name text, age int)')
|
|
this.client.query(
|
|
"INSERT INTO test(name, age) VALUES('brian', 32)",
|
|
ok(done, function () {
|
|
self.client.querySync('COPY test FROM stdin')
|
|
const input = self.client.getCopyStream()
|
|
input.write(Buffer.from('Aaron\t30\n', 'utf8'))
|
|
input.end(function () {
|
|
self.client.query(
|
|
'SELECT COUNT(*) FROM test',
|
|
ok(done, function (rows) {
|
|
assert.equal(rows.length, 1)
|
|
self.client.query(
|
|
'COPY test TO stdout',
|
|
ok(done, function () {
|
|
const output = self.client.getCopyStream()
|
|
|
|
// pump the stream
|
|
output.read()
|
|
output.pipe(
|
|
concat(function (res) {
|
|
done()
|
|
})
|
|
)
|
|
})
|
|
)
|
|
})
|
|
)
|
|
})
|
|
})
|
|
)
|
|
})
|
|
})
|