diff --git a/lib/sqlite3.js b/lib/sqlite3.js index c8e3e8c6c..a731f729e 100644 --- a/lib/sqlite3.js +++ b/lib/sqlite3.js @@ -146,7 +146,7 @@ Statement.prototype.map = function() { var isVerbose = false; -var supportedEvents = [ 'trace', 'profile', 'insert', 'update', 'delete' ]; +var supportedEvents = [ 'trace', 'profile', 'change']; Database.prototype.addListener = Database.prototype.on = function(type) { var val = EventEmitter.prototype.addListener.apply(this, arguments); diff --git a/src/database.cc b/src/database.cc index ace5fa0b0..2ddb0c21c 100644 --- a/src/database.cc +++ b/src/database.cc @@ -335,6 +335,13 @@ NAN_METHOD(Database::Configure) { Baton* baton = new Baton(db, handle); db->Schedule(RegisterProfileCallback, baton); } + else if ( + Nan::Equals(info[0], Nan::New("change").ToLocalChecked()).FromJust() + ) { + Local handle; + Baton* baton = new Baton(db, handle); + db->Schedule(RegisterUpdateCallback, baton); + } else if (Nan::Equals(info[0], Nan::New("busyTimeout").ToLocalChecked()).FromJust()) { if (!info[1]->IsInt32()) { return Nan::ThrowTypeError("Value must be an integer"); @@ -499,12 +506,13 @@ void Database::UpdateCallback(Database *db, UpdateInfo* info) { Nan::HandleScope scope; Local argv[] = { + Nan::New("change").ToLocalChecked(), Nan::New(sqlite_authorizer_string(info->type)).ToLocalChecked(), Nan::New(info->database.c_str()).ToLocalChecked(), Nan::New(info->table.c_str()).ToLocalChecked(), Nan::New(info->rowid), }; - EMIT_EVENT(db->handle(), 4, argv); + EMIT_EVENT(db->handle(), 5, argv); delete info; }