@rsdk/db.typeorm 2.5.1
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/.env +2 -0
- package/CHANGELOG.md +155 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/context.d.ts +46 -0
- package/dist/internal/context.js +123 -0
- package/dist/internal/context.js.map +1 -0
- package/dist/internal/exceptions.d.ts +67 -0
- package/dist/internal/exceptions.js +99 -0
- package/dist/internal/exceptions.js.map +1 -0
- package/dist/internal/initializer.d.ts +15 -0
- package/dist/internal/initializer.js +158 -0
- package/dist/internal/initializer.js.map +1 -0
- package/dist/internal/strategy.d.ts +55 -0
- package/dist/internal/strategy.js +109 -0
- package/dist/internal/strategy.js.map +1 -0
- package/dist/internal/test/strategy.test.e2e.d.ts +5 -0
- package/dist/internal/test/strategy.test.e2e.js +779 -0
- package/dist/internal/test/strategy.test.e2e.js.map +1 -0
- package/dist/internal/test/util.d.ts +22 -0
- package/dist/internal/test/util.js +72 -0
- package/dist/internal/test/util.js.map +1 -0
- package/dist/providers/index.d.ts +3 -0
- package/dist/providers/index.js +20 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/typeorm-logger.adapter.d.ts +13 -0
- package/dist/providers/typeorm-logger.adapter.js +61 -0
- package/dist/providers/typeorm-logger.adapter.js.map +1 -0
- package/dist/providers/typeorm.config.d.ts +10 -0
- package/dist/providers/typeorm.config.js +79 -0
- package/dist/providers/typeorm.config.js.map +1 -0
- package/dist/providers/typeorm.healthcheck.d.ts +8 -0
- package/dist/providers/typeorm.healthcheck.js +36 -0
- package/dist/providers/typeorm.healthcheck.js.map +1 -0
- package/dist/typeorm.errors-transformer.d.ts +5 -0
- package/dist/typeorm.errors-transformer.js +32 -0
- package/dist/typeorm.errors-transformer.js.map +1 -0
- package/dist/typeorm.plugin.d.ts +15 -0
- package/dist/typeorm.plugin.js +67 -0
- package/dist/typeorm.plugin.js.map +1 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.js +18 -0
- package/dist/types.js.map +1 -0
- package/jest.config.js +7 -0
- package/package.json +26 -0
- package/src/index.ts +9 -0
- package/src/internal/context.ts +164 -0
- package/src/internal/exceptions.ts +96 -0
- package/src/internal/initializer.ts +213 -0
- package/src/internal/strategy.ts +149 -0
- package/src/internal/test/strategy.test.e2e.ts +1050 -0
- package/src/internal/test/util.ts +51 -0
- package/src/providers/index.ts +3 -0
- package/src/providers/typeorm-logger.adapter.ts +59 -0
- package/src/providers/typeorm.config.ts +61 -0
- package/src/providers/typeorm.healthcheck.ts +20 -0
- package/src/typeorm.errors-transformer.ts +35 -0
- package/src/typeorm.plugin.ts +83 -0
- package/src/types.ts +23 -0
- package/tsconfig.build.json +9 -0
- package/tsconfig.json +9 -0
package/.env
ADDED
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Change Log
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
|
+
|
|
6
|
+
## [2.5.1](https://github.com/R-Vision/rsdk/compare/v2.5.0...v2.5.1) (2023-09-25)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
9
|
+
|
|
10
|
+
# [2.5.0](https://github.com/R-Vision/rsdk/compare/v2.4.4-next.0...v2.5.0) (2023-06-23)
|
|
11
|
+
|
|
12
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
13
|
+
|
|
14
|
+
## [2.4.4-next.0](https://github.com/R-Vision/rsdk/compare/v2.4.3...v2.4.4-next.0) (2023-06-22)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
17
|
+
|
|
18
|
+
## [2.4.3](https://github.com/R-Vision/rsdk/compare/v2.4.3-next.0...v2.4.3) (2023-06-21)
|
|
19
|
+
|
|
20
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
21
|
+
|
|
22
|
+
## [2.4.3-next.0](https://github.com/R-Vision/rsdk/compare/v2.4.2...v2.4.3-next.0) (2023-06-21)
|
|
23
|
+
|
|
24
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
25
|
+
|
|
26
|
+
## [2.4.2](https://github.com/R-Vision/rsdk/compare/v2.4.2-next.0...v2.4.2) (2023-06-16)
|
|
27
|
+
|
|
28
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
29
|
+
|
|
30
|
+
## [2.4.2-next.0](https://github.com/R-Vision/rsdk/compare/v2.4.1...v2.4.2-next.0) (2023-06-15)
|
|
31
|
+
|
|
32
|
+
### Bug Fixes
|
|
33
|
+
|
|
34
|
+
* **eslint-plugin:** normalize tsconfig.lint.json ([25d77cd](https://github.com/R-Vision/rsdk/commit/25d77cd69206fa6e1c79ba6ae27ee89276b0cfa2))
|
|
35
|
+
|
|
36
|
+
## [2.4.1](https://github.com/R-Vision/rsdk/compare/v2.4.1-next.2...v2.4.1) (2023-06-15)
|
|
37
|
+
|
|
38
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
39
|
+
|
|
40
|
+
## [2.4.1-next.2](https://github.com/R-Vision/rsdk/compare/v2.4.1-next.1...v2.4.1-next.2) (2023-06-15)
|
|
41
|
+
|
|
42
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
43
|
+
|
|
44
|
+
## [2.4.1-next.1](https://github.com/R-Vision/rsdk/compare/v2.4.1-next.0...v2.4.1-next.1) (2023-06-15)
|
|
45
|
+
|
|
46
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
47
|
+
|
|
48
|
+
## [2.4.1-next.0](https://github.com/R-Vision/rsdk/compare/v2.4.0...v2.4.1-next.0) (2023-06-15)
|
|
49
|
+
|
|
50
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
51
|
+
|
|
52
|
+
# [2.4.0](https://github.com/R-Vision/rsdk/compare/v2.3.1...v2.4.0) (2023-06-15)
|
|
53
|
+
|
|
54
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
55
|
+
|
|
56
|
+
## [2.3.1](https://github.com/R-Vision/rsdk/compare/v2.3.0...v2.3.1) (2023-06-08)
|
|
57
|
+
|
|
58
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
59
|
+
|
|
60
|
+
# [2.1.0](https://github.com/R-Vision/rsdk/compare/v2.0.0...v2.1.0) (2023-06-06)
|
|
61
|
+
|
|
62
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
63
|
+
|
|
64
|
+
# [2.0.0](https://github.com/R-Vision/rsdk/compare/v1.0.12...v2.0.0) (2023-06-06)
|
|
65
|
+
|
|
66
|
+
### Draft
|
|
67
|
+
|
|
68
|
+
* Pfm 303 static to meta migration ([#45](https://github.com/R-Vision/rsdk/issues/45)) ([d98e303](https://github.com/R-Vision/rsdk/commit/d98e3032f9b10446b478427d841b9209ed68fa2d))
|
|
69
|
+
|
|
70
|
+
### BREAKING CHANGES
|
|
71
|
+
|
|
72
|
+
* GrpcClientModule removed
|
|
73
|
+
new way for declaration with `GrpcServers.define()` and `@InjectGrpcClient`
|
|
74
|
+
|
|
75
|
+
* fix: rework interaction with metadata and generating modules from metadata
|
|
76
|
+
|
|
77
|
+
* refactor: destructring added
|
|
78
|
+
|
|
79
|
+
* docs: added docs for autodoc pre-commit hook
|
|
80
|
+
|
|
81
|
+
* chore: spell fix
|
|
82
|
+
|
|
83
|
+
* chore: some improves declaration
|
|
84
|
+
|
|
85
|
+
* chore: laconic naming for constants
|
|
86
|
+
|
|
87
|
+
* chore: remove useless
|
|
88
|
+
|
|
89
|
+
* chore: move file to suitable place
|
|
90
|
+
|
|
91
|
+
* chore: remove useless imports
|
|
92
|
+
|
|
93
|
+
* chore!: remove boostrap tasks from Makefile
|
|
94
|
+
|
|
95
|
+
* chore: rework test tasks
|
|
96
|
+
|
|
97
|
+
* feat: grpc client plugin useless
|
|
98
|
+
|
|
99
|
+
* chore: verbosed naming
|
|
100
|
+
|
|
101
|
+
* docs: improve verbosity
|
|
102
|
+
|
|
103
|
+
## 1.0.12 (2023-05-23)
|
|
104
|
+
|
|
105
|
+
### Bug Fixes
|
|
106
|
+
|
|
107
|
+
* remove private dependencies from `peerDependencies` section ([0bce6ff](https://github.com/R-Vision/rsdk/commit/0bce6ffb5b699e2ed1dc9aca77cbdbf085267ff7))
|
|
108
|
+
|
|
109
|
+
## 1.0.11 (2023-05-23)
|
|
110
|
+
|
|
111
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
112
|
+
|
|
113
|
+
## 1.0.10 (2023-05-22)
|
|
114
|
+
|
|
115
|
+
### Bug Fixes
|
|
116
|
+
|
|
117
|
+
* add "access: public" to new packages ([04d5983](https://github.com/R-Vision/rsdk/commit/04d5983cfa3e97c5d8219e07208a0499a8c6bc83))
|
|
118
|
+
|
|
119
|
+
## 1.0.9 (2023-05-21)
|
|
120
|
+
|
|
121
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
122
|
+
|
|
123
|
+
## 1.0.8 (2023-05-17)
|
|
124
|
+
|
|
125
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
126
|
+
|
|
127
|
+
## 1.0.7 (2023-05-11)
|
|
128
|
+
|
|
129
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
130
|
+
|
|
131
|
+
## 1.0.6 (2023-05-11)
|
|
132
|
+
|
|
133
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
134
|
+
|
|
135
|
+
## 1.0.5 (2023-05-10)
|
|
136
|
+
|
|
137
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
138
|
+
|
|
139
|
+
## 1.0.4 (2023-05-10)
|
|
140
|
+
|
|
141
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
142
|
+
|
|
143
|
+
## 1.0.3 (2023-05-10)
|
|
144
|
+
|
|
145
|
+
### Bug Fixes
|
|
146
|
+
|
|
147
|
+
* builtin make not private in npm ([50c83b6](https://github.com/R-Vision/rsdk/commit/50c83b6454f9a89f1e99d3b33a497ce2c029d8c6))
|
|
148
|
+
|
|
149
|
+
## 1.0.2 (2023-05-10)
|
|
150
|
+
|
|
151
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
|
152
|
+
|
|
153
|
+
## 1.0.1 (2023-05-07)
|
|
154
|
+
|
|
155
|
+
**Note:** Version bump only for package @rsdk/db.typeorm
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TransactionRunner } from '@rsdk/db';
|
|
2
|
+
export { TypeOrmPlugin } from './typeorm.plugin';
|
|
3
|
+
export { IsolationLevel } from './types';
|
|
4
|
+
export declare const Runner: TransactionRunner<import("./types").IsolationLevel, import("./internal/context").TypeOrmContext>;
|
|
5
|
+
export declare const Transactional: (payload?: {
|
|
6
|
+
isolation?: import("./types").IsolationLevel;
|
|
7
|
+
propagation?: import("@rsdk/db").Propagation;
|
|
8
|
+
} | undefined) => MethodDecorator;
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Transactional = exports.Runner = exports.IsolationLevel = exports.TypeOrmPlugin = void 0;
|
|
4
|
+
const db_1 = require("@rsdk/db");
|
|
5
|
+
const strategy_1 = require("./internal/strategy");
|
|
6
|
+
var typeorm_plugin_1 = require("./typeorm.plugin");
|
|
7
|
+
Object.defineProperty(exports, "TypeOrmPlugin", { enumerable: true, get: function () { return typeorm_plugin_1.TypeOrmPlugin; } });
|
|
8
|
+
var types_1 = require("./types");
|
|
9
|
+
Object.defineProperty(exports, "IsolationLevel", { enumerable: true, get: function () { return types_1.IsolationLevel; } });
|
|
10
|
+
exports.Runner = new db_1.TransactionRunner(new strategy_1.TypeormTransactionalStrategy());
|
|
11
|
+
exports.Transactional = exports.Runner.Transactional.bind(exports.Runner);
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iCAA6C;AAE7C,kDAAmE;AAEnE,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,iCAAyC;AAAhC,uGAAA,cAAc,OAAA;AAEV,QAAA,MAAM,GAAG,IAAI,sBAAiB,CAAC,IAAI,uCAA4B,EAAE,CAAC,CAAC;AACnE,QAAA,aAAa,GAAG,cAAM,CAAC,aAAa,CAAC,IAAI,CAAC,cAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { BaseContext } from '@rsdk/db';
|
|
2
|
+
import type { QueryRunner } from 'typeorm';
|
|
3
|
+
import type { IsolationLevel } from '../types';
|
|
4
|
+
export declare class TypeOrmContext extends BaseContext<IsolationLevel> {
|
|
5
|
+
readonly isolationLevels: readonly IsolationLevel[];
|
|
6
|
+
/**
|
|
7
|
+
* TypeOrm queryRunner который будет использоваться для выполнения запросов и инициализации транзакции
|
|
8
|
+
* @private
|
|
9
|
+
*/
|
|
10
|
+
private _queryRunner?;
|
|
11
|
+
/**
|
|
12
|
+
* Текущая глубина на которую должна быть проинициализирована транзакция
|
|
13
|
+
* @private
|
|
14
|
+
*/
|
|
15
|
+
private transactionInitializedDepth;
|
|
16
|
+
/**
|
|
17
|
+
* Глубина вложенности
|
|
18
|
+
* Не путать с индексом вложенности
|
|
19
|
+
* По сути является необходимым количеством проинициализированных слоев
|
|
20
|
+
* @private
|
|
21
|
+
*/
|
|
22
|
+
private nestDepth;
|
|
23
|
+
/**
|
|
24
|
+
* Завершена ли работа с этим контекстом
|
|
25
|
+
* Необходимо для контроля за тем чтобы не было переиспользований этого контекста
|
|
26
|
+
* @private
|
|
27
|
+
*/
|
|
28
|
+
private _isReleased;
|
|
29
|
+
private constructor();
|
|
30
|
+
private constructor();
|
|
31
|
+
get isReleased(): boolean;
|
|
32
|
+
get queryRunner(): QueryRunner | undefined;
|
|
33
|
+
static create(isolationLevel: IsolationLevel): TypeOrmContext;
|
|
34
|
+
static createSuspended(): TypeOrmContext;
|
|
35
|
+
/**
|
|
36
|
+
* Устанавливаем queryRunner который будет использоваться для инициализации транзакции
|
|
37
|
+
* @param queryRunner
|
|
38
|
+
*/
|
|
39
|
+
attach(queryRunner: QueryRunner): void;
|
|
40
|
+
initialize(): Promise<void>;
|
|
41
|
+
isInitialized(): boolean;
|
|
42
|
+
addNestLayer(): void;
|
|
43
|
+
rollbackTransaction(): Promise<void>;
|
|
44
|
+
commitTransaction(): Promise<void>;
|
|
45
|
+
finalize(mustRelease: boolean): Promise<void>;
|
|
46
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TypeOrmContext = void 0;
|
|
4
|
+
const db_1 = require("@rsdk/db");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
const exceptions_1 = require("./exceptions");
|
|
7
|
+
class TypeOrmContext extends db_1.BaseContext {
|
|
8
|
+
isolationLevels = types_1.isolationLevels;
|
|
9
|
+
/**
|
|
10
|
+
* TypeOrm queryRunner который будет использоваться для выполнения запросов и инициализации транзакции
|
|
11
|
+
* @private
|
|
12
|
+
*/
|
|
13
|
+
_queryRunner;
|
|
14
|
+
/**
|
|
15
|
+
* Текущая глубина на которую должна быть проинициализирована транзакция
|
|
16
|
+
* @private
|
|
17
|
+
*/
|
|
18
|
+
transactionInitializedDepth = 0;
|
|
19
|
+
/**
|
|
20
|
+
* Глубина вложенности
|
|
21
|
+
* Не путать с индексом вложенности
|
|
22
|
+
* По сути является необходимым количеством проинициализированных слоев
|
|
23
|
+
* @private
|
|
24
|
+
*/
|
|
25
|
+
nestDepth = 1;
|
|
26
|
+
/**
|
|
27
|
+
* Завершена ли работа с этим контекстом
|
|
28
|
+
* Необходимо для контроля за тем чтобы не было переиспользований этого контекста
|
|
29
|
+
* @private
|
|
30
|
+
*/
|
|
31
|
+
_isReleased = false;
|
|
32
|
+
constructor(arg) {
|
|
33
|
+
super(arg ?? types_1.DEFAULT_ISOLATION_LEVEL);
|
|
34
|
+
}
|
|
35
|
+
get isReleased() {
|
|
36
|
+
return this._isReleased;
|
|
37
|
+
}
|
|
38
|
+
get queryRunner() {
|
|
39
|
+
return this._queryRunner;
|
|
40
|
+
}
|
|
41
|
+
static create(isolationLevel) {
|
|
42
|
+
return new TypeOrmContext(isolationLevel);
|
|
43
|
+
}
|
|
44
|
+
static createSuspended() {
|
|
45
|
+
return new TypeOrmContext(true);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Устанавливаем queryRunner который будет использоваться для инициализации транзакции
|
|
49
|
+
* @param queryRunner
|
|
50
|
+
*/
|
|
51
|
+
attach(queryRunner) {
|
|
52
|
+
if (this._queryRunner) {
|
|
53
|
+
throw new exceptions_1.AlreadyAttached();
|
|
54
|
+
}
|
|
55
|
+
if (queryRunner.isTransactionActive) {
|
|
56
|
+
throw new exceptions_1.QueryRunnerIsTransactionActive();
|
|
57
|
+
}
|
|
58
|
+
if (queryRunner.isReleased) {
|
|
59
|
+
throw new exceptions_1.QueryRunnerIsReleased();
|
|
60
|
+
}
|
|
61
|
+
this._queryRunner = queryRunner;
|
|
62
|
+
}
|
|
63
|
+
async initialize() {
|
|
64
|
+
if (this.suspended) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (!this._queryRunner) {
|
|
68
|
+
throw new exceptions_1.QueryRunnerMustBeAttached();
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Инициализируем нужное количество `savepoint`
|
|
72
|
+
*/
|
|
73
|
+
for (this.transactionInitializedDepth; this.transactionInitializedDepth < this.nestDepth; this.transactionInitializedDepth++) {
|
|
74
|
+
await this._queryRunner.startTransaction();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
isInitialized() {
|
|
78
|
+
return this.nestDepth === this.transactionInitializedDepth;
|
|
79
|
+
}
|
|
80
|
+
addNestLayer() {
|
|
81
|
+
if (this.suspended) {
|
|
82
|
+
throw new Error('unsupported nesting muted ');
|
|
83
|
+
}
|
|
84
|
+
this.nestDepth += 1;
|
|
85
|
+
}
|
|
86
|
+
async rollbackTransaction() {
|
|
87
|
+
if (!this._queryRunner) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (this.isInitialized()) {
|
|
91
|
+
await this._queryRunner.rollbackTransaction();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async commitTransaction() {
|
|
95
|
+
if (!this._queryRunner) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (this.isInitialized()) {
|
|
99
|
+
await this._queryRunner.commitTransaction();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
async finalize(mustRelease) {
|
|
103
|
+
this.nestDepth -= 1;
|
|
104
|
+
this.transactionInitializedDepth = this.nestDepth;
|
|
105
|
+
const isReleased = this.nestDepth === 0;
|
|
106
|
+
/**
|
|
107
|
+
* В обоих случаях в идеале завершать работу приложения так как часть операция может быть не выполнена, хотя должна была и наоборот
|
|
108
|
+
* И в качестве бонуса получим висящее соединение к СУБД которое нельзя использовать
|
|
109
|
+
*/
|
|
110
|
+
if (!isReleased && mustRelease) {
|
|
111
|
+
throw new exceptions_1.MustReleased();
|
|
112
|
+
}
|
|
113
|
+
if (isReleased && !mustRelease) {
|
|
114
|
+
throw new exceptions_1.UnexpectedRelease();
|
|
115
|
+
}
|
|
116
|
+
if (isReleased) {
|
|
117
|
+
this._isReleased = true;
|
|
118
|
+
await this._queryRunner?.release();
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
exports.TypeOrmContext = TypeOrmContext;
|
|
123
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/internal/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { InternalException } from '@rsdk/core';
|
|
2
|
+
export declare class TypeormdbException extends InternalException {
|
|
3
|
+
}
|
|
4
|
+
export declare class ProxiedMethodIsNotFunction extends TypeormdbException {
|
|
5
|
+
constructor();
|
|
6
|
+
}
|
|
7
|
+
export declare class AlreadyAttached extends TypeormdbException {
|
|
8
|
+
constructor();
|
|
9
|
+
}
|
|
10
|
+
export declare class QueryRunnerMustBeAttached extends TypeormdbException {
|
|
11
|
+
constructor();
|
|
12
|
+
}
|
|
13
|
+
export declare class ContextMustBeProvided extends TypeormdbException {
|
|
14
|
+
constructor();
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Неожиданный релиз (закрытие/возвращение в пул) соединения
|
|
18
|
+
*/
|
|
19
|
+
export declare class UnexpectedRelease extends TypeormdbException {
|
|
20
|
+
constructor();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Ожидалось завершение работы с транзакцией, но не удовлетворены условия завершения (например транзакция не может быть закрыта из-за наличия незакрытых `savepoint`)
|
|
24
|
+
*/
|
|
25
|
+
export declare class MustReleased extends TypeormdbException {
|
|
26
|
+
constructor();
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Попытка использовать контекст когда работа с ним была завершена
|
|
30
|
+
* Например если не дождались завершения промиса использующего соединение
|
|
31
|
+
* @example
|
|
32
|
+
* runInContext(()=> {
|
|
33
|
+
* Promise.resolve().then(() => manager.query('SELECT 1'))
|
|
34
|
+
* })
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* class UserController {
|
|
38
|
+
* constructor(
|
|
39
|
+
* private registerAttemptService: { registerAttemptToDb(): Promise<void> },
|
|
40
|
+
* private userService: { fetchUser(userId: UserId): Promise<User | null> }
|
|
41
|
+
* ) {}
|
|
42
|
+
*
|
|
43
|
+
* // @Get('/user')
|
|
44
|
+
* // @Transactional()
|
|
45
|
+
* async sum(@Query() query: { userId: UserId }): Promise<void> {
|
|
46
|
+
* this.registerAttemptService.registerAttemptToDb();
|
|
47
|
+
* return this.userService.fetchUser(query.userId);
|
|
48
|
+
* }
|
|
49
|
+
* }
|
|
50
|
+
*/
|
|
51
|
+
export declare class ContextIsReleased extends InternalException {
|
|
52
|
+
constructor();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* QueryRunner переданный для аттача уже в состоянии isReleased
|
|
56
|
+
* Такой queryRunner не может быть использован для работы контекста
|
|
57
|
+
*/
|
|
58
|
+
export declare class QueryRunnerIsReleased extends InternalException {
|
|
59
|
+
constructor();
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* QueryRunner переданный для аттача уже внутри транзакции
|
|
63
|
+
* Такой queryRunner не может быть использован для работы контекста
|
|
64
|
+
*/
|
|
65
|
+
export declare class QueryRunnerIsTransactionActive extends InternalException {
|
|
66
|
+
constructor();
|
|
67
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QueryRunnerIsTransactionActive = exports.QueryRunnerIsReleased = exports.ContextIsReleased = exports.MustReleased = exports.UnexpectedRelease = exports.ContextMustBeProvided = exports.QueryRunnerMustBeAttached = exports.AlreadyAttached = exports.ProxiedMethodIsNotFunction = exports.TypeormdbException = void 0;
|
|
4
|
+
const core_1 = require("@rsdk/core");
|
|
5
|
+
class TypeormdbException extends core_1.InternalException {
|
|
6
|
+
}
|
|
7
|
+
exports.TypeormdbException = TypeormdbException;
|
|
8
|
+
class ProxiedMethodIsNotFunction extends TypeormdbException {
|
|
9
|
+
constructor() {
|
|
10
|
+
super('Proxied method non function value');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.ProxiedMethodIsNotFunction = ProxiedMethodIsNotFunction;
|
|
14
|
+
class AlreadyAttached extends TypeormdbException {
|
|
15
|
+
constructor() {
|
|
16
|
+
super('Already attached');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.AlreadyAttached = AlreadyAttached;
|
|
20
|
+
class QueryRunnerMustBeAttached extends TypeormdbException {
|
|
21
|
+
constructor() {
|
|
22
|
+
super('QueryRunner must be attached');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.QueryRunnerMustBeAttached = QueryRunnerMustBeAttached;
|
|
26
|
+
class ContextMustBeProvided extends TypeormdbException {
|
|
27
|
+
constructor() {
|
|
28
|
+
super('Incorrect call, context must be provided');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.ContextMustBeProvided = ContextMustBeProvided;
|
|
32
|
+
/**
|
|
33
|
+
* Неожиданный релиз (закрытие/возвращение в пул) соединения
|
|
34
|
+
*/
|
|
35
|
+
class UnexpectedRelease extends TypeormdbException {
|
|
36
|
+
constructor() {
|
|
37
|
+
super('Unexpected release connection');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.UnexpectedRelease = UnexpectedRelease;
|
|
41
|
+
/**
|
|
42
|
+
* Ожидалось завершение работы с транзакцией, но не удовлетворены условия завершения (например транзакция не может быть закрыта из-за наличия незакрытых `savepoint`)
|
|
43
|
+
*/
|
|
44
|
+
class MustReleased extends TypeormdbException {
|
|
45
|
+
constructor() {
|
|
46
|
+
super('Must released but conditions not satisfied');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.MustReleased = MustReleased;
|
|
50
|
+
/**
|
|
51
|
+
* Попытка использовать контекст когда работа с ним была завершена
|
|
52
|
+
* Например если не дождались завершения промиса использующего соединение
|
|
53
|
+
* @example
|
|
54
|
+
* runInContext(()=> {
|
|
55
|
+
* Promise.resolve().then(() => manager.query('SELECT 1'))
|
|
56
|
+
* })
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* class UserController {
|
|
60
|
+
* constructor(
|
|
61
|
+
* private registerAttemptService: { registerAttemptToDb(): Promise<void> },
|
|
62
|
+
* private userService: { fetchUser(userId: UserId): Promise<User | null> }
|
|
63
|
+
* ) {}
|
|
64
|
+
*
|
|
65
|
+
* // @Get('/user')
|
|
66
|
+
* // @Transactional()
|
|
67
|
+
* async sum(@Query() query: { userId: UserId }): Promise<void> {
|
|
68
|
+
* this.registerAttemptService.registerAttemptToDb();
|
|
69
|
+
* return this.userService.fetchUser(query.userId);
|
|
70
|
+
* }
|
|
71
|
+
* }
|
|
72
|
+
*/
|
|
73
|
+
class ContextIsReleased extends core_1.InternalException {
|
|
74
|
+
constructor() {
|
|
75
|
+
super("Trying to use a context when it's already released (the function started in the context has been ended)");
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.ContextIsReleased = ContextIsReleased;
|
|
79
|
+
/**
|
|
80
|
+
* QueryRunner переданный для аттача уже в состоянии isReleased
|
|
81
|
+
* Такой queryRunner не может быть использован для работы контекста
|
|
82
|
+
*/
|
|
83
|
+
class QueryRunnerIsReleased extends core_1.InternalException {
|
|
84
|
+
constructor() {
|
|
85
|
+
super('queryRunner.isReleased must be false for attach');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.QueryRunnerIsReleased = QueryRunnerIsReleased;
|
|
89
|
+
/**
|
|
90
|
+
* QueryRunner переданный для аттача уже внутри транзакции
|
|
91
|
+
* Такой queryRunner не может быть использован для работы контекста
|
|
92
|
+
*/
|
|
93
|
+
class QueryRunnerIsTransactionActive extends core_1.InternalException {
|
|
94
|
+
constructor() {
|
|
95
|
+
super('queryRunner.isTransactionActive must be false for attach');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.QueryRunnerIsTransactionActive = QueryRunnerIsTransactionActive;
|
|
99
|
+
//# sourceMappingURL=exceptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../src/internal/exceptions.ts"],"names":[],"mappings":";;;AAAA,qCAA+C;AAE/C,MAAa,kBAAmB,SAAQ,wBAAiB;CAAG;AAA5D,gDAA4D;AAE5D,MAAa,0BAA2B,SAAQ,kBAAkB;IAChE;QACE,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC7C,CAAC;CACF;AAJD,gEAIC;AAED,MAAa,eAAgB,SAAQ,kBAAkB;IACrD;QACE,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC5B,CAAC;CACF;AAJD,0CAIC;AAED,MAAa,yBAA0B,SAAQ,kBAAkB;IAC/D;QACE,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACxC,CAAC;CACF;AAJD,8DAIC;AAED,MAAa,qBAAsB,SAAQ,kBAAkB;IAC3D;QACE,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACpD,CAAC;CACF;AAJD,sDAIC;AAED;;GAEG;AACH,MAAa,iBAAkB,SAAQ,kBAAkB;IACvD;QACE,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACzC,CAAC;CACF;AAJD,8CAIC;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,kBAAkB;IAClD;QACE,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACtD,CAAC;CACF;AAJD,oCAIC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAa,iBAAkB,SAAQ,wBAAiB;IACtD;QACE,KAAK,CACH,yGAAyG,CAC1G,CAAC;IACJ,CAAC;CACF;AAND,8CAMC;AAED;;;GAGG;AACH,MAAa,qBAAsB,SAAQ,wBAAiB;IAC1D;QACE,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAC3D,CAAC;CACF;AAJD,sDAIC;AAED;;;GAGG;AACH,MAAa,8BAA+B,SAAQ,wBAAiB;IACnE;QACE,KAAK,CAAC,0DAA0D,CAAC,CAAC;IACpE,CAAC;CACF;AAJD,wEAIC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ContextStorage } from '@rsdk/db';
|
|
2
|
+
import type { TypeOrmContext } from './context';
|
|
3
|
+
export declare class Initializer {
|
|
4
|
+
static readonly storage: ContextStorage<TypeOrmContext>;
|
|
5
|
+
/**
|
|
6
|
+
* Патчинг всех необходимых методов из typeorm
|
|
7
|
+
*/
|
|
8
|
+
static initialize(): void;
|
|
9
|
+
private static wrappedCreateQueryRunner;
|
|
10
|
+
private static getValidQueryRunner;
|
|
11
|
+
private static getWrappedRelease;
|
|
12
|
+
private static getProxiesMethod;
|
|
13
|
+
private static warnOnBusyQueryRunner;
|
|
14
|
+
private static getWarnMessage;
|
|
15
|
+
}
|