Advertisement
Guest User

Untitled

a guest
Apr 16th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. const express = require('express'),
  2. format = require('string-format');
  3. let pg = undefined;
  4.  
  5. try {
  6. require.resolve('pg-native');
  7. pg = require('pg').native;
  8. console.log('Using pg-native');
  9. } catch(e) {
  10. pg = require('pg');
  11. console.log('Using pg');
  12. }
  13.  
  14. let app = express();
  15. let database = {};
  16.  
  17. //change me to change the pool size limit
  18. let connection_pool_limit = Math.floor(100 / 4); //default is 100 (server default as well)
  19.  
  20. let config = {
  21. user: '',
  22. database: '',
  23. password: "",
  24. host: 'localhost',
  25. port: 5432,
  26. max: 0,
  27. idleTimeoutMillis: 1000
  28. };
  29.  
  30. database = {
  31. connect: (threads, limit = 100) => {
  32. if (threads) connection_pool_limit = (limit / threads);
  33. config.max = connection_pool_limit;
  34. this.pool = new pg.Pool(config);
  35. },
  36.  
  37. connString: () => {
  38. return `postgres://${config.user}:${config.password}@${config.host}:${config.port}/${config.database}`;
  39. },
  40.  
  41. getPg: (pool = false) => {
  42. return (pool) ? this.pool : pg;
  43. },
  44.  
  45. rawQuery: (sql, params, cb) => {
  46. let self = this;
  47. if(!cb) {
  48. return new Promise((resolve, reject) => {
  49. try {
  50. self.pool.connect((err, client, done) => {
  51. client.query(sql, params, (err, result) => {
  52. done();
  53. if(err) {
  54. return reject(err);
  55. }
  56. resolve(result);
  57. });
  58. });
  59. } catch(e) {
  60. reject(e);
  61. }
  62. });
  63. } else {
  64. self.pool.connect((err, client, done) => {
  65. client.query(sql, params, (err, result) => {
  66. done();
  67. if(err){
  68. return cb(false, err);
  69. }
  70. cb(result);
  71. });
  72. });
  73. }
  74. }
  75. }
  76.  
  77. module.exports = (threads, limit) => {
  78. database.connect(threads, limit);
  79. return database;
  80. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement