Skip to content

Commit 0ec1ced

Browse files
committed
fix: transaction is async
1 parent 3f25614 commit 0ec1ced

File tree

3 files changed

+9
-9
lines changed

3 files changed

+9
-9
lines changed

src/sqlite.common.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export interface SQLiteDatabase {
2929

3030
execute(query: string, params?: SqliteParams): Promise<void>;
3131

32-
transaction<T = any>(action: (cancel?: () => void) => T): T;
32+
transaction<T = any>(action: (cancel?: () => void) => Promise<T>): Promise<T>;
3333

3434
each(
3535
query: string,

src/sqlite.ios.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -415,11 +415,11 @@ function execRaw(db: FMDatabase, query: string, params?: SqliteParams) {
415415
}
416416
}
417417

418-
function transactionRaw<T = any>(
418+
async function transactionRaw<T = any>(
419419
db: FMDatabase,
420-
action: (cancel?: () => void) => T,
420+
action: (cancel?: () => void) => Promise<T>,
421421
isFirstTransaction: boolean
422-
): T {
422+
) {
423423
try {
424424
if (isFirstTransaction) {
425425
execRaw(db, 'BEGIN EXCLUSIVE TRANSACTION');
@@ -428,7 +428,7 @@ function transactionRaw<T = any>(
428428
const cancel = () => {
429429
cancelled.value = true;
430430
};
431-
const result = action(cancel);
431+
const result = await action(cancel);
432432
if (!cancelled.value && isFirstTransaction) {
433433
execRaw(db, 'COMMIT TRANSACTION');
434434
} else if (cancelled.value && isFirstTransaction) {
@@ -509,7 +509,7 @@ export class SQLiteDatabase {
509509
return selectRaw(this.db, query, params, false) as SqliteParam[][];
510510
}
511511
_isInTransaction = false;
512-
transaction<T = any>(action: (cancel?: () => void) => T): T {
512+
async transaction<T = any>(action: (cancel?: () => void) => Promise<T>): Promise<T> {
513513
let res;
514514
if (!this._isInTransaction) {
515515
this._isInTransaction = true;

src/sqlitedatabase.android.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,14 +117,14 @@ const eachRaw = <T>(onCursor: FromCursor<T>) => (db: Db) => (
117117
});
118118
};
119119

120-
const transactionRaw = <T = any>(db: Db, action: (cancel?: () => void) => T) => {
120+
const transactionRaw = async <T = any>(db: Db, action: ( (cancel?: () => void) => Promise<T>)) => {
121121
db.beginTransaction();
122122
try {
123123
const cancelled = { value: false };
124124
const cancel = () => {
125125
cancelled.value = true;
126126
};
127-
const result = action(cancel);
127+
const result = await action(cancel);
128128
if (!cancelled.value) {
129129
db.setTransactionSuccessful();
130130
}
@@ -318,7 +318,7 @@ export class SQLiteDatabaseBase {
318318
) {
319319
return eachRaw(dataFromCursor)(this.db)(query, params, callback, complete);
320320
}
321-
transaction<T = any>(action: (cancel?: () => void) => T): T {
321+
async transaction<T = any>(action: (cancel?: () => void) => Promise<T>): Promise<T> {
322322
return transactionRaw(this.db, action);
323323
}
324324
}

0 commit comments

Comments
 (0)