3 var generic_pool = require('generic-pool');
4 var mariasql = require('mariasql');
5 var JL = require('jsnlog').JL;
6 var logger = JL('dbpool.js');
8 var AppConfig = require('../config.json');
14 self.configMariasql = {
15 host: AppConfig.DATABASE.HOST,
16 user: AppConfig.DATABASE.USERNAME,
17 password: AppConfig.DATABASE.PASSWORD,
18 db: AppConfig.DATABASE.DATABASE,
19 trace: AppConfig.DATABASE.TRACE,
24 self.pool = generic_pool.createPool({
25 name: AppConfig.DATABASE.DIALECT,
27 create: function (callback) {
28 return new Promise(function (resolve, reject) {
29 var mariasqlClient = new mariasql(self.configMariasql);
30 mariasqlClient.connect(function (err) {
32 logger.error('DB Connection Error !');
37 logger.info('DB Connection Success !');
38 resolve(mariasqlClient);
41 // mariasqlClient.on('connect', function () {
42 // logger.info('DB - connect');
45 // .on('error', function (err) {
46 // logger.info('DB - error');
48 // }).on('close', function (hadError) {
49 // logger.info('DB - close');
51 // }).on('ready', function () {
52 // logger.info('DB - ready');
53 // resolve(mariasqlClient);
58 destroy: function (client) {
59 return new Promise(function (resolve, reject) {
60 client.on('end', function () {
66 // client._handle = null;
69 validate: function (client) {
70 return client.connected;
73 max: AppConfig.DATABASE.POOL.MAX,
75 min: AppConfig.DATABASE.POOL.MIN,
77 idleTimeoutMillis: AppConfig.DATABASE.POOL.IDLETIMEOUT,
79 reapIntervalMillis: AppConfig.DATABASE.POOL.REAPINTERVAL,
84 // self.pool.drain().then(function () {
91 dbPool.prototype.query = function query (query, params) {
92 var mariaPool = this.pool;
93 return new Promise (function (resolve, reject) {
94 mariaPool.acquire().then(function (client) {
99 client.query(query, params, {
101 }, function (err, rows) {
103 mariaPool.destroy(client);
109 mariaPool.release(client);
110 logger.info(JSON.stringify(meta));
111 return resolve(meta);
113 }).catch(function (err) {
120 // process.on('exit', function () {
121 // dbPool.drain(function () {
126 module.exports = dbPool;