Skip to content

Commit

Permalink
Improving concept. Still waiting on Knex.
Browse files Browse the repository at this point in the history
  • Loading branch information
wbyoung committed Jun 21, 2014
1 parent 23e3eb0 commit c1a4904
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 8 deletions.
33 changes: 25 additions & 8 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,47 @@
'use strict';

var chalk = require('chalk');

module.exports = function(knex, options) {
var opts = options || {};

if (opts.forceColor) {
chalk.enabled = true;
}

return function(req, res, next) {

// TODO: figure out the duration of each query
// TODO: improve color support with levels for info/warn/error
// TODO: add an option to only log if a certain number of queries occur per
// request
// TODO: add color support

var queries = [];
var recordQuery = function(data) {
queries.push(data);
var watchQuery = function(data, query) {
var start = process.hrtime();
query.on('end', function() {
var diff = process.hrtime(start);
var ms = diff[0] * 1e3 + diff[1] * 1e-6;
data.duration = ms.toFixed(3);
queries.push(data);
});
};

var logQuery = function() {
res.removeListener('finish', logQuery);
res.removeListener('close', logQuery);
knex.client.removeListener('query', recordQuery);
knex.client.removeListener('query', watchQuery);

queries.forEach(function(data) {
console.log('[sql]: %s {%s}', data.sql, data.bindings.join(', '));
var color = chalk.gray;
console.log('%s %s %s %s',
chalk.gray('SQL'),
color(data.sql),
chalk.cyan('{' + data.bindings.join(', ') + '}'),
chalk.magenta(data.duration + 'ms'));
});
};


knex.client.on('query', recordQuery);
knex.client.on('query', watchQuery);
res.on('finish', logQuery);
res.on('close', logQuery);

Expand Down
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,8 @@
"mocha": "^1.20.1",
"sinon": "^1.10.2",
"sinon-chai": "^2.5.0"
},
"dependencies": {
"chalk": "^0.4.0"
}
}

0 comments on commit c1a4904

Please sign in to comment.