Skip to content

Commit

Permalink
Set transaction mode (#90)
Browse files Browse the repository at this point in the history
* bump sqlite3 to [email protected]

* 2.6.17

* set transaction mode before begin

* 2.7.0

---------

Co-authored-by: Ubuntu <developer@hive.de0cq2v0owxuvngnu2s2vvfqfg.frax.internal.cloudapp.net>
  • Loading branch information
kbarbounakis and Ubuntu authored Mar 20, 2024
1 parent dde02fe commit 862ca1b
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 20 deletions.
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@themost/sqlite",
"version": "2.6.17",
"version": "2.7.0",
"description": "MOST Web Framework SQLite Adapter",
"main": "dist/index.js",
"types": "dist/index.d.ts",
Expand Down
43 changes: 26 additions & 17 deletions src/SqliteAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -198,31 +198,40 @@ class SqliteAdapter {
});
}
else {
// set transaction mode before begin
self.transaction = true;
//begin transaction
self.rawConnection.run('BEGIN TRANSACTION;', undefined, function (err) {
if (err) {
callback(err);
return;
// reset transaction mode
delete self.transaction;
return callback(err);
}
//initialize dummy transaction object (for future use)
self.transaction = true;
//execute function
fn.call(self, function (err) {
if (err) {
//rollback transaction
self.rawConnection.run('ROLLBACK;', undefined, function () {
delete self.transaction;
return callback(err);
});
}
else {
//commit transaction
try {
// invoke method
fn(function (err) {
if (err) {
// rollback transaction
return self.rawConnection.run('ROLLBACK;', undefined, function () {
// reset transcation mode on error
delete self.transaction;
return callback(err);
});
}
// commit transaction
self.rawConnection.run('COMMIT;', undefined, function (err) {
// reset transcation mode on error
delete self.transaction;
return callback(err);
});
}
});
});
} catch (invokeError) {
return self.rawConnection.run('ROLLBACK;', undefined, function () {
// reset transcation mode on error
delete self.transaction;
return callback(invokeError);
});
}
});
}
}
Expand Down

0 comments on commit 862ca1b

Please sign in to comment.