@breautek/storm 8.5.0 → 8.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/docs/assets/hierarchy.js +1 -1
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/assets/style.css +2 -9
- package/docs/classes/Application.html +17 -17
- package/docs/classes/BackendAuthenticationMiddleware.html +3 -3
- package/docs/classes/CORSMiddleware.html +3 -3
- package/docs/classes/ConfigLoader.html +3 -3
- package/docs/classes/Database.html +2 -2
- package/docs/classes/DatabaseCastObject.html +2 -2
- package/docs/classes/DatabaseConnection.html +21 -21
- package/docs/classes/DatabaseQueryError.html +6 -6
- package/docs/classes/DeadLockError.html +6 -6
- package/docs/classes/DiskSpaceError.html +5 -5
- package/docs/classes/DropTemporaryTableQuery.html +11 -8
- package/docs/classes/DuplicateEntryError.html +5 -5
- package/docs/classes/EntityNotFoundError.html +5 -5
- package/docs/classes/ExpiredTokenError.html +5 -5
- package/docs/classes/Handler.html +2 -2
- package/docs/classes/InternalError.html +5 -5
- package/docs/classes/InvalidCredentialsError.html +5 -5
- package/docs/classes/InvalidValueError.html +5 -5
- package/docs/classes/LineString.html +2 -2
- package/docs/classes/LockWaitTimeoutError.html +6 -6
- package/docs/classes/ManagedDatabaseConnection.html +8 -5
- package/docs/classes/Middleware.html +2 -2
- package/docs/classes/MissingConfigError.html +5 -5
- package/docs/classes/MissingParameterError.html +5 -5
- package/docs/classes/MySQLConnection.html +23 -23
- package/docs/classes/MySQLDatabase.html +2 -2
- package/docs/classes/NotImplementedError.html +5 -5
- package/docs/classes/Point.html +2 -2
- package/docs/classes/Polygon.html +2 -2
- package/docs/classes/Query.html +11 -8
- package/docs/classes/RawError.html +5 -5
- package/docs/classes/RawQuery.html +11 -8
- package/docs/classes/Request.html +2 -2
- package/docs/classes/Response.html +2 -2
- package/docs/classes/ResponseData.html +2 -2
- package/docs/classes/ServiceProvider.html +2 -2
- package/docs/classes/ServiceResponse.html +2 -2
- package/docs/classes/SetSessionVariableQuery.html +11 -8
- package/docs/classes/StormError.html +5 -5
- package/docs/classes/TemporaryTableQuery.html +11 -8
- package/docs/classes/TimeoutError.html +5 -5
- package/docs/classes/Token.html +2 -2
- package/docs/classes/TokenManager.html +2 -2
- package/docs/classes/Transaction.html +2 -2
- package/docs/classes/UnauthorizedAccessError.html +5 -5
- package/docs/enums/ErrorCode.html +2 -2
- package/docs/enums/ExitCode.html +2 -2
- package/docs/enums/HTTPMethod.html +2 -2
- package/docs/enums/IsolationLevel.html +2 -2
- package/docs/enums/JWTError.html +2 -2
- package/docs/enums/StatusCode.html +2 -2
- package/docs/enums/TransactionAccessLevel.html +4 -0
- package/docs/functions/getInstance.html +1 -1
- package/docs/hierarchy.html +1 -1
- package/docs/index.html +1 -1
- package/docs/interfaces/IAdditionalErrorDetails.html +1 -1
- package/docs/interfaces/ICloudwatchConfig.html +2 -2
- package/docs/interfaces/ICloudwatchCredentials.html +2 -2
- package/docs/interfaces/ICloudwatchStreamConfig.html +2 -2
- package/docs/interfaces/IConfig.html +2 -2
- package/docs/interfaces/IDatabaseConfig.html +2 -2
- package/docs/interfaces/IDatabaseConnection.html +8 -5
- package/docs/interfaces/IDatabasePosition.html +2 -2
- package/docs/interfaces/IErrorResponse.html +2 -2
- package/docs/interfaces/IFormData.html +2 -2
- package/docs/interfaces/IHandler.html +2 -2
- package/docs/interfaces/IInsertQueryResult.html +2 -2
- package/docs/interfaces/IJWTVerifyOptions.html +2 -2
- package/docs/interfaces/IOKPacket.html +2 -2
- package/docs/interfaces/IParameterMap.html +1 -1
- package/docs/interfaces/IQueryable.html +2 -2
- package/docs/interfaces/IRequestResponse.html +2 -2
- package/docs/interfaces/IServiceHeaders.html +1 -1
- package/docs/interfaces/ISetSessionVariableQueryInput.html +2 -2
- package/docs/interfaces/IStormCLIArgs.html +2 -2
- package/docs/interfaces/ITemporaryTableQueryInput.html +2 -2
- package/docs/interfaces/IUpdateQueryResult.html +2 -2
- package/docs/interfaces/formidable.FileJSON.html +1 -1
- package/docs/interfaces/formidable.Part.html +1 -1
- package/docs/types/IDeleteQueryResult.html +1 -1
- package/docs/types/IHandlerError.html +1 -1
- package/docs/types/IHandlerResponse.html +1 -1
- package/docs/types/IStoredProcedureResult.html +1 -1
- package/docs/types/TCoordinate.html +1 -1
- package/lib/IDatabaseConnection.d.ts +5 -1
- package/lib/ManagedDatabaseConnection.d.ts +2 -1
- package/lib/ManagedDatabaseConnection.js +2 -2
- package/lib/ManagedDatabaseConnection.js.map +1 -1
- package/lib/MySQLConnection.d.ts +2 -1
- package/lib/MySQLConnection.js +7 -5
- package/lib/MySQLConnection.js.map +1 -1
- package/lib/Query.d.ts +2 -0
- package/lib/Query.js +2 -0
- package/lib/Query.js.map +1 -1
- package/lib/Transaction.d.ts +3 -1
- package/lib/Transaction.js +4 -2
- package/lib/Transaction.js.map +1 -1
- package/lib/TransactionAccessLevel.d.ts +7 -0
- package/lib/TransactionAccessLevel.js +27 -0
- package/lib/TransactionAccessLevel.js.map +1 -0
- package/lib/api.d.ts +1 -0
- package/lib/api.js +4 -2
- package/lib/api.js.map +1 -1
- package/lib/private/StartTransactionQuery.d.ts +8 -1
- package/lib/private/StartTransactionQuery.js +11 -2
- package/lib/private/StartTransactionQuery.js.map +1 -1
- package/package.json +11 -11
- package/src/IDatabaseConnection.ts +6 -1
- package/src/ManagedDatabaseConnection.ts +3 -2
- package/src/MySQLConnection.ts +9 -8
- package/src/Query.ts +2 -0
- package/src/Transaction.ts +5 -2
- package/src/TransactionAccessLevel.ts +23 -0
- package/src/api.ts +1 -0
- package/src/private/StartTransactionQuery.ts +22 -4
|
@@ -2,6 +2,7 @@ import { Readable } from 'stream';
|
|
|
2
2
|
import { IQueryable } from './IQueryable';
|
|
3
3
|
import { IsolationLevel } from './IsolationLevel';
|
|
4
4
|
import { IDatabasePosition } from './IDatabasePosition';
|
|
5
|
+
import { TransactionAccessLevel } from './TransactionAccessLevel';
|
|
5
6
|
export interface IDatabaseConnection {
|
|
6
7
|
setInstantiationStack(stack: string): void;
|
|
7
8
|
getInstantiationStack(): string;
|
|
@@ -10,10 +11,13 @@ export interface IDatabaseConnection {
|
|
|
10
11
|
setTimeout(timeout: number): void;
|
|
11
12
|
getTimeout(): number;
|
|
12
13
|
query(query: IQueryable<any>, params?: any): Promise<any>;
|
|
14
|
+
/**
|
|
15
|
+
* @deprecated - Streaming queries does not support post processing, creating a confusing API
|
|
16
|
+
*/
|
|
13
17
|
stream(query: IQueryable<any>, params?: any, streamOptions?: any): Readable;
|
|
14
18
|
close(forceClose?: boolean): Promise<void>;
|
|
15
19
|
isClosed(): boolean;
|
|
16
|
-
startTransaction(level?: IsolationLevel): Promise<void>;
|
|
20
|
+
startTransaction(level?: IsolationLevel, accessLevel?: TransactionAccessLevel): Promise<void>;
|
|
17
21
|
isTransaction(): boolean;
|
|
18
22
|
commit(): Promise<void>;
|
|
19
23
|
rollback(): Promise<void>;
|
|
@@ -4,6 +4,7 @@ import { Query } from './Query';
|
|
|
4
4
|
import { IsolationLevel } from './IsolationLevel';
|
|
5
5
|
import { IDatabasePosition } from './IDatabasePosition';
|
|
6
6
|
import { IQueryable } from './IQueryable';
|
|
7
|
+
import { TransactionAccessLevel } from './TransactionAccessLevel';
|
|
7
8
|
export declare class ManagedDatabaseConnection implements IDatabaseConnection {
|
|
8
9
|
private $connection;
|
|
9
10
|
/**
|
|
@@ -30,7 +31,7 @@ export declare class ManagedDatabaseConnection implements IDatabaseConnection {
|
|
|
30
31
|
query(query: Query, params?: any): Promise<any>;
|
|
31
32
|
stream(query: Query, params?: any, streamOptions?: any): Readable;
|
|
32
33
|
close(forceClose?: boolean): Promise<void>;
|
|
33
|
-
startTransaction(isolationLevel?: IsolationLevel): Promise<void>;
|
|
34
|
+
startTransaction(isolationLevel?: IsolationLevel, accessLevel?: TransactionAccessLevel): Promise<void>;
|
|
34
35
|
isTransaction(): boolean;
|
|
35
36
|
commit(): Promise<void>;
|
|
36
37
|
rollback(): Promise<void>;
|
|
@@ -140,11 +140,11 @@ class ManagedDatabaseConnection {
|
|
|
140
140
|
}
|
|
141
141
|
});
|
|
142
142
|
}
|
|
143
|
-
startTransaction(isolationLevel) {
|
|
143
|
+
startTransaction(isolationLevel, accessLevel) {
|
|
144
144
|
return new Promise((resolve, reject) => {
|
|
145
145
|
this.$getConnection().then((connection) => {
|
|
146
146
|
if (!this.isManaged()) {
|
|
147
|
-
connection.startTransaction(isolationLevel).then(resolve).catch(reject);
|
|
147
|
+
connection.startTransaction(isolationLevel, accessLevel).then(resolve).catch(reject);
|
|
148
148
|
}
|
|
149
149
|
else {
|
|
150
150
|
resolve();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManagedDatabaseConnection.js","sourceRoot":"","sources":["../src/ManagedDatabaseConnection.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAGF,yCAAuC;
|
|
1
|
+
{"version":3,"file":"ManagedDatabaseConnection.js","sourceRoot":"","sources":["../src/ManagedDatabaseConnection.ts"],"names":[],"mappings":"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"}
|
package/lib/MySQLConnection.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { Readable } from 'stream';
|
|
|
4
4
|
import { IsolationLevel } from './IsolationLevel';
|
|
5
5
|
import { IDatabasePosition } from './IDatabasePosition';
|
|
6
6
|
import { IQueryable } from './IQueryable';
|
|
7
|
+
import { TransactionAccessLevel } from './TransactionAccessLevel';
|
|
7
8
|
export declare class MySQLConnection extends DatabaseConnection<MySQL.PoolConnection> {
|
|
8
9
|
private $transaction;
|
|
9
10
|
private $opened;
|
|
@@ -21,7 +22,7 @@ export declare class MySQLConnection extends DatabaseConnection<MySQL.PoolConnec
|
|
|
21
22
|
getCurrentDatabasePosition(): Promise<IDatabasePosition>;
|
|
22
23
|
protected _query(query: string, params?: any): Promise<any>;
|
|
23
24
|
protected _stream(query: string, params?: any, streamOptions?: any): Readable;
|
|
24
|
-
startTransaction(isolationLevel?: IsolationLevel): Promise<void>;
|
|
25
|
+
startTransaction(isolationLevel?: IsolationLevel, accessLevel?: TransactionAccessLevel): Promise<void>;
|
|
25
26
|
endTransaction(requiresRollback?: boolean): Promise<void>;
|
|
26
27
|
rollback(): Promise<void>;
|
|
27
28
|
commit(): Promise<void>;
|
package/lib/MySQLConnection.js
CHANGED
|
@@ -31,6 +31,7 @@ const LockWaitTimeoutError_1 = require("./LockWaitTimeoutError");
|
|
|
31
31
|
const GetSlavePositionQuery_1 = require("./private/GetSlavePositionQuery");
|
|
32
32
|
const GetMasterPositionQuery_1 = require("./private/GetMasterPositionQuery");
|
|
33
33
|
const queryFormatter_1 = require("./mysql/queryFormatter");
|
|
34
|
+
const TransactionAccessLevel_1 = require("./TransactionAccessLevel");
|
|
34
35
|
const DEFAULT_HIGH_WATERMARK = 512; // in number of result objects
|
|
35
36
|
const TAG = 'MySQLConnection';
|
|
36
37
|
const SQL_FORMATTING_OPTIONS = {
|
|
@@ -47,7 +48,6 @@ const SQL_FORMATTING_OPTIONS = {
|
|
|
47
48
|
dataTypeCase: 'upper',
|
|
48
49
|
functionCase: 'upper'
|
|
49
50
|
};
|
|
50
|
-
let startTransactionQuery = new StartTransactionQuery_1.StartTransactionQuery();
|
|
51
51
|
let commitQuery = new CommitQuery_1.CommitQuery();
|
|
52
52
|
let rollbackQuery = new RollbackQuery_1.RollbackQuery();
|
|
53
53
|
class MySQLConnection extends DatabaseConnection_1.DatabaseConnection {
|
|
@@ -160,9 +160,9 @@ class MySQLConnection extends DatabaseConnection_1.DatabaseConnection {
|
|
|
160
160
|
(0, instance_1.getInstance)().getLogger().trace(TAG, SQLFormatter.format(queryObject.sql, SQL_FORMATTING_OPTIONS));
|
|
161
161
|
return queryObject.stream(streamOptions);
|
|
162
162
|
}
|
|
163
|
-
async startTransaction(isolationLevel) {
|
|
164
|
-
if (this.isReadOnly()) {
|
|
165
|
-
throw new Error('A readonly connection cannot start a transaction.');
|
|
163
|
+
async startTransaction(isolationLevel, accessLevel = TransactionAccessLevel_1.TransactionAccessLevel.RW) {
|
|
164
|
+
if (this.isReadOnly() && accessLevel === TransactionAccessLevel_1.TransactionAccessLevel.RW) {
|
|
165
|
+
throw new Error('A readonly connection cannot start a read/write transaction.');
|
|
166
166
|
}
|
|
167
167
|
if (this.isTransaction()) {
|
|
168
168
|
throw new Error('Connection is already in a transaction.');
|
|
@@ -172,7 +172,9 @@ class MySQLConnection extends DatabaseConnection_1.DatabaseConnection {
|
|
|
172
172
|
if (isolationLevel) {
|
|
173
173
|
await new SetIsolationLevelQuery_1.SetIsolationLevelQuery(isolationLevel).execute(this);
|
|
174
174
|
}
|
|
175
|
-
await
|
|
175
|
+
await new StartTransactionQuery_1.StartTransactionQuery({
|
|
176
|
+
accessLevel: accessLevel
|
|
177
|
+
}).execute(this);
|
|
176
178
|
}
|
|
177
179
|
catch (ex) {
|
|
178
180
|
this.$transaction = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MySQLConnection.js","sourceRoot":"","sources":["../src/MySQLConnection.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;;AAEF,6DAAwD;AACxD,6DAAwD;AACxD,yCAAuC;
|
|
1
|
+
{"version":3,"file":"MySQLConnection.js","sourceRoot":"","sources":["../src/MySQLConnection.ts"],"names":[],"mappings":"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"}
|
package/lib/Query.d.ts
CHANGED
|
@@ -39,6 +39,8 @@ export declare abstract class Query<TQueryParameters = any, TQueryResultSet = an
|
|
|
39
39
|
/**
|
|
40
40
|
* Override to augment/manipulate the returned result set.
|
|
41
41
|
*
|
|
42
|
+
* @deprecated - Streaming queries does not support post processing, creating a confusing API
|
|
43
|
+
*
|
|
42
44
|
* @param connection The connection object used for this query execution. Useful if further queries are required.
|
|
43
45
|
* @param resultset The original result set
|
|
44
46
|
*/
|
package/lib/Query.js
CHANGED
|
@@ -65,6 +65,8 @@ class Query {
|
|
|
65
65
|
/**
|
|
66
66
|
* Override to augment/manipulate the returned result set.
|
|
67
67
|
*
|
|
68
|
+
* @deprecated - Streaming queries does not support post processing, creating a confusing API
|
|
69
|
+
*
|
|
68
70
|
* @param connection The connection object used for this query execution. Useful if further queries are required.
|
|
69
71
|
* @param resultset The original result set
|
|
70
72
|
*/
|
package/lib/Query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Query.js","sourceRoot":"","sources":["../src/Query.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAKF,MAAsB,KAAK;IAGvB,YAAmB,UAA6B;QAC5C,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,aAAa;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACI,qBAAqB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAIM,QAAQ,CAAC,UAA+B;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;OAMG;IACI,UAAU,CAAC,UAA+B;QAC7C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;;;;;;;OAWG;IACI,WAAW,CAAC,UAA+B;QAC9C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"Query.js","sourceRoot":"","sources":["../src/Query.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAKF,MAAsB,KAAK;IAGvB,YAAmB,UAA6B;QAC5C,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,aAAa;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACI,qBAAqB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAIM,QAAQ,CAAC,UAA+B;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;OAMG;IACI,UAAU,CAAC,UAA+B;QAC7C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;;;;;;;OAWG;IACI,WAAW,CAAC,UAA+B;QAC9C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,aAAa,CAAC,UAA+B,EAAE,SAA0B;QAClF,wEAAwE;QACxE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAgB,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,UAA+B;QAChD,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACJ;AAxED,sBAwEC"}
|
package/lib/Transaction.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { IDatabaseConnection } from './IDatabaseConnection';
|
|
|
2
2
|
import { IQueryable } from './IQueryable';
|
|
3
3
|
import { Application } from './Application';
|
|
4
4
|
import { IsolationLevel } from './IsolationLevel';
|
|
5
|
+
import { TransactionAccessLevel } from './TransactionAccessLevel';
|
|
5
6
|
export type ITransactionExecutor = (connection: IDatabaseConnection) => Promise<void>;
|
|
6
7
|
/**
|
|
7
8
|
* A class encapsulating an entire transaction from beginning to commitment.
|
|
@@ -19,7 +20,8 @@ export declare class Transaction implements IQueryable<void> {
|
|
|
19
20
|
private $application;
|
|
20
21
|
private $isolationLevel;
|
|
21
22
|
private $executor;
|
|
22
|
-
|
|
23
|
+
private $accessLevel;
|
|
24
|
+
constructor(app: Application, executor: ITransactionExecutor, retryLimit?: number, isolationLevel?: IsolationLevel, accessLevel?: TransactionAccessLevel);
|
|
23
25
|
onPreQuery(connection: IDatabaseConnection): Promise<void>;
|
|
24
26
|
onPostQuery(connection: IDatabaseConnection): Promise<void>;
|
|
25
27
|
getQuery(connection: IDatabaseConnection): string;
|
package/lib/Transaction.js
CHANGED
|
@@ -21,6 +21,7 @@ const InternalError_1 = require("./InternalError");
|
|
|
21
21
|
const DeadLockError_1 = require("./DeadLockError");
|
|
22
22
|
const InvalidValueError_1 = require("./InvalidValueError");
|
|
23
23
|
const LockWaitTimeoutError_1 = require("./LockWaitTimeoutError");
|
|
24
|
+
const TransactionAccessLevel_1 = require("./TransactionAccessLevel");
|
|
24
25
|
const TAG = 'Transaction';
|
|
25
26
|
/**
|
|
26
27
|
* A class encapsulating an entire transaction from beginning to commitment.
|
|
@@ -34,7 +35,7 @@ const TAG = 'Transaction';
|
|
|
34
35
|
* on the same connection.
|
|
35
36
|
*/
|
|
36
37
|
class Transaction {
|
|
37
|
-
constructor(app, executor, retryLimit = Infinity, isolationLevel = IsolationLevel_1.IsolationLevel.REPEATABLE_READ) {
|
|
38
|
+
constructor(app, executor, retryLimit = Infinity, isolationLevel = IsolationLevel_1.IsolationLevel.REPEATABLE_READ, accessLevel = TransactionAccessLevel_1.TransactionAccessLevel.RW) {
|
|
38
39
|
this.$application = app;
|
|
39
40
|
this.$executor = executor;
|
|
40
41
|
if (retryLimit === null || retryLimit === undefined) {
|
|
@@ -45,6 +46,7 @@ class Transaction {
|
|
|
45
46
|
}
|
|
46
47
|
this.$retryLimit = retryLimit;
|
|
47
48
|
this.$isolationLevel = isolationLevel;
|
|
49
|
+
this.$accessLevel = accessLevel;
|
|
48
50
|
}
|
|
49
51
|
async onPreQuery(connection) { }
|
|
50
52
|
async onPostQuery(connection) { }
|
|
@@ -65,7 +67,7 @@ class Transaction {
|
|
|
65
67
|
do {
|
|
66
68
|
attemptCount++;
|
|
67
69
|
this.$application.getLogger().info(TAG, `Starting transaction attempt ${attemptCount} of ${this.$retryLimit === Infinity ? 'Infinity' : this.$retryLimit.toString()}`);
|
|
68
|
-
await connection.startTransaction(this.$isolationLevel);
|
|
70
|
+
await connection.startTransaction(this.$isolationLevel, this.$accessLevel);
|
|
69
71
|
try {
|
|
70
72
|
await this.$executor(connection);
|
|
71
73
|
await connection.commit();
|
package/lib/Transaction.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../src/Transaction.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAKF,qDAAkD;AAClD,mDAAgD;AAChD,mDAAgD;AAChD,2DAAwD;AACxD,iEAA8D;
|
|
1
|
+
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../src/Transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
Copyright 2017-2025 Norman Breau
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.TransactionAccessLevel = void 0;
|
|
19
|
+
/**
|
|
20
|
+
* @since 8.6.0
|
|
21
|
+
*/
|
|
22
|
+
var TransactionAccessLevel;
|
|
23
|
+
(function (TransactionAccessLevel) {
|
|
24
|
+
TransactionAccessLevel[TransactionAccessLevel["RW"] = 0] = "RW";
|
|
25
|
+
TransactionAccessLevel[TransactionAccessLevel["RO"] = 1] = "RO";
|
|
26
|
+
})(TransactionAccessLevel || (exports.TransactionAccessLevel = TransactionAccessLevel = {}));
|
|
27
|
+
//# sourceMappingURL=TransactionAccessLevel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionAccessLevel.js","sourceRoot":"","sources":["../src/TransactionAccessLevel.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF;;GAEG;AACH,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAC9B,+DAAE,CAAA;IACF,+DAAE,CAAA;AACN,CAAC,EAHW,sBAAsB,sCAAtB,sBAAsB,QAGjC"}
|
package/lib/api.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export { IsolationLevel } from './IsolationLevel';
|
|
|
18
18
|
export { Transaction } from './Transaction';
|
|
19
19
|
export { IOKPacket } from './IOKPacket';
|
|
20
20
|
export { IStoredProcedureResult } from './IStoredProcedureResult';
|
|
21
|
+
export { TransactionAccessLevel } from './TransactionAccessLevel';
|
|
21
22
|
export { ErrorCode } from './ErrorCode';
|
|
22
23
|
export { RawError } from './RawError';
|
|
23
24
|
export { StormError, IErrorResponse, IAdditionalErrorDetails } from './StormError';
|
package/lib/api.js
CHANGED
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.
|
|
19
|
-
exports.formidable = exports.Polygon = exports.LineString = void 0;
|
|
18
|
+
exports.DatabaseCastObject = exports.ExitCode = exports.TokenManager = exports.Token = exports.BackendAuthenticationMiddleware = exports.ServiceResponse = exports.HTTPMethod = exports.ServiceProvider = exports.CORSMiddleware = exports.Handler = exports.ResponseData = exports.Response = exports.Request = exports.Middleware = exports.StatusCode = exports.LockWaitTimeoutError = exports.DeadLockError = exports.NotImplementedError = exports.DatabaseQueryError = exports.MissingConfigError = exports.DuplicateEntryError = exports.DiskSpaceError = exports.EntityNotFoundError = exports.UnauthorizedAccessError = exports.InvalidValueError = exports.ExpiredTokenError = exports.InternalError = exports.InvalidCredentialsError = exports.MissingParameterError = exports.JWTError = exports.TimeoutError = exports.StormError = exports.RawError = exports.ErrorCode = exports.TransactionAccessLevel = exports.Transaction = exports.IsolationLevel = exports.SetSessionVariableQuery = exports.RawQuery = exports.DropTemporaryTableQuery = exports.TemporaryTableQuery = exports.Query = exports.ManagedDatabaseConnection = exports.MySQLConnection = exports.MySQLDatabase = exports.DatabaseConnection = exports.Database = exports.ConfigLoader = exports.Application = exports.getInstance = void 0;
|
|
19
|
+
exports.formidable = exports.Polygon = exports.LineString = exports.Point = void 0;
|
|
20
20
|
const tslib_1 = require("tslib");
|
|
21
21
|
// Application
|
|
22
22
|
var instance_1 = require("./instance");
|
|
@@ -51,6 +51,8 @@ var IsolationLevel_1 = require("./IsolationLevel");
|
|
|
51
51
|
Object.defineProperty(exports, "IsolationLevel", { enumerable: true, get: function () { return IsolationLevel_1.IsolationLevel; } });
|
|
52
52
|
var Transaction_1 = require("./Transaction");
|
|
53
53
|
Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return Transaction_1.Transaction; } });
|
|
54
|
+
var TransactionAccessLevel_1 = require("./TransactionAccessLevel");
|
|
55
|
+
Object.defineProperty(exports, "TransactionAccessLevel", { enumerable: true, get: function () { return TransactionAccessLevel_1.TransactionAccessLevel; } });
|
|
54
56
|
// Errors
|
|
55
57
|
var ErrorCode_1 = require("./ErrorCode");
|
|
56
58
|
Object.defineProperty(exports, "ErrorCode", { enumerable: true, get: function () { return ErrorCode_1.ErrorCode; } });
|
package/lib/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;;;AAEF,cAAc;AACd,uCAAuC;AAA/B,uGAAA,WAAW,OAAA;AACnB,6CAGuB;AAFnB,0GAAA,WAAW,OAAA;AAIf,SAAS;AACT,+CAA4C;AAApC,4GAAA,YAAY,OAAA;AAEpB,WAAW;AACX,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAChB,2DAAwD;AAAhD,wHAAA,kBAAkB,OAAA;AAC1B,iDAA8C;AAAtC,8GAAA,aAAa,OAAA;AACrB,qDAAkD;AAA1C,kHAAA,eAAe,OAAA;AACvB,yEAAsE;AAA9D,sIAAA,yBAAyB,OAAA;AACjC,iCAA8B;AAAtB,8FAAA,KAAK,OAAA;AACb,6DAAqF;AAA7E,0HAAA,mBAAmB,OAAA;AAC3B,qEAAkE;AAA1D,kIAAA,uBAAuB,OAAA;AAC/B,uCAAoC;AAA5B,oGAAA,QAAQ,OAAA;AAIhB,qEAAiG;AAAzF,kIAAA,uBAAuB,OAAA;AAC/B,mDAAgD;AAAxC,gHAAA,cAAc,OAAA;AACtB,6CAA0C;AAAlC,0GAAA,WAAW,OAAA;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { Query } from '../Query';
|
|
2
|
-
|
|
2
|
+
import { TransactionAccessLevel } from '../TransactionAccessLevel';
|
|
3
|
+
/**
|
|
4
|
+
* @since 8.6.0
|
|
5
|
+
*/
|
|
6
|
+
export interface IStartTransactionQueryInput {
|
|
7
|
+
accessLevel?: TransactionAccessLevel;
|
|
8
|
+
}
|
|
9
|
+
export declare class StartTransactionQuery extends Query<IStartTransactionQueryInput, void> {
|
|
3
10
|
protected _getQuery(): string;
|
|
4
11
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
Copyright 2017-
|
|
3
|
+
Copyright 2017-2025 Norman Breau
|
|
4
4
|
|
|
5
5
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
6
|
you may not use this file except in compliance with the License.
|
|
@@ -17,9 +17,18 @@
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.StartTransactionQuery = void 0;
|
|
19
19
|
const Query_1 = require("../Query");
|
|
20
|
+
const TransactionAccessLevel_1 = require("../TransactionAccessLevel");
|
|
20
21
|
class StartTransactionQuery extends Query_1.Query {
|
|
21
22
|
_getQuery() {
|
|
22
|
-
|
|
23
|
+
let params = this.getParameters();
|
|
24
|
+
let accessString;
|
|
25
|
+
if (params?.accessLevel === TransactionAccessLevel_1.TransactionAccessLevel.RO) {
|
|
26
|
+
accessString = 'READ ONLY';
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
accessString = 'READ WRITE';
|
|
30
|
+
}
|
|
31
|
+
return `START TRANSACTION ${accessString}`;
|
|
23
32
|
}
|
|
24
33
|
}
|
|
25
34
|
exports.StartTransactionQuery = StartTransactionQuery;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StartTransactionQuery.js","sourceRoot":"","sources":["../../src/private/StartTransactionQuery.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF,oCAA+B;
|
|
1
|
+
{"version":3,"file":"StartTransactionQuery.js","sourceRoot":"","sources":["../../src/private/StartTransactionQuery.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;AAEF,oCAA+B;AAC/B,sEAAmE;AASnE,MAAa,qBAAsB,SAAQ,aAAwC;IAC5D,SAAS;QACxB,IAAI,MAAM,GAAgC,IAAI,CAAC,aAAa,EAAE,CAAC;QAE/D,IAAI,YAAoB,CAAC;QACzB,IAAI,MAAM,EAAE,WAAW,KAAK,+CAAsB,CAAC,EAAE,EAAE,CAAC;YACpD,YAAY,GAAG,WAAW,CAAC;QAC/B,CAAC;aACI,CAAC;YACF,YAAY,GAAG,YAAY,CAAC;QAChC,CAAC;QAED,OAAO,qBAAqB,YAAY,EAAE,CAAC;IAC/C,CAAC;CACJ;AAdD,sDAcC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@breautek/storm",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.6.0",
|
|
4
4
|
"description": "Object-Oriented REST API framework",
|
|
5
5
|
"main": "lib/api.js",
|
|
6
6
|
"types": "lib/api.d.ts",
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@arashi/token": "1.0.1",
|
|
48
48
|
"@breautek/merge-change": "1.0.0",
|
|
49
|
-
"@types/body-parser": "1.19.
|
|
50
|
-
"@types/express": "4.17.
|
|
49
|
+
"@types/body-parser": "1.19.6",
|
|
50
|
+
"@types/express": "4.17.23",
|
|
51
51
|
"@types/formidable": "3.4.5",
|
|
52
52
|
"@types/jsonwebtoken": "9.0.7",
|
|
53
53
|
"@types/mysql": "2.15.27",
|
|
@@ -57,11 +57,11 @@
|
|
|
57
57
|
"body-parser": "1.20.3",
|
|
58
58
|
"commander": "13.1.0",
|
|
59
59
|
"express": "4.21.2",
|
|
60
|
-
"form-data": "4.0.
|
|
60
|
+
"form-data": "4.0.3",
|
|
61
61
|
"formidable": "3.5.4",
|
|
62
62
|
"jsonwebtoken": "9.0.2",
|
|
63
63
|
"mysql": "2.18.1",
|
|
64
|
-
"sql-formatter": "15.6.
|
|
64
|
+
"sql-formatter": "15.6.6",
|
|
65
65
|
"tslib": "2.8.1",
|
|
66
66
|
"uuid": "11.1.0"
|
|
67
67
|
},
|
|
@@ -73,14 +73,14 @@
|
|
|
73
73
|
"@arashi/interfaces": "1.2.1",
|
|
74
74
|
"@arashi/logger": "4.1.3",
|
|
75
75
|
"@totalpave/eslint-plugin": "7.0.11",
|
|
76
|
-
"@types/jest": "
|
|
76
|
+
"@types/jest": "30.0.0",
|
|
77
77
|
"auto-changelog": "2.5.0",
|
|
78
|
-
"jest": "
|
|
79
|
-
"jest-jasmine2": "
|
|
80
|
-
"ts-jest": "29.
|
|
78
|
+
"jest": "30.0.3",
|
|
79
|
+
"jest-jasmine2": "30.0.3",
|
|
80
|
+
"ts-jest": "29.4.0",
|
|
81
81
|
"ts-node": "10.9.2",
|
|
82
|
-
"typedoc": "0.28.
|
|
83
|
-
"typedoc-plugin-markdown": "4.
|
|
82
|
+
"typedoc": "0.28.7",
|
|
83
|
+
"typedoc-plugin-markdown": "4.7.0",
|
|
84
84
|
"typescript": "5.8.3"
|
|
85
85
|
}
|
|
86
86
|
}
|
|
@@ -18,6 +18,7 @@ import { Readable } from 'stream';
|
|
|
18
18
|
import { IQueryable } from './IQueryable';
|
|
19
19
|
import { IsolationLevel } from './IsolationLevel';
|
|
20
20
|
import { IDatabasePosition } from './IDatabasePosition';
|
|
21
|
+
import { TransactionAccessLevel } from './TransactionAccessLevel';
|
|
21
22
|
|
|
22
23
|
export interface IDatabaseConnection {
|
|
23
24
|
setInstantiationStack(stack: string): void;
|
|
@@ -27,10 +28,14 @@ export interface IDatabaseConnection {
|
|
|
27
28
|
setTimeout(timeout: number): void;
|
|
28
29
|
getTimeout(): number;
|
|
29
30
|
query(query: IQueryable<any>, params?: any): Promise<any>;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @deprecated - Streaming queries does not support post processing, creating a confusing API
|
|
34
|
+
*/
|
|
30
35
|
stream(query: IQueryable<any>, params?: any, streamOptions?: any): Readable;
|
|
31
36
|
close(forceClose?: boolean): Promise<void>;
|
|
32
37
|
isClosed(): boolean;
|
|
33
|
-
startTransaction(level?: IsolationLevel): Promise<void>;
|
|
38
|
+
startTransaction(level?: IsolationLevel, accessLevel?: TransactionAccessLevel): Promise<void>;
|
|
34
39
|
isTransaction(): boolean;
|
|
35
40
|
commit(): Promise<void>;
|
|
36
41
|
rollback(): Promise<void>;
|
|
@@ -21,6 +21,7 @@ import { Query } from './Query';
|
|
|
21
21
|
import { IsolationLevel } from './IsolationLevel';
|
|
22
22
|
import { IDatabasePosition } from './IDatabasePosition';
|
|
23
23
|
import { IQueryable } from './IQueryable';
|
|
24
|
+
import { TransactionAccessLevel } from './TransactionAccessLevel';
|
|
24
25
|
|
|
25
26
|
const TAG: string = 'ManagedDatabaseConnection';
|
|
26
27
|
|
|
@@ -176,11 +177,11 @@ export class ManagedDatabaseConnection implements IDatabaseConnection {
|
|
|
176
177
|
});
|
|
177
178
|
}
|
|
178
179
|
|
|
179
|
-
public startTransaction(isolationLevel?: IsolationLevel): Promise<void> {
|
|
180
|
+
public startTransaction(isolationLevel?: IsolationLevel, accessLevel?: TransactionAccessLevel): Promise<void> {
|
|
180
181
|
return new Promise<void>((resolve, reject) => {
|
|
181
182
|
this.$getConnection().then((connection: IDatabaseConnection) => {
|
|
182
183
|
if (!this.isManaged()) {
|
|
183
|
-
connection.startTransaction(isolationLevel).then(resolve).catch(reject);
|
|
184
|
+
connection.startTransaction(isolationLevel, accessLevel).then(resolve).catch(reject);
|
|
184
185
|
}
|
|
185
186
|
else {
|
|
186
187
|
resolve();
|
package/src/MySQLConnection.ts
CHANGED
|
@@ -19,7 +19,6 @@ import {DatabaseQueryError} from './DatabaseQueryError';
|
|
|
19
19
|
import {getInstance} from './instance';
|
|
20
20
|
import * as MySQL from 'mysql';
|
|
21
21
|
import {Readable} from 'stream';
|
|
22
|
-
import {Query} from './Query';
|
|
23
22
|
import { StartTransactionQuery } from './private/StartTransactionQuery';
|
|
24
23
|
import { CommitQuery } from './private/CommitQuery';
|
|
25
24
|
import { RollbackQuery } from './private/RollbackQuery';
|
|
@@ -37,6 +36,7 @@ import { GetSlavePositionQuery } from './private/GetSlavePositionQuery';
|
|
|
37
36
|
import { GetMasterPositionQuery } from './private/GetMasterPositionQuery';
|
|
38
37
|
import { IQueryable } from './IQueryable';
|
|
39
38
|
import { queryFormatter } from './mysql/queryFormatter';
|
|
39
|
+
import { TransactionAccessLevel } from './TransactionAccessLevel';
|
|
40
40
|
|
|
41
41
|
const DEFAULT_HIGH_WATERMARK: number = 512; // in number of result objects
|
|
42
42
|
const TAG: string = 'MySQLConnection';
|
|
@@ -56,9 +56,8 @@ const SQL_FORMATTING_OPTIONS: SQLFormatter.FormatOptions = {
|
|
|
56
56
|
functionCase: 'upper'
|
|
57
57
|
};
|
|
58
58
|
|
|
59
|
-
let
|
|
60
|
-
let
|
|
61
|
-
let rollbackQuery: Query = new RollbackQuery();
|
|
59
|
+
let commitQuery: CommitQuery = new CommitQuery();
|
|
60
|
+
let rollbackQuery: RollbackQuery = new RollbackQuery();
|
|
62
61
|
|
|
63
62
|
export class MySQLConnection extends DatabaseConnection<MySQL.PoolConnection> {
|
|
64
63
|
private $transaction: boolean;
|
|
@@ -196,9 +195,9 @@ export class MySQLConnection extends DatabaseConnection<MySQL.PoolConnection> {
|
|
|
196
195
|
return queryObject.stream(streamOptions);
|
|
197
196
|
}
|
|
198
197
|
|
|
199
|
-
public override async startTransaction(isolationLevel?: IsolationLevel): Promise<void> {
|
|
200
|
-
if (this.isReadOnly()) {
|
|
201
|
-
throw new Error('A readonly connection cannot start a transaction.')
|
|
198
|
+
public override async startTransaction(isolationLevel?: IsolationLevel, accessLevel: TransactionAccessLevel = TransactionAccessLevel.RW): Promise<void> {
|
|
199
|
+
if (this.isReadOnly() && accessLevel === TransactionAccessLevel.RW) {
|
|
200
|
+
throw new Error('A readonly connection cannot start a read/write transaction.')
|
|
202
201
|
}
|
|
203
202
|
|
|
204
203
|
if (this.isTransaction()) {
|
|
@@ -211,7 +210,9 @@ export class MySQLConnection extends DatabaseConnection<MySQL.PoolConnection> {
|
|
|
211
210
|
if (isolationLevel) {
|
|
212
211
|
await new SetIsolationLevelQuery(isolationLevel).execute(this);
|
|
213
212
|
}
|
|
214
|
-
await
|
|
213
|
+
await new StartTransactionQuery({
|
|
214
|
+
accessLevel: accessLevel
|
|
215
|
+
}).execute(this);
|
|
215
216
|
}
|
|
216
217
|
catch (ex) {
|
|
217
218
|
this.$transaction = false;
|
package/src/Query.ts
CHANGED
|
@@ -76,6 +76,8 @@ export abstract class Query<TQueryParameters = any, TQueryResultSet = any, TQuer
|
|
|
76
76
|
/**
|
|
77
77
|
* Override to augment/manipulate the returned result set.
|
|
78
78
|
*
|
|
79
|
+
* @deprecated - Streaming queries does not support post processing, creating a confusing API
|
|
80
|
+
*
|
|
79
81
|
* @param connection The connection object used for this query execution. Useful if further queries are required.
|
|
80
82
|
* @param resultset The original result set
|
|
81
83
|
*/
|
package/src/Transaction.ts
CHANGED
|
@@ -22,6 +22,7 @@ import { InternalError } from './InternalError';
|
|
|
22
22
|
import { DeadLockError } from './DeadLockError';
|
|
23
23
|
import { InvalidValueError } from './InvalidValueError';
|
|
24
24
|
import { LockWaitTimeoutError } from './LockWaitTimeoutError';
|
|
25
|
+
import { TransactionAccessLevel } from './TransactionAccessLevel';
|
|
25
26
|
|
|
26
27
|
const TAG: string = 'Transaction';
|
|
27
28
|
|
|
@@ -43,8 +44,9 @@ export class Transaction implements IQueryable<void> {
|
|
|
43
44
|
private $application: Application;
|
|
44
45
|
private $isolationLevel: IsolationLevel;
|
|
45
46
|
private $executor: ITransactionExecutor;
|
|
47
|
+
private $accessLevel: TransactionAccessLevel;
|
|
46
48
|
|
|
47
|
-
public constructor(app: Application, executor: ITransactionExecutor, retryLimit: number = Infinity, isolationLevel: IsolationLevel = IsolationLevel.REPEATABLE_READ) {
|
|
49
|
+
public constructor(app: Application, executor: ITransactionExecutor, retryLimit: number = Infinity, isolationLevel: IsolationLevel = IsolationLevel.REPEATABLE_READ, accessLevel: TransactionAccessLevel = TransactionAccessLevel.RW) {
|
|
48
50
|
this.$application = app;
|
|
49
51
|
this.$executor = executor;
|
|
50
52
|
|
|
@@ -57,6 +59,7 @@ export class Transaction implements IQueryable<void> {
|
|
|
57
59
|
|
|
58
60
|
this.$retryLimit = retryLimit;
|
|
59
61
|
this.$isolationLevel = isolationLevel;
|
|
62
|
+
this.$accessLevel = accessLevel;
|
|
60
63
|
}
|
|
61
64
|
|
|
62
65
|
public async onPreQuery(connection: IDatabaseConnection): Promise<void> {}
|
|
@@ -81,7 +84,7 @@ export class Transaction implements IQueryable<void> {
|
|
|
81
84
|
do {
|
|
82
85
|
attemptCount++;
|
|
83
86
|
this.$application.getLogger().info(TAG, `Starting transaction attempt ${attemptCount} of ${this.$retryLimit === Infinity ? 'Infinity' : this.$retryLimit.toString()}`);
|
|
84
|
-
await connection.startTransaction(this.$isolationLevel);
|
|
87
|
+
await connection.startTransaction(this.$isolationLevel, this.$accessLevel);
|
|
85
88
|
try {
|
|
86
89
|
await this.$executor(connection);
|
|
87
90
|
await connection.commit();
|