From 5d87f73c978f7cb65087bb406a53a95abb66b07d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Leurent?= <131.js@cloudyks.org> Date: Wed, 5 Jun 2019 09:59:57 +0200 Subject: [PATCH 1/2] Fix addListener('insert/update/delete') events --- src/database.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/database.cc b/src/database.cc index ace5fa0b0..0d222c65a 100644 --- a/src/database.cc +++ b/src/database.cc @@ -335,6 +335,15 @@ NAN_METHOD(Database::Configure) { Baton* baton = new Baton(db, handle); db->Schedule(RegisterProfileCallback, baton); } + else if ( + Nan::Equals(info[0], Nan::New("insert").ToLocalChecked()).FromJust() || + Nan::Equals(info[0], Nan::New("update").ToLocalChecked()).FromJust() || + Nan::Equals(info[0], Nan::New("delete").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"); From 9c610e99512a8df4ced4115b668701513f761122 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Leurent?= Date: Tue, 11 Jun 2019 06:59:13 +0200 Subject: [PATCH 2/2] Use change callback --- lib/sqlite3.js | 2 +- src/database.cc | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) 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 0d222c65a..2ddb0c21c 100644 --- a/src/database.cc +++ b/src/database.cc @@ -336,9 +336,7 @@ NAN_METHOD(Database::Configure) { db->Schedule(RegisterProfileCallback, baton); } else if ( - Nan::Equals(info[0], Nan::New("insert").ToLocalChecked()).FromJust() || - Nan::Equals(info[0], Nan::New("update").ToLocalChecked()).FromJust() || - Nan::Equals(info[0], Nan::New("delete").ToLocalChecked()).FromJust() + Nan::Equals(info[0], Nan::New("change").ToLocalChecked()).FromJust() ) { Local handle; Baton* baton = new Baton(db, handle); @@ -508,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; }