@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.
Files changed (62) hide show
  1. package/.env +2 -0
  2. package/CHANGELOG.md +155 -0
  3. package/dist/index.d.ts +8 -0
  4. package/dist/index.js +12 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/internal/context.d.ts +46 -0
  7. package/dist/internal/context.js +123 -0
  8. package/dist/internal/context.js.map +1 -0
  9. package/dist/internal/exceptions.d.ts +67 -0
  10. package/dist/internal/exceptions.js +99 -0
  11. package/dist/internal/exceptions.js.map +1 -0
  12. package/dist/internal/initializer.d.ts +15 -0
  13. package/dist/internal/initializer.js +158 -0
  14. package/dist/internal/initializer.js.map +1 -0
  15. package/dist/internal/strategy.d.ts +55 -0
  16. package/dist/internal/strategy.js +109 -0
  17. package/dist/internal/strategy.js.map +1 -0
  18. package/dist/internal/test/strategy.test.e2e.d.ts +5 -0
  19. package/dist/internal/test/strategy.test.e2e.js +779 -0
  20. package/dist/internal/test/strategy.test.e2e.js.map +1 -0
  21. package/dist/internal/test/util.d.ts +22 -0
  22. package/dist/internal/test/util.js +72 -0
  23. package/dist/internal/test/util.js.map +1 -0
  24. package/dist/providers/index.d.ts +3 -0
  25. package/dist/providers/index.js +20 -0
  26. package/dist/providers/index.js.map +1 -0
  27. package/dist/providers/typeorm-logger.adapter.d.ts +13 -0
  28. package/dist/providers/typeorm-logger.adapter.js +61 -0
  29. package/dist/providers/typeorm-logger.adapter.js.map +1 -0
  30. package/dist/providers/typeorm.config.d.ts +10 -0
  31. package/dist/providers/typeorm.config.js +79 -0
  32. package/dist/providers/typeorm.config.js.map +1 -0
  33. package/dist/providers/typeorm.healthcheck.d.ts +8 -0
  34. package/dist/providers/typeorm.healthcheck.js +36 -0
  35. package/dist/providers/typeorm.healthcheck.js.map +1 -0
  36. package/dist/typeorm.errors-transformer.d.ts +5 -0
  37. package/dist/typeorm.errors-transformer.js +32 -0
  38. package/dist/typeorm.errors-transformer.js.map +1 -0
  39. package/dist/typeorm.plugin.d.ts +15 -0
  40. package/dist/typeorm.plugin.js +67 -0
  41. package/dist/typeorm.plugin.js.map +1 -0
  42. package/dist/types.d.ts +14 -0
  43. package/dist/types.js +18 -0
  44. package/dist/types.js.map +1 -0
  45. package/jest.config.js +7 -0
  46. package/package.json +26 -0
  47. package/src/index.ts +9 -0
  48. package/src/internal/context.ts +164 -0
  49. package/src/internal/exceptions.ts +96 -0
  50. package/src/internal/initializer.ts +213 -0
  51. package/src/internal/strategy.ts +149 -0
  52. package/src/internal/test/strategy.test.e2e.ts +1050 -0
  53. package/src/internal/test/util.ts +51 -0
  54. package/src/providers/index.ts +3 -0
  55. package/src/providers/typeorm-logger.adapter.ts +59 -0
  56. package/src/providers/typeorm.config.ts +61 -0
  57. package/src/providers/typeorm.healthcheck.ts +20 -0
  58. package/src/typeorm.errors-transformer.ts +35 -0
  59. package/src/typeorm.plugin.ts +83 -0
  60. package/src/types.ts +23 -0
  61. package/tsconfig.build.json +9 -0
  62. package/tsconfig.json +9 -0
package/.env ADDED
@@ -0,0 +1,2 @@
1
+ DB_TYPE=postgres
2
+ DB_URL=postgres://rvision:rvision@localhost:5432/test
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
@@ -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
+ }