Skip to content

Commit 66eee07

Browse files
committed
Separate promise and cb
1 parent e01991c commit 66eee07

File tree

1 file changed

+36
-25
lines changed

1 file changed

+36
-25
lines changed

index.js

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,38 +3,49 @@
33
const fp = require('fastify-plugin')
44
var pg = require('pg')
55

6-
function transactionHelper (query, values, cb = null) {
7-
return new Promise((resolve, reject) => {
8-
this.connect((err, client, done) => {
9-
if (err) reject(err)
10-
11-
const shouldAbort = (err) => {
12-
if (err) {
13-
client.query('ROLLBACK', () => {
14-
done()
15-
})
16-
}
17-
return !!err
6+
function transactionUtil (pool, query, values, cb) {
7+
pool.connect((err, client, done) => {
8+
if (err) return cb(err)
9+
10+
const shouldAbort = (err) => {
11+
if (err) {
12+
client.query('ROLLBACK', () => {
13+
done()
14+
})
1815
}
16+
return !!err
17+
}
1918

20-
client.query('BEGIN', (err) => {
21-
if (shouldAbort(err)) return cb ? cb(err) : reject(err)
22-
client.query(query, values, (err, res) => {
23-
if (shouldAbort(err)) return cb ? cb(err) : reject(err)
24-
25-
client.query('COMMIT', (err) => {
26-
done()
27-
if (err) {
28-
return cb ? cb(err) : reject(err)
29-
}
30-
return cb ? cb(null, res) : resolve(res)
31-
})
19+
client.query('BEGIN', (err) => {
20+
if (shouldAbort(err)) return cb(err)
21+
client.query(query, values, (err, res) => {
22+
if (shouldAbort(err)) return cb(err)
23+
24+
client.query('COMMIT', (err) => {
25+
done()
26+
if (err) {
27+
return cb(err)
28+
}
29+
return cb(null, res)
3230
})
3331
})
3432
})
3533
})
3634
}
3735

36+
function transact (query, values, cb) {
37+
if (!cb) {
38+
return new Promise((resolve, reject) => {
39+
transactionUtil(this, query, values, function (err, res) {
40+
if (err) { return reject(err) }
41+
return resolve(res)
42+
})
43+
})
44+
}
45+
46+
return transactionUtil(this, query, values, cb)
47+
}
48+
3849
function fastifyPostgres (fastify, options, next) {
3950
if (options.native) {
4051
delete options.native
@@ -54,7 +65,7 @@ function fastifyPostgres (fastify, options, next) {
5465
pool: pool,
5566
Client: pg.Client,
5667
query: pool.query.bind(pool),
57-
transact: transactionHelper.bind(pool)
68+
transact: transact.bind(pool)
5869
}
5970

6071
if (name) {

0 commit comments

Comments
 (0)