Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const express = require('express'),
- format = require('string-format');
- let pg = undefined;
- try {
- require.resolve('pg-native');
- pg = require('pg').native;
- console.log('Using pg-native');
- } catch(e) {
- pg = require('pg');
- console.log('Using pg');
- }
- let app = express();
- let database = {};
- //change me to change the pool size limit
- let connection_pool_limit = Math.floor(100 / 4); //default is 100 (server default as well)
- let config = {
- user: '',
- database: '',
- password: "",
- host: 'localhost',
- port: 5432,
- max: 0,
- idleTimeoutMillis: 1000
- };
- database = {
- connect: (threads, limit = 100) => {
- if (threads) connection_pool_limit = (limit / threads);
- config.max = connection_pool_limit;
- this.pool = new pg.Pool(config);
- },
- connString: () => {
- return `postgres://${config.user}:${config.password}@${config.host}:${config.port}/${config.database}`;
- },
- getPg: (pool = false) => {
- return (pool) ? this.pool : pg;
- },
- rawQuery: (sql, params, cb) => {
- let self = this;
- if(!cb) {
- return new Promise((resolve, reject) => {
- try {
- self.pool.connect((err, client, done) => {
- client.query(sql, params, (err, result) => {
- done();
- if(err) {
- return reject(err);
- }
- resolve(result);
- });
- });
- } catch(e) {
- reject(e);
- }
- });
- } else {
- self.pool.connect((err, client, done) => {
- client.query(sql, params, (err, result) => {
- done();
- if(err){
- return cb(false, err);
- }
- cb(result);
- });
- });
- }
- }
- }
- module.exports = (threads, limit) => {
- database.connect(threads, limit);
- return database;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement