diff --git a/types/knex/index.d.ts b/types/knex/index.d.ts index 0b107481f7..e95373120e 100644 --- a/types/knex/index.d.ts +++ b/types/knex/index.d.ts @@ -22,7 +22,7 @@ interface Knex extends Knex.QueryInterface { __knex__: string; raw: Knex.RawBuilder; - transaction: (transactionScope: ((trx: Knex.Transaction) => void)) => Promise; + transaction(transactionScope: (trx: Knex.Transaction) => any): Promise; destroy(callback: Function): void; destroy(): Promise; batchInsert(tableName : TableName, data: any[], chunkSize : number) : Knex.QueryBuilder; @@ -347,10 +347,10 @@ declare namespace Knex { exec(callback: Function): QueryBuilder; } - interface Transaction extends QueryBuilder { - commit: any; - rollback: any; - raw: Knex.RawBuilder; + interface Transaction extends Knex { + savepoint(transactionScope: (trx: Transaction) => any): Promise; + commit(value?: any): QueryBuilder; + rollback(error?: any): QueryBuilder; } // diff --git a/types/knex/knex-tests.ts b/types/knex/knex-tests.ts index 1c2d5c4b4a..920b347a70 100644 --- a/types/knex/knex-tests.ts +++ b/types/knex/knex-tests.ts @@ -434,7 +434,19 @@ knex.transaction(function(trx) { // Using trx as a transaction object: knex.transaction(function(trx) { - trx.raw('') + trx.raw(''); + + trx.on('query-error', function(error: Error) { + console.error(error); + }); + + trx.savepoint(function(nestedTrx) { + nestedTrx.rollback(new Error('something went terribly wrong')); + }); + + trx.transaction(function(nestedTrx) { + nestedTrx.commit(); + }); var info: any; var books: any[] = [