Skip to content

Commit 8239b48

Browse files
committed
Use pg promises instead of cb
1 parent 4a63325 commit 8239b48

2 files changed

Lines changed: 18 additions & 19 deletions

File tree

index.js

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
// setup
44
const http = require('http')
5-
const Pg = require('pg').Pool
5+
const { Pool } = require('pg')
66
const jsonwebtoken = require('jsonwebtoken')
77
const tinyParams = require('tiny-params')
88
const zlib = require('zlib')
@@ -61,23 +61,22 @@ const parseId = (url) => {
6161
const callPgFunc = (name, params) => {
6262
let q = `SELECT * FROM ${name}($1);`
6363
if (!pgPool) return Promise.reject(new Error('No database configured'))
64-
return new Promise((resolve, reject) => {
65-
pgPool.connect((err, client, done) => {
66-
if (err) return reject(err)
67-
client.query(q, [params], (err, result) => {
68-
done(err)
69-
if (err) {
70-
try {
71-
err.meta = err.meta || {}
72-
err.meta.pgFunction = name
73-
let errObj = JSON.parse(err.message)
74-
err.message = errObj.error ? errObj.error : errObj
75-
} catch (ex) {}
76-
return reject(err)
77-
}
78-
resolve((result.rows[0] || {})[name] ? result.rows[0][name] : [])
79-
})
64+
return pgPool.connect().then((client) => {
65+
return client.query(q, [params]).then((data) => {
66+
client.release()
67+
return Promise.resolve((data.rows[0] || {})[name] || [])
68+
}).catch((err) => {
69+
client.release()
70+
return Promise.reject(err)
8071
})
72+
}).catch((err) => {
73+
try {
74+
err.meta = err.meta || {}
75+
err.meta.pgFunction = name
76+
let errObj = JSON.parse(err.message)
77+
err.message = errObj.error ? errObj.error : errObj
78+
} catch (ex) {}
79+
return err
8180
})
8281
}
8382

@@ -164,7 +163,7 @@ function start (opts = {}) {
164163
let server = http.createServer(handleRequest)
165164
server.setTimeout(opts.timeout || defaultTimeout)
166165
server.listen(opts.port || port)
167-
if (opts.postgres) pgPool = new Pg(opts.postgres)
166+
if (opts.postgres) pgPool = new Pool(opts.postgres)
168167
return resolve(server)
169168
})
170169
}

test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const postBody = {
1414
}
1515
const basePath = '/api'
1616
const port = 8092
17-
const apiCall = getScrud({host: 'localhost', port, basePath})
17+
const apiCall = getScrud({host: 'localhost', port, basePath, timeout: '10s'})
1818
const putBody = {zip: 37615}
1919
const opts = {port, base: basePath, namespace: 'scrud', allowOrigins}
2020
Object.assign(opts, require('./../_secrets/scrud/config.json'))

0 commit comments

Comments
 (0)