Comparing version 2.0.0 to 2.1.0
103
larvitdb.js
@@ -6,6 +6,6 @@ 'use strict'; | ||
eventEmitter = new events.EventEmitter(), | ||
LUtils = require('larvitutils'), | ||
lUtils = new LUtils(), | ||
async = require('async'), | ||
utils = require('larvitutils'), | ||
mysql = require('mysql2'), | ||
log = require('winston'); | ||
mysql = require('mysql2'); | ||
@@ -23,3 +23,3 @@ let dbSetup = false, | ||
if (err) { | ||
log.error(logPrefix + 'Could not get connection, err: ' + err.message); | ||
exports.log.error(logPrefix + 'Could not get connection, err: ' + err.message); | ||
return cb(err); | ||
@@ -40,3 +40,3 @@ } | ||
if (err) { | ||
log.error(subLogPrefix + err.message); | ||
exports.log.error(subLogPrefix + err.message); | ||
return cb(err); | ||
@@ -56,3 +56,3 @@ } | ||
if (err) { | ||
log.error(subLogPrefix + err.message); | ||
exports.log.error(subLogPrefix + err.message); | ||
return cb(err); | ||
@@ -84,8 +84,8 @@ } | ||
dbCon.org_query(sql, dbFields, function (err, rows) { | ||
const queryTime = utils.hrtimeToMs(startTime, 4); | ||
const queryTime = lUtils.hrtimeToMs(startTime, 4); | ||
log.debug(subLogPrefix + 'Ran SQL: "' + sql + '" with dbFields: ' + JSON.stringify(dbFields) + ' in ' + queryTime + 'ms'); | ||
exports.log.debug(subLogPrefix + 'Ran SQL: "' + sql + '" with dbFields: ' + JSON.stringify(dbFields) + ' in ' + queryTime + 'ms'); | ||
if (err) { | ||
log.error(subLogPrefix + err.message, ', SQL: "' + err.sql + '"'); | ||
exports.log.error(subLogPrefix + err.message, ', SQL: "' + err.sql + '"'); | ||
} | ||
@@ -104,3 +104,3 @@ | ||
if (err) { | ||
log.error(subLogPrefix + err.message); | ||
exports.log.error(subLogPrefix + err.message); | ||
return cb(err); | ||
@@ -145,3 +145,3 @@ } | ||
const err = new Error('No pool configured. sql: "' + sql + '" dbFields: ' + JSON.stringify(dbFields)); | ||
log.error(logPrefix + err.message); | ||
exports.log.error(logPrefix + err.message); | ||
return cb(err); | ||
@@ -165,8 +165,8 @@ } | ||
exports.pool.query(sql, dbFields, function (err, rows, rowFields) { | ||
const queryTime = utils.hrtimeToMs(startTime, 4); | ||
const queryTime = lUtils.hrtimeToMs(startTime, 4); | ||
if (conf.longQueryTime !== false && conf.longQueryTime < queryTime && options.ignoreLongQueryWarning !== true) { | ||
log.warn(logPrefix + 'Ran SQL: "' + sql + '" with dbFields: ' + JSON.stringify(dbFields) + ' in ' + queryTime + 'ms'); | ||
exports.log.warn(logPrefix + 'Ran SQL: "' + sql + '" with dbFields: ' + JSON.stringify(dbFields) + ' in ' + queryTime + 'ms'); | ||
} else { | ||
log.debug(logPrefix + 'Ran SQL: "' + sql + '" with dbFields: ' + JSON.stringify(dbFields) + ' in ' + queryTime + 'ms'); | ||
exports.log.debug(logPrefix + 'Ran SQL: "' + sql + '" with dbFields: ' + JSON.stringify(dbFields) + ' in ' + queryTime + 'ms'); | ||
} | ||
@@ -183,3 +183,3 @@ | ||
if (options.retryNr <= conf.retries) { | ||
log.warn(logPrefix + 'Retrying database recoverable error: ' + err.message + ' retryNr: ' + options.retryNr + ' SQL: "' + sql + '" dbFields: ' + JSON.stringify(dbFields)); | ||
exports.log.warn(logPrefix + 'Retrying database recoverable error: ' + err.message + ' retryNr: ' + options.retryNr + ' SQL: "' + sql + '" dbFields: ' + JSON.stringify(dbFields)); | ||
setTimeout(function () { | ||
@@ -191,7 +191,7 @@ query(sql, dbFields, {'retryNr': options.retryNr}, cb); | ||
log.error(logPrefix + 'Exhausted retries (' + options.retryNr + ') for database recoverable error: ' + err.message + ' SQL: "' + err.sql + '" dbFields: ' + JSON.stringify(dbFields)); | ||
exports.log.error(logPrefix + 'Exhausted retries (' + options.retryNr + ') for database recoverable error: ' + err.message + ' SQL: "' + err.sql + '" dbFields: ' + JSON.stringify(dbFields)); | ||
return cb(err); | ||
} | ||
log.error(logPrefix + 'Database error msg: ' + err.message + ', code: "' + err.code + '" SQL: "' + err.sql + '" dbFields: ' + JSON.stringify(dbFields)); | ||
exports.log.error(logPrefix + 'Database error msg: ' + err.message + ', code: "' + err.code + '" SQL: "' + err.sql + '" dbFields: ' + JSON.stringify(dbFields)); | ||
return cb(err); | ||
@@ -220,5 +220,4 @@ } | ||
if (err) { | ||
log.error(logPrefix + 'Could not get a connection from the pool: ' + err.message); | ||
cb(err); | ||
return; | ||
exports.log.error(logPrefix + 'Could not get a connection from the pool: ' + err.message); | ||
return cb(err); | ||
} | ||
@@ -235,5 +234,4 @@ | ||
if (err) { | ||
log.error(logPrefix + 'Error when running "SHOW TABLES": ' + err.message); | ||
cb(err); | ||
return; | ||
exports.log.error(logPrefix + 'Error when running "SHOW TABLES": ' + err.message); | ||
return cb(err); | ||
} | ||
@@ -280,9 +278,51 @@ | ||
function setup(thisConf, cb) { | ||
const logPrefix = topLogPrefix + 'setup() - ', | ||
const validDbOptions = [], | ||
logPrefix = topLogPrefix + 'setup() - ', | ||
dbConf = {}, | ||
tasks = []; | ||
validDbOptions.push('host'); | ||
validDbOptions.push('port'); | ||
validDbOptions.push('localAddress'); | ||
validDbOptions.push('socketPath'); | ||
validDbOptions.push('user'); | ||
validDbOptions.push('password'); | ||
validDbOptions.push('database'); | ||
validDbOptions.push('charset'); | ||
validDbOptions.push('timezone'); | ||
validDbOptions.push('connectTimeout'); | ||
validDbOptions.push('stringifyObjects'); | ||
validDbOptions.push('insecureAuth'); | ||
validDbOptions.push('typeCast'); | ||
validDbOptions.push('queryFormat'); | ||
validDbOptions.push('supportBigNumbers'); | ||
validDbOptions.push('bigNumberStrings'); | ||
validDbOptions.push('dateStrings'); | ||
validDbOptions.push('debug'); | ||
validDbOptions.push('trace'); | ||
validDbOptions.push('multipleStatements'); | ||
validDbOptions.push('flags'); | ||
validDbOptions.push('ssl'); | ||
// Valid for pools | ||
validDbOptions.push('waitForConnections'); | ||
validDbOptions.push('connectionLimit'); | ||
validDbOptions.push('queueLimit'); | ||
exports.conf = conf = thisConf; | ||
if ( ! exports.conf.log) { | ||
exports.conf.log = new lUtils.Log(); | ||
} | ||
exports.log = exports.conf.log; | ||
for (const key of Object.keys(conf)) { | ||
if (validDbOptions.indexOf(key) !== - 1) { | ||
dbConf[key] = conf[key]; | ||
} | ||
} | ||
function tryToConnect(cb) { | ||
const dbCon = mysql.createConnection(conf); | ||
const dbCon = mysql.createConnection(dbConf); | ||
@@ -293,3 +333,3 @@ dbCon.connect(function (err) { | ||
log.warn(logPrefix + 'Could not connect to database, retrying in ' + retryIntervalSeconds + ' seconds'); | ||
exports.log.warn(logPrefix + 'Could not connect to database, retrying in ' + retryIntervalSeconds + ' seconds'); | ||
return setTimeout(function () { | ||
@@ -311,6 +351,6 @@ tryToConnect(cb); | ||
try { | ||
exports.pool = mysql.createPool(conf); // Expose pool | ||
exports.pool = mysql.createPool(dbConf); // Expose pool | ||
} catch (err) { | ||
log.error(logPrefix + 'Throwed error from database driver: ' + err.message); | ||
cb(err); | ||
exports.log.error(logPrefix + 'Throwed error from database driver: ' + err.message); | ||
return cb(err); | ||
} | ||
@@ -341,5 +381,5 @@ | ||
if (err || rows.length === 0) { | ||
log.error(logPrefix + 'Database connection test failed!'); | ||
exports.log.error(logPrefix + 'Database connection test failed!'); | ||
} else { | ||
log.info(logPrefix + 'Database connection test succeeded.'); | ||
exports.log.info(logPrefix + 'Database connection test succeeded.'); | ||
} | ||
@@ -364,1 +404,2 @@ | ||
exports.setup = setup; | ||
exports.log = new lUtils.Log(); // Default to simple console log before anything else happends |
{ | ||
"name": "larvitdb", | ||
"version": "2.0.0", | ||
"version": "2.1.0", | ||
"description": "DB wrapper module for node.js", | ||
@@ -11,5 +11,4 @@ "main": "larvitdb.js", | ||
"async": "^2.0.1", | ||
"larvitutils": "^1.0.1", | ||
"mysql2": "^1.1.1", | ||
"winston": "^2.2.0" | ||
"larvitutils": "^2.0.0", | ||
"mysql2": "^1.1.1" | ||
}, | ||
@@ -16,0 +15,0 @@ "devDependencies": { |
@@ -22,3 +22,5 @@ [](https://travis-ci.org/larvit/larvitdb) [](https://david-dm.org/larvit/larvitdb.svg) | ||
```javascript | ||
const db = require('larvitdb'); | ||
const winston = require('winston'), | ||
log = winston.createLogger({'transports': [new winston.transports.Console()]}), | ||
db = require('larvitdb'); | ||
@@ -33,3 +35,4 @@ db.setup({ | ||
'supportBigNumbers': true, | ||
'database': 'my_database_name' | ||
'database': 'my_database_name', | ||
'log': log // Will default to a simple console logger if not provided | ||
}); | ||
@@ -36,0 +39,0 @@ ``` |
'use strict'; | ||
const assert = require('assert'), | ||
LUtils = require('larvitutils'), | ||
lUtils = new LUtils(), | ||
async = require('async'), | ||
log = require('winston'), | ||
log = new lUtils.Log('warn'), | ||
db = require('../larvitdb.js'), | ||
fs = require('fs'); | ||
// Set up winston | ||
log.remove(log.transports.Console); | ||
log.add(log.transports.Console, { | ||
'level': 'warn', | ||
'colorize': true, | ||
'timestamp': true, | ||
'json': false | ||
}); | ||
before(function (done) { | ||
@@ -31,5 +24,10 @@ let confFile; | ||
function runDbSetup(confFile) { | ||
let conf; | ||
log.verbose('DB config: ' + JSON.stringify(require(confFile))); | ||
db.setup(require(confFile), function (err) { | ||
conf = require(confFile); | ||
conf.log = log; | ||
db.setup(conf, function (err) { | ||
if (err) throw err; | ||
@@ -36,0 +34,0 @@ |
Sorry, the diff of this file is not supported yet
27283
3
608
155
+ Addedlarvitutils@2.3.3(transitive)
- Removedwinston@^2.2.0
- Removedcolors@1.0.3(transitive)
- Removedcycle@1.0.3(transitive)
- Removedeyes@0.1.8(transitive)
- Removedisstream@0.1.2(transitive)
- Removedlarvitutils@1.1.3(transitive)
- Removedstack-trace@0.0.10(transitive)
- Removedwinston@2.4.7(transitive)
Updatedlarvitutils@^2.0.0