Commit c6a6aa1e by Dane Springmeyer

Merge pull request #314 from KidsKilla/master

rm errorCallback, add normalizeMethod
parents 11b4a620 1b0494d8
...@@ -19,3 +19,4 @@ test/support/big.db ...@@ -19,3 +19,4 @@ test/support/big.db
test/tmp test/tmp
test/nw/app.nw test/nw/app.nw
.DS_Store .DS_Store
.idea
var path = require('path');
var binary = require('node-pre-gyp'); var binary = require('node-pre-gyp');
var path = require('path') var path = require('path');
var binding_path = binary.find(path.resolve(path.join(__dirname,'../package.json'))); var binding_path = binary.find(path.resolve(path.join(__dirname,'../package.json')));
var binding = require(binding_path); var binding = require(binding_path);
var sqlite3 = module.exports = exports = binding; var sqlite3 = module.exports = exports = binding;
var util = require('util');
var EventEmitter = require('events').EventEmitter; var EventEmitter = require('events').EventEmitter;
function errorCallback(args) { function normalizeMethod (fn) {
return function (sql) {
var errBack;
var args = Array.prototype.slice.call(arguments, 1);
if (typeof args[args.length - 1] === 'function') { if (typeof args[args.length - 1] === 'function') {
var callback = args[args.length - 1]; var callback = args[args.length - 1];
return function(err) { if (err) callback(err); }; errBack = function(err) {
if (err) {
callback(err);
}
};
}
var statement = new Statement(this, sql, errBack);
return fn.call(this, statement, args);
} }
} }
...@@ -55,56 +63,40 @@ inherits(Database, EventEmitter); ...@@ -55,56 +63,40 @@ inherits(Database, EventEmitter);
inherits(Statement, EventEmitter); inherits(Statement, EventEmitter);
// Database#prepare(sql, [bind1, bind2, ...], [callback]) // Database#prepare(sql, [bind1, bind2, ...], [callback])
Database.prototype.prepare = function(sql) { Database.prototype.prepare = normalizeMethod(function(statement, params) {
var params = Array.prototype.slice.call(arguments, 1); return params.length
? statement.bind.apply(statement, params)
if (!params.length || (params.length === 1 && typeof params[0] === 'function')) { : statement;
return new Statement(this, sql, params[0]); });
}
else {
var statement = new Statement(this, sql, errorCallback(params));
return statement.bind.apply(statement, params);
}
};
// Database#run(sql, [bind1, bind2, ...], [callback]) // Database#run(sql, [bind1, bind2, ...], [callback])
Database.prototype.run = function(sql) { Database.prototype.run = normalizeMethod(function(statement, params) {
var params = Array.prototype.slice.call(arguments, 1);
var statement = new Statement(this, sql, errorCallback(params));
statement.run.apply(statement, params).finalize(); statement.run.apply(statement, params).finalize();
return this; return this;
}; });
// Database#get(sql, [bind1, bind2, ...], [callback]) // Database#get(sql, [bind1, bind2, ...], [callback])
Database.prototype.get = function(sql) { Database.prototype.get = normalizeMethod(function(statement, params) {
var params = Array.prototype.slice.call(arguments, 1);
var statement = new Statement(this, sql, errorCallback(params));
statement.get.apply(statement, params).finalize(); statement.get.apply(statement, params).finalize();
return this; return this;
}; });
// Database#all(sql, [bind1, bind2, ...], [callback]) // Database#all(sql, [bind1, bind2, ...], [callback])
Database.prototype.all = function(sql) { Database.prototype.all = normalizeMethod(function(statement, params) {
var params = Array.prototype.slice.call(arguments, 1);
var statement = new Statement(this, sql, errorCallback(params));
statement.all.apply(statement, params).finalize(); statement.all.apply(statement, params).finalize();
return this; return this;
}; });
// Database#each(sql, [bind1, bind2, ...], [callback], [complete]) // Database#each(sql, [bind1, bind2, ...], [callback], [complete])
Database.prototype.each = function(sql) { Database.prototype.each = normalizeMethod(function(statement, params) {
var params = Array.prototype.slice.call(arguments, 1);
var statement = new Statement(this, sql, errorCallback(params));
statement.each.apply(statement, params).finalize(); statement.each.apply(statement, params).finalize();
return this; return this;
}; });
Database.prototype.map = function(sql) { Database.prototype.map = normalizeMethod(function(statement, params) {
var params = Array.prototype.slice.call(arguments, 1);
var statement = new Statement(this, sql, errorCallback(params));
statement.map.apply(statement, params).finalize(); statement.map.apply(statement, params).finalize();
return this; return this;
}; });
Statement.prototype.map = function() { Statement.prototype.map = function() {
var params = Array.prototype.slice.call(arguments); var params = Array.prototype.slice.call(arguments);
...@@ -164,22 +156,30 @@ Database.prototype.removeAllListeners = function(type) { ...@@ -164,22 +156,30 @@ Database.prototype.removeAllListeners = function(type) {
sqlite3.verbose = function() { sqlite3.verbose = function() {
if (!isVerbose) { if (!isVerbose) {
var trace = require('./trace'); var trace = require('./trace');
trace.extendTrace(Database.prototype, 'prepare'); [
trace.extendTrace(Database.prototype, 'get'); 'prepare',
trace.extendTrace(Database.prototype, 'run'); 'get',
trace.extendTrace(Database.prototype, 'all'); 'run',
trace.extendTrace(Database.prototype, 'each'); 'all',
trace.extendTrace(Database.prototype, 'map'); 'each',
trace.extendTrace(Database.prototype, 'exec'); 'map',
trace.extendTrace(Database.prototype, 'close'); 'close',
trace.extendTrace(Statement.prototype, 'bind'); 'exec'
trace.extendTrace(Statement.prototype, 'get'); ].forEach(function (name) {
trace.extendTrace(Statement.prototype, 'run'); trace.extendTrace(Database.prototype, name);
trace.extendTrace(Statement.prototype, 'all'); });
trace.extendTrace(Statement.prototype, 'each'); [
trace.extendTrace(Statement.prototype, 'map'); 'bind',
trace.extendTrace(Statement.prototype, 'reset'); 'get',
trace.extendTrace(Statement.prototype, 'finalize'); 'run',
'all',
'each',
'map',
'reset',
'finalize',
].forEach(function (name) {
trace.extendTrace(Statement.prototype, name);
});
isVerbose = true; isVerbose = true;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment