Skip to content

Commit 29ad16f

Browse files
committed
Deprecate commit, rollback and close in ManagedTransaction
1 parent 09e06a3 commit 29ad16f

File tree

7 files changed

+54
-3
lines changed

7 files changed

+54
-3
lines changed

packages/core/src/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ import ConnectionProvider from './connection-provider'
7070
import Connection from './connection'
7171
import Transaction from './transaction'
7272
import TransactionPromise from './transaction-promise'
73+
import ManagedTransaction from './transaction-managed'
7374
import Session, { TransactionConfig } from './session'
7475
import Driver, * as driver from './driver'
7576
import auth from './auth'
@@ -136,6 +137,7 @@ const forExport = {
136137
Result,
137138
Transaction,
138139
TransactionPromise,
140+
ManagedTransaction,
139141
Session,
140142
Driver,
141143
Connection,
@@ -194,6 +196,7 @@ export {
194196
Connection,
195197
Transaction,
196198
TransactionPromise,
199+
ManagedTransaction,
197200
Session,
198201
Driver,
199202
types,

packages/core/src/session.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,10 @@ import { Query, SessionMode } from './types'
3232
import Connection from './connection'
3333
import { NumberOrInteger } from './graph-types'
3434
import TransactionPromise from './transaction-promise'
35+
import ManagedTransaction from './transaction-managed'
3536

3637
type ConnectionConsumer = (connection: Connection | void) => any | undefined
37-
type TransactionWork<T> = (tx: Transaction) => Promise<T> | T
38+
type TransactionWork<T> = (tx: ManagedTransaction) => Promise<T> | T
3839

3940
interface TransactionConfig {
4041
timeout?: NumberOrInteger
@@ -336,7 +337,7 @@ class Session {
336337
* delay of 1 second and maximum retry time of 30 seconds. Maximum retry time is configurable via driver config's
337338
* `maxTransactionRetryTime` property in milliseconds.
338339
*
339-
* @param {function(tx: Transaction): Promise} transactionWork - Callback that executes operations against
340+
* @param {function(tx: ManagedTransaction): Promise} transactionWork - Callback that executes operations against
340341
* a given {@link Transaction}.
341342
* @param {TransactionConfig} [transactionConfig] - Configuration for all transactions started to execute the unit of work.
342343
* @return {Promise} Resolved promise as returned by the given function or rejected promise when given
@@ -358,7 +359,7 @@ class Session {
358359
* delay of 1 second and maximum retry time of 30 seconds. Maximum retry time is configurable via driver config's
359360
* `maxTransactionRetryTime` property in milliseconds.
360361
*
361-
* @param {function(tx: Transaction): Promise} transactionWork - Callback that executes operations against
362+
* @param {function(tx: ManagedTransaction): Promise} transactionWork - Callback that executes operations against
362363
* a given {@link Transaction}.
363364
* @param {TransactionConfig} [transactionConfig] - Configuration for all transactions started to execute the unit of work.
364365
* @return {Promise} Resolved promise as returned by the given function or rejected promise when given

packages/core/src/transaction-promise.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ class TransactionPromise extends Transaction implements Promise<Transaction>{
170170

171171
/**
172172
* @access private
173+
* @returns {void}
173174
*/
174175
private _onBeginError(error: Error): void {
175176
this._beginError = error;
@@ -180,6 +181,7 @@ class TransactionPromise extends Transaction implements Promise<Transaction>{
180181

181182
/**
182183
* @access private
184+
* @returns {void}
183185
*/
184186
private _onBeginMetadata(metadata: any): void {
185187
this._beginMetadata = metadata || {};

packages/core/test/transaction.test.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,12 @@ import { ConnectionProvider, newError, Transaction, TransactionPromise } from ".
2121
import { Bookmarks } from "../src/internal/bookmarks";
2222
import { ConnectionHolder } from "../src/internal/connection-holder";
2323
import { TxConfig } from "../src/internal/tx-config";
24+
import ManagedTransaction from "../src/transaction-managed";
2425
import FakeConnection from "./utils/connection.fake";
2526

2627

2728
testTx('Transaction', newRegularTransaction)
29+
testTx('ManagedTransaction', newManagedTransaction)
2830

2931
testTx('TransactionPromise', newTransactionPromise, () => {
3032
describe('Promise', () => {
@@ -498,6 +500,39 @@ function newRegularTransaction({
498500
return transaction
499501
}
500502

503+
function newManagedTransaction({
504+
connection,
505+
fetchSize = 1000,
506+
highRecordWatermark = 700,
507+
lowRecordWatermark = 300
508+
}: {
509+
connection: FakeConnection
510+
fetchSize?: number
511+
highRecordWatermark?: number,
512+
lowRecordWatermark?: number
513+
}): ManagedTransaction {
514+
const connectionProvider = new ConnectionProvider()
515+
connectionProvider.acquireConnection = () => Promise.resolve(connection)
516+
connectionProvider.close = () => Promise.resolve()
517+
518+
const connectionHolder = new ConnectionHolder({ connectionProvider })
519+
connectionHolder.initializeConnection()
520+
521+
const transaction = new ManagedTransaction({
522+
connectionHolder,
523+
onClose: () => { },
524+
onBookmarks: (_: Bookmarks) => { },
525+
onConnection: () => { },
526+
reactive: false,
527+
fetchSize,
528+
impersonatedUser: "",
529+
highRecordWatermark,
530+
lowRecordWatermark
531+
})
532+
533+
return transaction
534+
}
535+
501536
function newFakeConnection(): FakeConnection {
502537
return new FakeConnection()
503538
}

packages/neo4j-driver-lite/src/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ import {
6363
Session,
6464
Transaction,
6565
TransactionPromise,
66+
ManagedTransaction,
6667
ServerInfo,
6768
Connection,
6869
driver as coreDriver,
@@ -427,6 +428,7 @@ const forExport = {
427428
Session,
428429
Transaction,
429430
TransactionPromise,
431+
ManagedTransaction,
430432
Point,
431433
Duration,
432434
LocalTime,
@@ -476,6 +478,7 @@ export {
476478
Session,
477479
Transaction,
478480
TransactionPromise,
481+
ManagedTransaction,
479482
Point,
480483
Duration,
481484
LocalTime,

packages/neo4j-driver/test/types/session.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import {
2727
Session,
2828
TransactionConfig
2929
} from 'neo4j-driver-core'
30+
import ManagedTransaction from 'neo4j-driver-core/types/transaction-managed'
3031

3132
const dummy: any = null
3233
const intValue: Integer = Integer.fromInt(42)

packages/neo4j-driver/types/index.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ import {
5757
ResultObserver,
5858
QueryResult,
5959
Transaction,
60+
TransactionPromise,
61+
ManagedTransaction,
6062
Session,
6163
ConnectionProvider
6264
} from 'neo4j-driver-core'
@@ -189,6 +191,8 @@ declare const forExport: {
189191
NotificationPosition: NotificationPosition
190192
Session: Session
191193
Transaction: Transaction
194+
TransactionPromise: TransactionPromise
195+
ManagedTransaction: ManagedTransaction
192196
Point: Point
193197
isPoint: typeof isPoint
194198
Duration: Duration
@@ -246,6 +250,8 @@ export {
246250
NotificationPosition,
247251
Session,
248252
Transaction,
253+
TransactionPromise,
254+
ManagedTransaction,
249255
Point,
250256
isPoint,
251257
Duration,

0 commit comments

Comments
 (0)