|
2 | 2 |
|
3 | 3 | // setup |
4 | 4 | const http = require('http') |
5 | | -const Pg = require('pg').Pool |
| 5 | +const { Pool } = require('pg') |
6 | 6 | const jsonwebtoken = require('jsonwebtoken') |
7 | 7 | const tinyParams = require('tiny-params') |
8 | 8 | const zlib = require('zlib') |
@@ -61,23 +61,22 @@ const parseId = (url) => { |
61 | 61 | const callPgFunc = (name, params) => { |
62 | 62 | let q = `SELECT * FROM ${name}($1);` |
63 | 63 | 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) |
80 | 71 | }) |
| 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 |
81 | 80 | }) |
82 | 81 | } |
83 | 82 |
|
@@ -164,7 +163,7 @@ function start (opts = {}) { |
164 | 163 | let server = http.createServer(handleRequest) |
165 | 164 | server.setTimeout(opts.timeout || defaultTimeout) |
166 | 165 | server.listen(opts.port || port) |
167 | | - if (opts.postgres) pgPool = new Pg(opts.postgres) |
| 166 | + if (opts.postgres) pgPool = new Pool(opts.postgres) |
168 | 167 | return resolve(server) |
169 | 168 | }) |
170 | 169 | } |
|
0 commit comments