-
Notifications
You must be signed in to change notification settings - Fork 0
/
dbconn-psql.js
36 lines (31 loc) · 884 Bytes
/
dbconn-psql.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
const SqlString = require("sqlstring")
const { Pool } = require("pg")
const dbConn = (dbConfig, log) => {
const pool = new Pool(dbConfig)
return (sql, params, handler) => {
let statement = Array.isArray(params) ? SqlString.format(sql, params) : sql
log(statement)
return new Promise((resolve, reject) => {
pool.connect((err, client, done) => {
if (err) return reject(err)
client.query(statement, (err, res) => {
done()
if (err) {
reject(err)
} else {
resolve(handler(res.rows))
}
})
})
})
}
}
const limitSql = (page, count) => {
let p = parseInt(page)
let c = parseInt(count)
c = isNaN(c) || c < 1 ? 10 : c
let start = isNaN(p) || p < 0 ? 0 : p * c
return ` limit ${c} offset ${start}`
}
module.exports = dbConn
module.exports.limitSql = limitSql