48 lines
1.0 KiB
TypeScript
48 lines
1.0 KiB
TypeScript
|
// Copyright IBM Corp. 2018. All Rights Reserved.
|
||
|
// Node module: loopback-datasource-juggler
|
||
|
// This file is licensed under the MIT License.
|
||
|
// License text available at https://opensource.org/licenses/MIT
|
||
|
|
||
|
import {Callback, Options, PromiseOrVoid} from './common';
|
||
|
|
||
|
/**
|
||
|
* Local transaction
|
||
|
*/
|
||
|
export interface Transaction {
|
||
|
/**
|
||
|
* Commit the transaction
|
||
|
* @param callback
|
||
|
*/
|
||
|
commit(callback?: Callback): PromiseOrVoid;
|
||
|
/**
|
||
|
* Rollback the transaction
|
||
|
* @param callback
|
||
|
*/
|
||
|
rollback(callback?: Callback): PromiseOrVoid;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Isolation level
|
||
|
*/
|
||
|
export enum IsolationLevel {
|
||
|
READ_COMMITTED = 'READ COMMITTED', // default
|
||
|
READ_UNCOMMITTED = 'READ UNCOMMITTED',
|
||
|
SERIALIZABLE = 'SERIALIZABLE',
|
||
|
REPEATABLE_READ = 'REPEATABLE READ',
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Mixin for transaction support
|
||
|
*/
|
||
|
export interface TransactionMixin {
|
||
|
/**
|
||
|
* Begin a new transaction
|
||
|
* @param options
|
||
|
* @param callback
|
||
|
*/
|
||
|
beginTransaction(
|
||
|
options?: IsolationLevel | Options,
|
||
|
callback?: Callback<Transaction>,
|
||
|
): PromiseOrVoid<Transaction>;
|
||
|
}
|