typeorm 0.2.42-dev.26581d0 → 0.2.42-dev.3284808

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 (125) hide show
  1. package/README.md +38 -0
  2. package/browser/common/RelationType.d.ts +14 -0
  3. package/browser/common/RelationType.js +3 -0
  4. package/browser/common/RelationType.js.map +1 -0
  5. package/browser/connection/BaseConnectionOptions.d.ts +5 -0
  6. package/browser/connection/BaseConnectionOptions.js.map +1 -1
  7. package/browser/connection/Connection.d.ts +5 -1
  8. package/browser/connection/Connection.js +46 -30
  9. package/browser/connection/Connection.js.map +1 -1
  10. package/browser/connection/ConnectionMetadataBuilder.d.ts +3 -3
  11. package/browser/connection/ConnectionMetadataBuilder.js +54 -22
  12. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  13. package/browser/connection/ConnectionOptionsReader.js +33 -28
  14. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  15. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js +1 -0
  16. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  17. package/browser/driver/postgres/PostgresQueryRunner.js +2 -1
  18. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  19. package/browser/find-options/FindOneOptions.d.ts +6 -0
  20. package/browser/find-options/FindOneOptions.js.map +1 -1
  21. package/browser/find-options/FindOptionsUtils.js +4 -0
  22. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  23. package/browser/find-options/operator/Like.d.ts +1 -1
  24. package/browser/find-options/operator/Like.js +1 -1
  25. package/browser/find-options/operator/Like.js.map +1 -1
  26. package/browser/globals.js +34 -7
  27. package/browser/globals.js.map +1 -1
  28. package/browser/index.d.ts +1 -0
  29. package/browser/index.js +1 -0
  30. package/browser/index.js.map +1 -1
  31. package/browser/query-builder/DeleteQueryBuilder.d.ts +3 -1
  32. package/browser/query-builder/DeleteQueryBuilder.js +3 -1
  33. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  34. package/browser/query-builder/RelationLoader.js +11 -6
  35. package/browser/query-builder/RelationLoader.js.map +1 -1
  36. package/browser/query-builder/SelectQueryBuilder.d.ts +9 -0
  37. package/browser/query-builder/SelectQueryBuilder.js +27 -20
  38. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  39. package/browser/query-builder/UpdateQueryBuilder.d.ts +3 -1
  40. package/browser/query-builder/UpdateQueryBuilder.js +3 -1
  41. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  42. package/browser/query-builder/WhereExpressionBuilder.d.ts +3 -1
  43. package/browser/query-builder/WhereExpressionBuilder.js.map +1 -1
  44. package/browser/query-runner/BaseQueryRunner.d.ts +2 -2
  45. package/browser/query-runner/BaseQueryRunner.js +3 -3
  46. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  47. package/browser/repository/TreeRepository.js +1 -1
  48. package/browser/repository/TreeRepository.js.map +1 -1
  49. package/browser/schema-builder/RdbmsSchemaBuilder.js +1 -1
  50. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  51. package/browser/util/DirectoryExportedClassesLoader.d.ts +1 -1
  52. package/browser/util/DirectoryExportedClassesLoader.js +55 -31
  53. package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
  54. package/browser/util/ImportUtils.d.ts +1 -0
  55. package/browser/util/ImportUtils.js +90 -0
  56. package/browser/util/ImportUtils.js.map +1 -0
  57. package/commands/CommandUtils.d.ts +4 -0
  58. package/commands/CommandUtils.js +10 -0
  59. package/commands/CommandUtils.js.map +1 -1
  60. package/commands/InitCommand.d.ts +9 -7
  61. package/commands/InitCommand.js +72 -43
  62. package/commands/InitCommand.js.map +1 -1
  63. package/commands/MigrationCreateCommand.d.ts +2 -0
  64. package/commands/MigrationCreateCommand.js +7 -1
  65. package/commands/MigrationCreateCommand.js.map +1 -1
  66. package/commands/MigrationGenerateCommand.d.ts +2 -0
  67. package/commands/MigrationGenerateCommand.js +7 -1
  68. package/commands/MigrationGenerateCommand.js.map +1 -1
  69. package/common/RelationType.d.ts +14 -0
  70. package/common/RelationType.js +4 -0
  71. package/common/RelationType.js.map +1 -0
  72. package/connection/BaseConnectionOptions.d.ts +5 -0
  73. package/connection/BaseConnectionOptions.js.map +1 -1
  74. package/connection/Connection.d.ts +5 -1
  75. package/connection/Connection.js +46 -30
  76. package/connection/Connection.js.map +1 -1
  77. package/connection/ConnectionMetadataBuilder.d.ts +3 -3
  78. package/connection/ConnectionMetadataBuilder.js +53 -21
  79. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  80. package/connection/ConnectionOptionsReader.js +32 -27
  81. package/connection/ConnectionOptionsReader.js.map +1 -1
  82. package/connection/options-reader/ConnectionOptionsEnvReader.js +1 -0
  83. package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  84. package/driver/postgres/PostgresQueryRunner.js +2 -1
  85. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  86. package/find-options/FindOneOptions.d.ts +6 -0
  87. package/find-options/FindOneOptions.js.map +1 -1
  88. package/find-options/FindOptionsUtils.js +4 -0
  89. package/find-options/FindOptionsUtils.js.map +1 -1
  90. package/find-options/operator/Like.d.ts +1 -1
  91. package/find-options/operator/Like.js +1 -1
  92. package/find-options/operator/Like.js.map +1 -1
  93. package/globals.js +33 -6
  94. package/globals.js.map +1 -1
  95. package/index.d.ts +1 -0
  96. package/index.js +1 -0
  97. package/index.js.map +1 -1
  98. package/index.mjs +352 -0
  99. package/package.json +1 -1
  100. package/query-builder/DeleteQueryBuilder.d.ts +3 -1
  101. package/query-builder/DeleteQueryBuilder.js +3 -1
  102. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  103. package/query-builder/RelationLoader.js +11 -6
  104. package/query-builder/RelationLoader.js.map +1 -1
  105. package/query-builder/SelectQueryBuilder.d.ts +9 -0
  106. package/query-builder/SelectQueryBuilder.js +27 -20
  107. package/query-builder/SelectQueryBuilder.js.map +1 -1
  108. package/query-builder/UpdateQueryBuilder.d.ts +3 -1
  109. package/query-builder/UpdateQueryBuilder.js +3 -1
  110. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  111. package/query-builder/WhereExpressionBuilder.d.ts +3 -1
  112. package/query-builder/WhereExpressionBuilder.js.map +1 -1
  113. package/query-runner/BaseQueryRunner.d.ts +2 -2
  114. package/query-runner/BaseQueryRunner.js +3 -3
  115. package/query-runner/BaseQueryRunner.js.map +1 -1
  116. package/repository/TreeRepository.js +1 -1
  117. package/repository/TreeRepository.js.map +1 -1
  118. package/schema-builder/RdbmsSchemaBuilder.js +1 -1
  119. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  120. package/util/DirectoryExportedClassesLoader.d.ts +1 -1
  121. package/util/DirectoryExportedClassesLoader.js +54 -31
  122. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  123. package/util/ImportUtils.d.ts +1 -0
  124. package/util/ImportUtils.js +94 -0
  125. package/util/ImportUtils.js.map +1 -0
package/index.mjs ADDED
@@ -0,0 +1,352 @@
1
+ import TypeORM from "./index.js";
2
+ const {
3
+ ConnectionOptionsReader,
4
+ Connection,
5
+ ConnectionManager,
6
+ QueryBuilder,
7
+ SelectQueryBuilder,
8
+ DeleteQueryBuilder,
9
+ InsertQueryBuilder,
10
+ UpdateQueryBuilder,
11
+ RelationQueryBuilder,
12
+ Brackets,
13
+ NotBrackets,
14
+ InsertResult,
15
+ UpdateResult,
16
+ DeleteResult,
17
+ QueryResult,
18
+ MongoEntityManager,
19
+ Migration,
20
+ MigrationExecutor,
21
+ DefaultNamingStrategy,
22
+ EntitySchema,
23
+ getMetadataArgsStorage,
24
+ getConnectionOptions,
25
+ getConnectionManager,
26
+ createConnection,
27
+ createConnections,
28
+ getConnection,
29
+ getManager,
30
+ getMongoManager,
31
+ getSqljsManager,
32
+ getRepository,
33
+ getTreeRepository,
34
+ getCustomRepository,
35
+ getMongoRepository,
36
+ createQueryBuilder,
37
+ useContainer,
38
+ getFromContainer,
39
+ CannotReflectMethodParameterTypeError,
40
+ AlreadyHasActiveConnectionError,
41
+ SubjectWithoutIdentifierError,
42
+ CannotConnectAlreadyConnectedError,
43
+ LockNotSupportedOnGivenDriverError,
44
+ ConnectionIsNotSetError,
45
+ CannotCreateEntityIdMapError,
46
+ MetadataAlreadyExistsError,
47
+ CannotDetermineEntityError,
48
+ UpdateValuesMissingError,
49
+ TreeRepositoryNotSupportedError,
50
+ CustomRepositoryNotFoundError,
51
+ TransactionNotStartedError,
52
+ TransactionAlreadyStartedError,
53
+ EntityNotFoundError,
54
+ EntityMetadataNotFoundError,
55
+ MustBeEntityError,
56
+ OptimisticLockVersionMismatchError,
57
+ LimitOnUpdateNotSupportedError,
58
+ PrimaryColumnCannotBeNullableError,
59
+ CustomRepositoryCannotInheritRepositoryError,
60
+ QueryRunnerProviderAlreadyReleasedError,
61
+ CannotAttachTreeChildrenEntityError,
62
+ CustomRepositoryDoesNotHaveEntityError,
63
+ MissingDeleteDateColumnError,
64
+ NoConnectionForRepositoryError,
65
+ CircularRelationsError,
66
+ ReturningStatementNotSupportedError,
67
+ UsingJoinTableIsNotAllowedError,
68
+ MissingJoinColumnError,
69
+ MissingPrimaryColumnError,
70
+ EntityColumnNotFound,
71
+ MissingDriverError,
72
+ DriverPackageNotInstalledError,
73
+ CannotGetEntityManagerNotConnectedError,
74
+ ConnectionNotFoundError,
75
+ NoVersionOrUpdateDateColumnError,
76
+ InsertValuesMissingError,
77
+ OptimisticLockCanNotBeUsedError,
78
+ MetadataWithSuchNameAlreadyExistsError,
79
+ DriverOptionNotSetError,
80
+ FindRelationsNotFoundError,
81
+ RepositoryNotFoundError,
82
+ NamingStrategyNotFoundError,
83
+ PessimisticLockTransactionRequiredError,
84
+ RepositoryNotTreeError,
85
+ DataTypeNotSupportedError,
86
+ InitializedRelationError,
87
+ MissingJoinTableError,
88
+ QueryFailedError,
89
+ NoNeedToReleaseEntityManagerError,
90
+ UsingJoinColumnOnlyOnOneSideAllowedError,
91
+ UsingJoinTableOnlyOnOneSideAllowedError,
92
+ SubjectRemovedAndUpdatedError,
93
+ PersistedEntityNotFoundError,
94
+ UsingJoinColumnIsNotAllowedError,
95
+ ColumnTypeUndefinedError,
96
+ QueryRunnerAlreadyReleasedError,
97
+ OffsetWithoutLimitNotSupportedError,
98
+ CannotExecuteNotConnectedError,
99
+ NoConnectionOptionError,
100
+ TypeORMError,
101
+ Column,
102
+ CreateDateColumn,
103
+ DeleteDateColumn,
104
+ PrimaryGeneratedColumn,
105
+ PrimaryColumn,
106
+ UpdateDateColumn,
107
+ VersionColumn,
108
+ ViewColumn,
109
+ ObjectIdColumn,
110
+ AfterInsert,
111
+ AfterLoad,
112
+ AfterRemove,
113
+ AfterUpdate,
114
+ BeforeInsert,
115
+ BeforeRemove,
116
+ BeforeUpdate,
117
+ EventSubscriber,
118
+ JoinColumn,
119
+ JoinTable,
120
+ ManyToMany,
121
+ ManyToOne,
122
+ OneToMany,
123
+ OneToOne,
124
+ RelationCount,
125
+ RelationId,
126
+ Entity,
127
+ ChildEntity,
128
+ TableInheritance,
129
+ ViewEntity,
130
+ Transaction,
131
+ TransactionManager,
132
+ TransactionRepository,
133
+ TreeLevelColumn,
134
+ TreeParent,
135
+ TreeChildren,
136
+ Tree,
137
+ Index,
138
+ Unique,
139
+ Check,
140
+ Exclusion,
141
+ Generated,
142
+ EntityRepository,
143
+ Any,
144
+ Between,
145
+ Equal,
146
+ In,
147
+ IsNull,
148
+ LessThan,
149
+ LessThanOrEqual,
150
+ ILike,
151
+ Like,
152
+ MoreThan,
153
+ MoreThanOrEqual,
154
+ Not,
155
+ Raw,
156
+ FindOperator,
157
+ FindOptionsUtils,
158
+ AdvancedConsoleLogger,
159
+ SimpleConsoleLogger,
160
+ FileLogger,
161
+ EntityMetadata,
162
+ EntityManager,
163
+ AbstractRepository,
164
+ Repository,
165
+ BaseEntity,
166
+ TreeRepository,
167
+ MongoRepository,
168
+ TableCheck,
169
+ TableColumn,
170
+ TableExclusion,
171
+ TableForeignKey,
172
+ TableIndex,
173
+ TableUnique,
174
+ Table,
175
+ MssqlParameter
176
+ } = TypeORM;
177
+ export {
178
+ ConnectionOptionsReader,
179
+ Connection,
180
+ ConnectionManager,
181
+ QueryBuilder,
182
+ SelectQueryBuilder,
183
+ DeleteQueryBuilder,
184
+ InsertQueryBuilder,
185
+ UpdateQueryBuilder,
186
+ RelationQueryBuilder,
187
+ Brackets,
188
+ NotBrackets,
189
+ InsertResult,
190
+ UpdateResult,
191
+ DeleteResult,
192
+ QueryResult,
193
+ MongoEntityManager,
194
+ Migration,
195
+ MigrationExecutor,
196
+ DefaultNamingStrategy,
197
+ EntitySchema,
198
+ getMetadataArgsStorage,
199
+ getConnectionOptions,
200
+ getConnectionManager,
201
+ createConnection,
202
+ createConnections,
203
+ getConnection,
204
+ getManager,
205
+ getMongoManager,
206
+ getSqljsManager,
207
+ getRepository,
208
+ getTreeRepository,
209
+ getCustomRepository,
210
+ getMongoRepository,
211
+ createQueryBuilder,
212
+ useContainer,
213
+ getFromContainer,
214
+ CannotReflectMethodParameterTypeError,
215
+ AlreadyHasActiveConnectionError,
216
+ SubjectWithoutIdentifierError,
217
+ CannotConnectAlreadyConnectedError,
218
+ LockNotSupportedOnGivenDriverError,
219
+ ConnectionIsNotSetError,
220
+ CannotCreateEntityIdMapError,
221
+ MetadataAlreadyExistsError,
222
+ CannotDetermineEntityError,
223
+ UpdateValuesMissingError,
224
+ TreeRepositoryNotSupportedError,
225
+ CustomRepositoryNotFoundError,
226
+ TransactionNotStartedError,
227
+ TransactionAlreadyStartedError,
228
+ EntityNotFoundError,
229
+ EntityMetadataNotFoundError,
230
+ MustBeEntityError,
231
+ OptimisticLockVersionMismatchError,
232
+ LimitOnUpdateNotSupportedError,
233
+ PrimaryColumnCannotBeNullableError,
234
+ CustomRepositoryCannotInheritRepositoryError,
235
+ QueryRunnerProviderAlreadyReleasedError,
236
+ CannotAttachTreeChildrenEntityError,
237
+ CustomRepositoryDoesNotHaveEntityError,
238
+ MissingDeleteDateColumnError,
239
+ NoConnectionForRepositoryError,
240
+ CircularRelationsError,
241
+ ReturningStatementNotSupportedError,
242
+ UsingJoinTableIsNotAllowedError,
243
+ MissingJoinColumnError,
244
+ MissingPrimaryColumnError,
245
+ EntityColumnNotFound,
246
+ MissingDriverError,
247
+ DriverPackageNotInstalledError,
248
+ CannotGetEntityManagerNotConnectedError,
249
+ ConnectionNotFoundError,
250
+ NoVersionOrUpdateDateColumnError,
251
+ InsertValuesMissingError,
252
+ OptimisticLockCanNotBeUsedError,
253
+ MetadataWithSuchNameAlreadyExistsError,
254
+ DriverOptionNotSetError,
255
+ FindRelationsNotFoundError,
256
+ RepositoryNotFoundError,
257
+ NamingStrategyNotFoundError,
258
+ PessimisticLockTransactionRequiredError,
259
+ RepositoryNotTreeError,
260
+ DataTypeNotSupportedError,
261
+ InitializedRelationError,
262
+ MissingJoinTableError,
263
+ QueryFailedError,
264
+ NoNeedToReleaseEntityManagerError,
265
+ UsingJoinColumnOnlyOnOneSideAllowedError,
266
+ UsingJoinTableOnlyOnOneSideAllowedError,
267
+ SubjectRemovedAndUpdatedError,
268
+ PersistedEntityNotFoundError,
269
+ UsingJoinColumnIsNotAllowedError,
270
+ ColumnTypeUndefinedError,
271
+ QueryRunnerAlreadyReleasedError,
272
+ OffsetWithoutLimitNotSupportedError,
273
+ CannotExecuteNotConnectedError,
274
+ NoConnectionOptionError,
275
+ TypeORMError,
276
+ Column,
277
+ CreateDateColumn,
278
+ DeleteDateColumn,
279
+ PrimaryGeneratedColumn,
280
+ PrimaryColumn,
281
+ UpdateDateColumn,
282
+ VersionColumn,
283
+ ViewColumn,
284
+ ObjectIdColumn,
285
+ AfterInsert,
286
+ AfterLoad,
287
+ AfterRemove,
288
+ AfterUpdate,
289
+ BeforeInsert,
290
+ BeforeRemove,
291
+ BeforeUpdate,
292
+ EventSubscriber,
293
+ JoinColumn,
294
+ JoinTable,
295
+ ManyToMany,
296
+ ManyToOne,
297
+ OneToMany,
298
+ OneToOne,
299
+ RelationCount,
300
+ RelationId,
301
+ Entity,
302
+ ChildEntity,
303
+ TableInheritance,
304
+ ViewEntity,
305
+ Transaction,
306
+ TransactionManager,
307
+ TransactionRepository,
308
+ TreeLevelColumn,
309
+ TreeParent,
310
+ TreeChildren,
311
+ Tree,
312
+ Index,
313
+ Unique,
314
+ Check,
315
+ Exclusion,
316
+ Generated,
317
+ EntityRepository,
318
+ Any,
319
+ Between,
320
+ Equal,
321
+ In,
322
+ IsNull,
323
+ LessThan,
324
+ LessThanOrEqual,
325
+ ILike,
326
+ Like,
327
+ MoreThan,
328
+ MoreThanOrEqual,
329
+ Not,
330
+ Raw,
331
+ FindOperator,
332
+ FindOptionsUtils,
333
+ AdvancedConsoleLogger,
334
+ SimpleConsoleLogger,
335
+ FileLogger,
336
+ EntityMetadata,
337
+ EntityManager,
338
+ AbstractRepository,
339
+ Repository,
340
+ BaseEntity,
341
+ TreeRepository,
342
+ MongoRepository,
343
+ TableCheck,
344
+ TableColumn,
345
+ TableExclusion,
346
+ TableForeignKey,
347
+ TableIndex,
348
+ TableUnique,
349
+ Table,
350
+ MssqlParameter
351
+ };
352
+ export default TypeORM;
package/package.json CHANGED
@@ -1 +1 @@
1
- { "name": "typeorm", "private": false, "version": "0.2.42-dev.26581d0", "description": "Data-Mapper ORM for TypeScript, ES7, ES6, ES5. Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, MongoDB databases.", "license": "MIT", "readmeFilename": "README.md", "author": { "name": "Umed Khudoiberdiev", "email": "pleerock.me@gmail.com" }, "main": "./index.js", "browser": { "./browser/driver/aurora-data-api/AuroraDataApiDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/cockroachdb/CockroachDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/postgres/PostgresDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/oracle/OracleDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sap/SapDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mysql/MysqlDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sqlserver/SqlServerDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mongodb/MongoDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mongodb/MongoQueryRunner.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/entity-manager/MongoEntityManager.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/repository/MongoRepository.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sqlite/SqliteDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/better-sqlite3/BetterSqlite3Driver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/util/DirectoryExportedClassesLoader.js": "./browser/platform/BrowserDirectoryExportedClassesLoader.js", "./browser/logger/FileLogger.js": "./browser/platform/BrowserFileLoggerDummy.js", "./browser/connection/ConnectionOptionsReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/connection/options-reader/ConnectionOptionsXmlReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/connection/options-reader/ConnectionOptionsYmlReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/platform/PlatformTools.js": "./browser/platform/BrowserPlatformTools.js", "./index.js": "./browser/index.js" }, "repository": { "type": "git", "url": "https://github.com/typeorm/typeorm.git" }, "bugs": { "url": "https://github.com/typeorm/typeorm/issues" }, "tags": [ "orm", "typescript", "typescript-orm", "mysql", "mysql-orm", "postgresql", "postgresql-orm", "mariadb", "mariadb-orm", "sqlite", "sqlite-orm", "sql-server", "sql-server-orm", "oracle", "oracle-orm" ], "devDependencies": { "@types/app-root-path": "^1.2.4", "@types/chai": "^4.2.15", "@types/chai-as-promised": "^7.1.3", "@types/debug": "^4.1.5", "@types/dotenv": "^8.2.0", "@types/js-yaml": "^4.0.0", "@types/mkdirp": "^1.0.1", "@types/mocha": "^8.2.1", "@types/node": "^14.14.31", "@types/rimraf": "^3.0.0", "@types/sha.js": "^2.4.0", "@types/sinon": "^9.0.10", "@types/source-map-support": "^0.5.3", "@types/xml2js": "^0.4.8", "@types/yargs": "^17.0.2", "@typescript-eslint/eslint-plugin": "^4.15.2", "@typescript-eslint/parser": "^4.15.2", "better-sqlite3": "^7.1.2", "chai": "^4.3.0", "chai-as-promised": "^7.1.1", "class-transformer": "^0.4.0", "conventional-changelog-angular": "^5.0.12", "conventional-changelog-cli": "^2.1.1", "del": "^6.0.0", "eslint": "^7.20.0", "gulp": "^4.0.2", "gulp-eslint": "^6.0.0", "gulp-istanbul": "^1.1.3", "gulp-mocha": "^8.0.0", "gulp-rename": "^2.0.0", "gulp-replace": "^1.0.0", "gulp-shell": "^0.8.0", "gulp-sourcemaps": "^3.0.0", "gulp-typescript": "^6.0.0-alpha.1", "gulpclass": "^0.2.0", "husky": "^5.1.1", "lint-staged": "^10.5.4", "mocha": "^8.3.0", "mongodb": "^3.6.4", "mssql": "^6.3.1", "mysql": "^2.18.1", "mysql2": "^2.2.5", "oracledb": "^5.1.0", "pg": "^8.5.1", "pg-query-stream": "^4.0.0", "redis": "^3.1.1", "remap-istanbul": "^0.13.0", "rimraf": "^3.0.2", "sinon": "^9.2.4", "sinon-chai": "^3.5.0", "source-map-support": "^0.5.19", "sql.js": "^1.4.0", "sqlite3": "^5.0.2", "ts-node": "^9.1.1", "typeorm-aurora-data-api-driver": "^2.0.0", "typescript": "^4.2.2" }, "peerDependencies": { "@sap/hana-client": "*", "better-sqlite3": "*", "hdb-pool": "*", "ioredis": "*", "mongodb": "^3.6.0", "mssql": "*", "mysql2": "*", "oracledb": "*", "pg": "*", "pg-native": "*", "pg-query-stream": "*", "redis": "*", "sql.js": "*", "sqlite3": "*", "typeorm-aurora-data-api-driver": "*" }, "peerDependenciesMeta": { "@sap/hana-client": { "optional": true }, "better-sqlite3": { "optional": true }, "hdb-pool": { "optional": true }, "ioredis": { "optional": true }, "mongodb": { "optional": true }, "mssql": { "optional": true }, "mysql2": { "optional": true }, "oracledb": { "optional": true }, "pg": { "optional": true }, "pg-native": { "optional": true }, "pg-query-stream": { "optional": true }, "redis": { "optional": true }, "sql.js": { "optional": true }, "sqlite3": { "optional": true }, "typeorm-aurora-data-api-driver": { "optional": true } }, "dependencies": { "@sqltools/formatter": "^1.2.2", "app-root-path": "^3.0.0", "buffer": "^6.0.3", "chalk": "^4.1.0", "cli-highlight": "^2.1.11", "debug": "^4.3.1", "dotenv": "^8.2.0", "glob": "^7.1.6", "js-yaml": "^4.0.0", "mkdirp": "^1.0.4", "reflect-metadata": "^0.1.13", "sha.js": "^2.4.11", "tslib": "^2.1.0", "xml2js": "^0.4.23", "yargs": "^17.0.1", "zen-observable-ts": "^1.0.0" }, "lint-staged": { "*.ts": [ "eslint --fix", "git add" ] }, "scripts": { "test": "rimraf ./build && tsc && mocha --file ./build/compiled/test/utils/test-setup.js --bail --recursive --timeout 60000 ./build/compiled/test", "test-fast": "mocha --file ./build/compiled/test/utils/test-setup.js --bail --recursive --timeout 60000 ./build/compiled/test", "compile": "rimraf ./build && tsc", "watch": "./node_modules/.bin/tsc -w", "package": "gulp package", "pack": "gulp pack", "lint": "eslint -c ./.eslintrc.js src/**/*.ts test/**/*.ts sample/**/*.ts", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 2" }, "bin": { "typeorm": "./cli.js" }, "funding": "https://opencollective.com/typeorm", "collective": { "type": "opencollective", "url": "https://opencollective.com/typeorm", "logo": "https://opencollective.com/opencollective/logo.txt" }, "nyc": { "all": true, "cache": false, "exclude": [ "**/*.d.ts" ], "extension": [ ".ts" ], "include": [ "build/compiled/src/**", "src/**" ], "reporter": "json" } }
1
+ { "name": "typeorm", "private": false, "version": "0.2.42-dev.3284808", "description": "Data-Mapper ORM for TypeScript, ES7, ES6, ES5. Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, MongoDB databases.", "license": "MIT", "readmeFilename": "README.md", "author": { "name": "Umed Khudoiberdiev", "email": "pleerock.me@gmail.com" }, "exports": { ".": { "import": "./index.mjs", "require": "./index.js" }, "./*": "./*" }, "main": "./index.js", "module": "./index.mjs", "types": "./index.d.ts", "type": "commonjs", "browser": { "./browser/driver/aurora-data-api/AuroraDataApiDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/cockroachdb/CockroachDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/postgres/PostgresDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/oracle/OracleDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sap/SapDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mysql/MysqlDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sqlserver/SqlServerDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mongodb/MongoDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mongodb/MongoQueryRunner.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/entity-manager/MongoEntityManager.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/repository/MongoRepository.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sqlite/SqliteDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/better-sqlite3/BetterSqlite3Driver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/util/DirectoryExportedClassesLoader.js": "./browser/platform/BrowserDirectoryExportedClassesLoader.js", "./browser/logger/FileLogger.js": "./browser/platform/BrowserFileLoggerDummy.js", "./browser/connection/ConnectionOptionsReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/connection/options-reader/ConnectionOptionsXmlReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/connection/options-reader/ConnectionOptionsYmlReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/platform/PlatformTools.js": "./browser/platform/BrowserPlatformTools.js", "./index.js": "./browser/index.js" }, "repository": { "type": "git", "url": "https://github.com/typeorm/typeorm.git" }, "bugs": { "url": "https://github.com/typeorm/typeorm/issues" }, "tags": [ "orm", "typescript", "typescript-orm", "mysql", "mysql-orm", "postgresql", "postgresql-orm", "mariadb", "mariadb-orm", "sqlite", "sqlite-orm", "sql-server", "sql-server-orm", "oracle", "oracle-orm" ], "devDependencies": { "@types/app-root-path": "^1.2.4", "@types/chai": "^4.2.15", "@types/chai-as-promised": "^7.1.3", "@types/debug": "^4.1.5", "@types/dotenv": "^8.2.0", "@types/js-yaml": "^4.0.0", "@types/mkdirp": "^1.0.1", "@types/mocha": "^8.2.1", "@types/node": "^14.14.31", "@types/rimraf": "^3.0.0", "@types/sha.js": "^2.4.0", "@types/sinon": "^9.0.10", "@types/source-map-support": "^0.5.3", "@types/xml2js": "^0.4.8", "@types/yargs": "^17.0.2", "@typescript-eslint/eslint-plugin": "^4.15.2", "@typescript-eslint/parser": "^4.15.2", "better-sqlite3": "^7.1.2", "chai": "^4.3.0", "chai-as-promised": "^7.1.1", "class-transformer": "^0.4.0", "conventional-changelog-angular": "^5.0.12", "conventional-changelog-cli": "^2.1.1", "del": "^6.0.0", "eslint": "^7.20.0", "gulp": "^4.0.2", "gulp-eslint": "^6.0.0", "gulp-istanbul": "^1.1.3", "gulp-mocha": "^8.0.0", "gulp-rename": "^2.0.0", "gulp-replace": "^1.0.0", "gulp-shell": "^0.8.0", "gulp-sourcemaps": "^3.0.0", "gulp-typescript": "^6.0.0-alpha.1", "gulpclass": "^0.2.0", "husky": "^5.1.1", "lint-staged": "^10.5.4", "mocha": "^8.3.0", "mongodb": "^3.6.4", "mssql": "^6.3.1", "mysql": "^2.18.1", "mysql2": "^2.2.5", "oracledb": "^5.1.0", "pg": "^8.5.1", "pg-query-stream": "^4.0.0", "redis": "^3.1.1", "remap-istanbul": "^0.13.0", "rimraf": "^3.0.2", "sinon": "^9.2.4", "sinon-chai": "^3.5.0", "source-map-support": "^0.5.19", "sql.js": "^1.4.0", "sqlite3": "^5.0.2", "ts-node": "^9.1.1", "typeorm-aurora-data-api-driver": "^2.0.0", "typescript": "^4.2.2" }, "peerDependencies": { "@sap/hana-client": "*", "better-sqlite3": "*", "hdb-pool": "*", "ioredis": "*", "mongodb": "^3.6.0", "mssql": "*", "mysql2": "*", "oracledb": "*", "pg": "*", "pg-native": "*", "pg-query-stream": "*", "redis": "*", "sql.js": "*", "sqlite3": "*", "typeorm-aurora-data-api-driver": "*" }, "peerDependenciesMeta": { "@sap/hana-client": { "optional": true }, "better-sqlite3": { "optional": true }, "hdb-pool": { "optional": true }, "ioredis": { "optional": true }, "mongodb": { "optional": true }, "mssql": { "optional": true }, "mysql2": { "optional": true }, "oracledb": { "optional": true }, "pg": { "optional": true }, "pg-native": { "optional": true }, "pg-query-stream": { "optional": true }, "redis": { "optional": true }, "sql.js": { "optional": true }, "sqlite3": { "optional": true }, "typeorm-aurora-data-api-driver": { "optional": true } }, "dependencies": { "@sqltools/formatter": "^1.2.2", "app-root-path": "^3.0.0", "buffer": "^6.0.3", "chalk": "^4.1.0", "cli-highlight": "^2.1.11", "debug": "^4.3.1", "dotenv": "^8.2.0", "glob": "^7.1.6", "js-yaml": "^4.0.0", "mkdirp": "^1.0.4", "reflect-metadata": "^0.1.13", "sha.js": "^2.4.11", "tslib": "^2.1.0", "xml2js": "^0.4.23", "yargs": "^17.0.1", "zen-observable-ts": "^1.0.0" }, "lint-staged": { "*.ts": [ "eslint --fix", "git add" ] }, "scripts": { "test": "rimraf ./build && tsc && mocha --file ./build/compiled/test/utils/test-setup.js --bail --recursive --timeout 60000 ./build/compiled/test", "test-fast": "mocha --file ./build/compiled/test/utils/test-setup.js --bail --recursive --timeout 60000 ./build/compiled/test", "compile": "rimraf ./build && tsc", "watch": "./node_modules/.bin/tsc -w", "package": "gulp package", "pack": "gulp pack", "lint": "eslint -c ./.eslintrc.js src/**/*.ts test/**/*.ts sample/**/*.ts", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 2" }, "bin": { "typeorm": "./cli.js" }, "funding": "https://opencollective.com/typeorm", "collective": { "type": "opencollective", "url": "https://opencollective.com/typeorm", "logo": "https://opencollective.com/opencollective/logo.txt" }, "nyc": { "all": true, "cache": false, "exclude": [ "**/*.d.ts" ], "extension": [ ".ts" ], "include": [ "build/compiled/src/**", "src/**" ], "reporter": "json" } }
@@ -42,7 +42,9 @@ export declare class DeleteQueryBuilder<Entity> extends QueryBuilder<Entity> imp
42
42
  */
43
43
  orWhere(where: Brackets | string | ((qb: this) => string) | ObjectLiteral | ObjectLiteral[], parameters?: ObjectLiteral): this;
44
44
  /**
45
- * Adds new AND WHERE with conditions for the given ids.
45
+ * Sets WHERE condition in the query builder with a condition for the given ids.
46
+ * If you had previously WHERE expression defined,
47
+ * calling this function will override previously set WHERE conditions.
46
48
  */
47
49
  whereInIds(ids: any | any[]): this;
48
50
  /**
@@ -151,7 +151,9 @@ var DeleteQueryBuilder = /** @class */ (function (_super) {
151
151
  return this;
152
152
  };
153
153
  /**
154
- * Adds new AND WHERE with conditions for the given ids.
154
+ * Sets WHERE condition in the query builder with a condition for the given ids.
155
+ * If you had previously WHERE expression defined,
156
+ * calling this function will override previously set WHERE conditions.
155
157
  */
156
158
  DeleteQueryBuilder.prototype.whereInIds = function (ids) {
157
159
  return this.where(this.getWhereInIdsCondition(ids));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/DeleteQueryBuilder.ts"],"names":[],"mappings":";;;;AAAA,yEAAsE;AACtE,+CAA4C;AAK5C,uEAAoE;AACpE,oEAAiE;AAGjE,sDAAmD;AACnD,oGAAiG;AACjG,8DAA2D;AAE3D;;GAEG;AACH;IAAgD,mDAAoB;IAEhE,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,4BAAY,wBAAsD,EAAE,WAAyB;QAA7F,YACI,kBAAM,wBAA+B,EAAE,WAAW,CAAC,SAEtD;QADG,KAAI,CAAC,aAAa,CAAC,yBAAyB,GAAG,KAAK,CAAC;;IACzD,CAAC;IAED,4EAA4E;IAC5E,6BAA6B;IAC7B,4EAA4E;IAE5E;;OAEG;IACH,qCAAQ,GAAR;QACI,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/B,GAAG,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACrC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACG,oCAAO,GAAb;;;;;;wBACU,KAAA,oBAAoB,IAAI,CAAC,qBAAqB,EAAE,IAAA,EAA/C,GAAG,QAAA,EAAE,UAAU,QAAA,CAAiC;wBACjD,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACzC,sBAAsB,GAAY,KAAK,CAAC;;;;6BAKpC,CAAA,IAAI,CAAC,aAAa,CAAC,cAAc,KAAK,IAAI,IAAI,WAAW,CAAC,mBAAmB,KAAK,KAAK,CAAA,EAAvF,wBAAuF;wBACvF,qBAAM,WAAW,CAAC,gBAAgB,EAAE,EAAA;;wBAApC,SAAoC,CAAC;wBACrC,sBAAsB,GAAG,IAAI,CAAC;;;6BAI9B,CAAA,IAAI,CAAC,aAAa,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,WAAW,CAAA,EAAtF,wBAAsF;wBACtF,qBAAM,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,QAAQ,CAAC,EAAA;;wBAA/F,SAA+F,CAAC;;4BAIhF,qBAAM,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAA;;wBAA5D,WAAW,GAAG,SAA8C;wBAC5D,YAAY,GAAG,2BAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;6BAGhD,CAAA,IAAI,CAAC,aAAa,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,WAAW,CAAA,EAAtF,wBAAsF;wBACtF,qBAAM,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,QAAQ,CAAC,EAAA;;wBAA9F,SAA8F,CAAC;;;6BAI/F,sBAAsB,EAAtB,yBAAsB;wBACtB,qBAAM,WAAW,CAAC,iBAAiB,EAAE,EAAA;;wBAArC,SAAqC,CAAC;;6BAE1C,sBAAO,YAAY,EAAC;;;6BAKhB,sBAAsB,EAAtB,yBAAsB;;;;wBAElB,qBAAM,WAAW,CAAC,mBAAmB,EAAE,EAAA;;wBAAvC,SAAuC,CAAC;;;;;6BAGhD,MAAM,OAAK,CAAC;;6BAGR,CAAA,WAAW,KAAK,IAAI,CAAC,WAAW,CAAA,EAAhC,yBAAgC;wBAChC,qBAAM,WAAW,CAAC,OAAO,EAAE,EAAA;;wBAA3B,SAA2B,CAAC;;;;;;;KAGvC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;;OAGG;IACH,iCAAI,GAAJ,UAAQ,YAA6B,EAAE,SAAkB;QACrD,YAAY,GAAG,YAAY,YAAY,2BAAY,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;QAC/F,IAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAChE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC3C,OAAQ,IAAqC,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACH,kCAAK,GAAL,UAAM,KAA2E,EAAE,UAA0B;QACzG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,oFAAoF;QACpH,IAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,SAAS;YACT,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3E,IAAI,UAAU;YACV,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,qCAAQ,GAAR,UAAS,KAA2E,EAAE,UAA0B;QAC5G,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,UAAU;YAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,oCAAO,GAAP,UAAQ,KAA2E,EAAE,UAA0B;QAC3G,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzF,IAAI,UAAU;YAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,uCAAU,GAAV,UAAW,GAAc;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,0CAAa,GAAb,UAAc,GAAc;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,yCAAY,GAAZ,UAAa,GAAc;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IAkBD;;OAEG;IACH,mCAAM,GAAN,UAAO,MAAuB;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAmBD;;OAEG;IACH,sCAAS,GAAT,UAAU,SAA0B;QAEhC,mDAAmD;QACnD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,uBAAuB,EAAE;YACjD,MAAM,IAAI,yEAAmC,EAAE,CAAC;QAEpD,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,SAAS,CAAC;QACzC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,4EAA4E;IAC5E,oBAAoB;IACpB,4EAA4E;IAE5E;;OAEG;IACO,mDAAsB,GAAhC;QACI,IAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC7D,IAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACrD,IAAM,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAE7D,IAAI,mBAAmB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,YAAY,+BAAc,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,YAAY,iCAAe,CAAC,EAAE;YAChI,OAAO,iBAAe,SAAS,GAAG,eAAe,mBAAc,mBAAqB,CAAC;SAExF;aAAM,IAAI,mBAAmB,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,YAAY,iCAAe,EAAE;YACxF,OAAO,iBAAe,SAAS,gBAAW,mBAAmB,GAAG,eAAiB,CAAC;SAErF;aAAM;YACH,OAAO,iBAAe,SAAS,GAAG,eAAiB,CAAC;SACvD;IACL,CAAC;IAEL,yBAAC;AAAD,CAjOA,AAiOC,CAjO+C,2BAAY,GAiO3D;AAjOY,gDAAkB","file":"DeleteQueryBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {QueryBuilder} from \"./QueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {EntityTarget} from \"../common/EntityTarget\";\nimport {Connection} from \"../connection/Connection\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {WhereExpressionBuilder} from \"./WhereExpressionBuilder\";\nimport {Brackets} from \"./Brackets\";\nimport {DeleteResult} from \"./result/DeleteResult\";\nimport {ReturningStatementNotSupportedError} from \"../error/ReturningStatementNotSupportedError\";\nimport {EntitySchema} from \"../entity-schema/EntitySchema\";\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nexport class DeleteQueryBuilder<Entity> extends QueryBuilder<Entity> implements WhereExpressionBuilder {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connectionOrQueryBuilder: Connection|QueryBuilder<any>, queryRunner?: QueryRunner) {\n super(connectionOrQueryBuilder as any, queryRunner);\n this.expressionMap.aliasNamePrefixingEnabled = false;\n }\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated SQL query without parameters being replaced.\n */\n getQuery(): string {\n let sql = this.createComment();\n sql += this.createDeleteExpression();\n return sql.trim();\n }\n\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n async execute(): Promise<DeleteResult> {\n const [sql, parameters] = this.getQueryAndParameters();\n const queryRunner = this.obtainQueryRunner();\n let transactionStartedByUs: boolean = false;\n\n try {\n\n // start transaction if it was enabled\n if (this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false) {\n await queryRunner.startTransaction();\n transactionStartedByUs = true;\n }\n\n // call before deletion methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n await queryRunner.broadcaster.broadcast(\"BeforeRemove\", this.expressionMap.mainAlias!.metadata);\n }\n\n // execute query\n const queryResult = await queryRunner.query(sql, parameters, true);\n const deleteResult = DeleteResult.from(queryResult);\n\n // call after deletion methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n await queryRunner.broadcaster.broadcast(\"AfterRemove\", this.expressionMap.mainAlias!.metadata);\n }\n\n // close transaction if we started it\n if (transactionStartedByUs)\n await queryRunner.commitTransaction();\n\n return deleteResult;\n\n } catch (error) {\n\n // rollback transaction if we started it\n if (transactionStartedByUs) {\n try {\n await queryRunner.rollbackTransaction();\n } catch (rollbackError) { }\n }\n throw error;\n\n } finally {\n if (queryRunner !== this.queryRunner) { // means we created our own query runner\n await queryRunner.release();\n }\n }\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Specifies FROM which entity's table select/update/delete will be executed.\n * Also sets a main string alias of the selection data.\n */\n from<T>(entityTarget: EntityTarget<T>, aliasName?: string): DeleteQueryBuilder<T> {\n entityTarget = entityTarget instanceof EntitySchema ? entityTarget.options.name : entityTarget;\n const mainAlias = this.createFromAlias(entityTarget, aliasName);\n this.expressionMap.setMainAlias(mainAlias);\n return (this as any) as DeleteQueryBuilder<T>;\n }\n\n /**\n * Sets WHERE condition in the query builder.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n * Additionally you can add parameters used in where expression.\n */\n where(where: Brackets|string|((qb: this) => string)|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n const condition = this.getWhereCondition(where);\n if (condition)\n this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n if (parameters)\n this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n andWhere(where: Brackets|string|((qb: this) => string)|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"and\", condition: this.getWhereCondition(where) });\n if (parameters) this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n orWhere(where: Brackets|string|((qb: this) => string)|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"or\", condition: this.getWhereCondition(where) });\n if (parameters) this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n whereInIds(ids: any|any[]): this {\n return this.where(this.getWhereInIdsCondition(ids));\n }\n\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n andWhereInIds(ids: any|any[]): this {\n return this.andWhere(this.getWhereInIdsCondition(ids));\n }\n\n /**\n * Adds new OR WHERE with conditions for the given ids.\n */\n orWhereInIds(ids: any|any[]): this {\n return this.orWhere(this.getWhereInIdsCondition(ids));\n }\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n output(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n output(output: string): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this {\n return this.returning(output);\n }\n\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n returning(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n returning(returning: string): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this {\n\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported())\n throw new ReturningStatementNotSupportedError();\n\n this.expressionMap.returning = returning;\n return this;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates DELETE express used to perform query.\n */\n protected createDeleteExpression() {\n const tableName = this.getTableName(this.getMainTableName());\n const whereExpression = this.createWhereExpression();\n const returningExpression = this.createReturningExpression();\n\n if (returningExpression && (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof CockroachDriver)) {\n return `DELETE FROM ${tableName}${whereExpression} RETURNING ${returningExpression}`;\n\n } else if (returningExpression !== \"\" && this.connection.driver instanceof SqlServerDriver) {\n return `DELETE FROM ${tableName} OUTPUT ${returningExpression}${whereExpression}`;\n\n } else {\n return `DELETE FROM ${tableName}${whereExpression}`;\n }\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/query-builder/DeleteQueryBuilder.ts"],"names":[],"mappings":"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","file":"DeleteQueryBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {QueryBuilder} from \"./QueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {EntityTarget} from \"../common/EntityTarget\";\nimport {Connection} from \"../connection/Connection\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {WhereExpressionBuilder} from \"./WhereExpressionBuilder\";\nimport {Brackets} from \"./Brackets\";\nimport {DeleteResult} from \"./result/DeleteResult\";\nimport {ReturningStatementNotSupportedError} from \"../error/ReturningStatementNotSupportedError\";\nimport {EntitySchema} from \"../entity-schema/EntitySchema\";\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nexport class DeleteQueryBuilder<Entity> extends QueryBuilder<Entity> implements WhereExpressionBuilder {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connectionOrQueryBuilder: Connection|QueryBuilder<any>, queryRunner?: QueryRunner) {\n super(connectionOrQueryBuilder as any, queryRunner);\n this.expressionMap.aliasNamePrefixingEnabled = false;\n }\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated SQL query without parameters being replaced.\n */\n getQuery(): string {\n let sql = this.createComment();\n sql += this.createDeleteExpression();\n return sql.trim();\n }\n\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n async execute(): Promise<DeleteResult> {\n const [sql, parameters] = this.getQueryAndParameters();\n const queryRunner = this.obtainQueryRunner();\n let transactionStartedByUs: boolean = false;\n\n try {\n\n // start transaction if it was enabled\n if (this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false) {\n await queryRunner.startTransaction();\n transactionStartedByUs = true;\n }\n\n // call before deletion methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n await queryRunner.broadcaster.broadcast(\"BeforeRemove\", this.expressionMap.mainAlias!.metadata);\n }\n\n // execute query\n const queryResult = await queryRunner.query(sql, parameters, true);\n const deleteResult = DeleteResult.from(queryResult);\n\n // call after deletion methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n await queryRunner.broadcaster.broadcast(\"AfterRemove\", this.expressionMap.mainAlias!.metadata);\n }\n\n // close transaction if we started it\n if (transactionStartedByUs)\n await queryRunner.commitTransaction();\n\n return deleteResult;\n\n } catch (error) {\n\n // rollback transaction if we started it\n if (transactionStartedByUs) {\n try {\n await queryRunner.rollbackTransaction();\n } catch (rollbackError) { }\n }\n throw error;\n\n } finally {\n if (queryRunner !== this.queryRunner) { // means we created our own query runner\n await queryRunner.release();\n }\n }\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Specifies FROM which entity's table select/update/delete will be executed.\n * Also sets a main string alias of the selection data.\n */\n from<T>(entityTarget: EntityTarget<T>, aliasName?: string): DeleteQueryBuilder<T> {\n entityTarget = entityTarget instanceof EntitySchema ? entityTarget.options.name : entityTarget;\n const mainAlias = this.createFromAlias(entityTarget, aliasName);\n this.expressionMap.setMainAlias(mainAlias);\n return (this as any) as DeleteQueryBuilder<T>;\n }\n\n /**\n * Sets WHERE condition in the query builder.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n * Additionally you can add parameters used in where expression.\n */\n where(where: Brackets|string|((qb: this) => string)|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n const condition = this.getWhereCondition(where);\n if (condition)\n this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n if (parameters)\n this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n andWhere(where: Brackets|string|((qb: this) => string)|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"and\", condition: this.getWhereCondition(where) });\n if (parameters) this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n orWhere(where: Brackets|string|((qb: this) => string)|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"or\", condition: this.getWhereCondition(where) });\n if (parameters) this.setParameters(parameters);\n return this;\n }\n\n /**\n * Sets WHERE condition in the query builder with a condition for the given ids.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n */\n whereInIds(ids: any|any[]): this {\n return this.where(this.getWhereInIdsCondition(ids));\n }\n\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n andWhereInIds(ids: any|any[]): this {\n return this.andWhere(this.getWhereInIdsCondition(ids));\n }\n\n /**\n * Adds new OR WHERE with conditions for the given ids.\n */\n orWhereInIds(ids: any|any[]): this {\n return this.orWhere(this.getWhereInIdsCondition(ids));\n }\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n output(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n output(output: string): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this {\n return this.returning(output);\n }\n\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n returning(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n returning(returning: string): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this {\n\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported())\n throw new ReturningStatementNotSupportedError();\n\n this.expressionMap.returning = returning;\n return this;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates DELETE express used to perform query.\n */\n protected createDeleteExpression() {\n const tableName = this.getTableName(this.getMainTableName());\n const whereExpression = this.createWhereExpression();\n const returningExpression = this.createReturningExpression();\n\n if (returningExpression && (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof CockroachDriver)) {\n return `DELETE FROM ${tableName}${whereExpression} RETURNING ${returningExpression}`;\n\n } else if (returningExpression !== \"\" && this.connection.driver instanceof SqlServerDriver) {\n return `DELETE FROM ${tableName} OUTPUT ${returningExpression}${whereExpression}`;\n\n } else {\n return `DELETE FROM ${tableName}${whereExpression}`;\n }\n }\n\n}\n"],"sourceRoot":".."}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RelationLoader = void 0;
4
4
  var tslib_1 = require("tslib");
5
+ var __1 = require("..");
5
6
  /**
6
7
  * Wraps entities and creates getters/setters for their relations
7
8
  * to be able to lazily load relations when accessing these relations.
@@ -70,6 +71,7 @@ var RelationLoader = /** @class */ (function () {
70
71
  }).map(function (condition) { return "(" + condition + ")"; }).join(" OR ");
71
72
  qb.where(condition);
72
73
  }
74
+ __1.FindOptionsUtils.joinEagerRelations(qb, qb.alias, qb.expressionMap.mainAlias.metadata);
73
75
  return qb.getMany();
74
76
  // return qb.getOne(); todo: fix all usages
75
77
  };
@@ -102,6 +104,7 @@ var RelationLoader = /** @class */ (function () {
102
104
  }).map(function (condition) { return "(" + condition + ")"; }).join(" OR ");
103
105
  qb.where(condition);
104
106
  }
107
+ __1.FindOptionsUtils.joinEagerRelations(qb, qb.alias, qb.expressionMap.mainAlias.metadata);
105
108
  return qb.getMany();
106
109
  // return relation.isOneToMany ? qb.getMany() : qb.getOne(); todo: fix all usages
107
110
  };
@@ -128,13 +131,14 @@ var RelationLoader = /** @class */ (function () {
128
131
  parameters[joinColumn.propertyName] = entities.map(function (entity) { return joinColumn.referencedColumn.getEntityValue(entity); });
129
132
  return parameters;
130
133
  }, {});
131
- return this.connection
134
+ var qb = this.connection
132
135
  .createQueryBuilder(queryRunner)
133
136
  .select(mainAlias)
134
137
  .from(relation.type, mainAlias)
135
138
  .innerJoin(joinAlias, joinAlias, (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(joinColumnConditions), false), (0, tslib_1.__read)(inverseJoinColumnConditions), false).join(" AND "))
136
- .setParameters(parameters)
137
- .getMany();
139
+ .setParameters(parameters);
140
+ __1.FindOptionsUtils.joinEagerRelations(qb, qb.alias, qb.expressionMap.mainAlias.metadata);
141
+ return qb.getMany();
138
142
  };
139
143
  /**
140
144
  * Loads data for many-to-many not owner relations.
@@ -159,13 +163,14 @@ var RelationLoader = /** @class */ (function () {
159
163
  parameters[joinColumn.propertyName] = entities.map(function (entity) { return joinColumn.referencedColumn.getEntityValue(entity); });
160
164
  return parameters;
161
165
  }, {});
162
- return this.connection
166
+ var qb = this.connection
163
167
  .createQueryBuilder(queryRunner)
164
168
  .select(mainAlias)
165
169
  .from(relation.type, mainAlias)
166
170
  .innerJoin(joinAlias, joinAlias, (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(joinColumnConditions), false), (0, tslib_1.__read)(inverseJoinColumnConditions), false).join(" AND "))
167
- .setParameters(parameters)
168
- .getMany();
171
+ .setParameters(parameters);
172
+ __1.FindOptionsUtils.joinEagerRelations(qb, qb.alias, qb.expressionMap.mainAlias.metadata);
173
+ return qb.getMany();
169
174
  };
170
175
  /**
171
176
  * Wraps given entity and creates getters/setters for its given relation
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/RelationLoader.ts"],"names":[],"mappings":"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","file":"RelationLoader.js","sourcesContent":["import {Connection} from \"../connection/Connection\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {RelationMetadata} from \"../metadata/RelationMetadata\";\n\n/**\n * Wraps entities and creates getters/setters for their relations\n * to be able to lazily load relations when accessing these relations.\n */\nexport class RelationLoader {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private connection: Connection) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Loads relation data for the given entity and its relation.\n */\n load(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any[]> { // todo: check all places where it uses non array\n if (queryRunner && queryRunner.isReleased) queryRunner = undefined; // get new one if already closed\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n return this.loadManyToOneOrOneToOneOwner(relation, entityOrEntities, queryRunner);\n\n } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n return this.loadOneToManyOrOneToOneNotOwner(relation, entityOrEntities, queryRunner);\n\n } else if (relation.isManyToManyOwner) {\n return this.loadManyToManyOwner(relation, entityOrEntities, queryRunner);\n\n } else { // many-to-many non owner\n return this.loadManyToManyNotOwner(relation, entityOrEntities, queryRunner);\n }\n }\n\n /**\n * Loads data for many-to-one and one-to-one owner relations.\n *\n * (ow) post.category<=>category.post\n * loaded: category from post\n * example: SELECT category.id AS category_id, category.name AS category_name FROM category category\n * INNER JOIN post Post ON Post.category=category.id WHERE Post.id=1\n */\n loadManyToOneOrOneToOneOwner(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any> {\n const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const columns = relation.entityMetadata.primaryColumns;\n const joinColumns = relation.isOwning ? relation.joinColumns : relation.inverseRelation!.joinColumns;\n const conditions = joinColumns.map(joinColumn => {\n return `${relation.entityMetadata.name}.${joinColumn.propertyName} = ${relation.propertyName}.${joinColumn.referencedColumn!.propertyName}`;\n }).join(\" AND \");\n\n const joinAliasName = relation.entityMetadata.name;\n const qb = this.connection\n .createQueryBuilder(queryRunner)\n .select(relation.propertyName) // category\n .from(relation.type, relation.propertyName) // Category, category\n .innerJoin(relation.entityMetadata.target as Function, joinAliasName, conditions);\n\n if (columns.length === 1) {\n qb.where(`${joinAliasName}.${columns[0].propertyPath} IN (:...${joinAliasName + \"_\" + columns[0].propertyName})`);\n qb.setParameter(joinAliasName + \"_\" + columns[0].propertyName, entities.map(entity => columns[0].getEntityValue(entity)));\n\n } else {\n const condition = entities.map((entity, entityIndex) => {\n return columns.map((column, columnIndex) => {\n const paramName = joinAliasName + \"_entity_\" + entityIndex + \"_\" + columnIndex;\n qb.setParameter(paramName, column.getEntityValue(entity));\n return joinAliasName + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(condition => \"(\" + condition + \")\").join(\" OR \");\n qb.where(condition);\n }\n\n return qb.getMany();\n // return qb.getOne(); todo: fix all usages\n }\n\n /**\n * Loads data for one-to-many and one-to-one not owner relations.\n *\n * SELECT post\n * FROM post post\n * WHERE post.[joinColumn.name] = entity[joinColumn.referencedColumn]\n */\n loadOneToManyOrOneToOneNotOwner(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any> {\n const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const aliasName = relation.propertyName;\n const columns = relation.inverseRelation!.joinColumns;\n const qb = this.connection\n .createQueryBuilder(queryRunner)\n .select(aliasName)\n .from(relation.inverseRelation!.entityMetadata.target, aliasName);\n\n if (columns.length === 1) {\n qb.where(`${aliasName}.${columns[0].propertyPath} IN (:...${aliasName + \"_\" + columns[0].propertyName})`);\n qb.setParameter(aliasName + \"_\" + columns[0].propertyName, entities.map(entity => columns[0].referencedColumn!.getEntityValue(entity)));\n\n } else {\n const condition = entities.map((entity, entityIndex) => {\n return columns.map((column, columnIndex) => {\n const paramName = aliasName + \"_entity_\" + entityIndex + \"_\" + columnIndex;\n qb.setParameter(paramName, column.referencedColumn!.getEntityValue(entity));\n return aliasName + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(condition => \"(\" + condition + \")\").join(\" OR \");\n qb.where(condition);\n }\n return qb.getMany();\n // return relation.isOneToMany ? qb.getMany() : qb.getOne(); todo: fix all usages\n }\n\n /**\n * Loads data for many-to-many owner relations.\n *\n * SELECT category\n * FROM category category\n * INNER JOIN post_categories post_categories\n * ON post_categories.postId = :postId\n * AND post_categories.categoryId = category.id\n */\n loadManyToManyOwner(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any> {\n const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const mainAlias = relation.propertyName;\n const joinAlias = relation.junctionEntityMetadata!.tableName;\n const joinColumnConditions = relation.joinColumns.map(joinColumn => {\n return `${joinAlias}.${joinColumn.propertyName} IN (:...${joinColumn.propertyName})`;\n });\n const inverseJoinColumnConditions = relation.inverseJoinColumns.map(inverseJoinColumn => {\n return `${joinAlias}.${inverseJoinColumn.propertyName}=${mainAlias}.${inverseJoinColumn.referencedColumn!.propertyName}`;\n });\n const parameters = relation.joinColumns.reduce((parameters, joinColumn) => {\n parameters[joinColumn.propertyName] = entities.map(entity => joinColumn.referencedColumn!.getEntityValue(entity));\n return parameters;\n }, {} as ObjectLiteral);\n\n return this.connection\n .createQueryBuilder(queryRunner)\n .select(mainAlias)\n .from(relation.type, mainAlias)\n .innerJoin(joinAlias, joinAlias, [...joinColumnConditions, ...inverseJoinColumnConditions].join(\" AND \"))\n .setParameters(parameters)\n .getMany();\n }\n\n /**\n * Loads data for many-to-many not owner relations.\n *\n * SELECT post\n * FROM post post\n * INNER JOIN post_categories post_categories\n * ON post_categories.postId = post.id\n * AND post_categories.categoryId = post_categories.categoryId\n */\n loadManyToManyNotOwner(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any> {\n const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const mainAlias = relation.propertyName;\n const joinAlias = relation.junctionEntityMetadata!.tableName;\n const joinColumnConditions = relation.inverseRelation!.joinColumns.map(joinColumn => {\n return `${joinAlias}.${joinColumn.propertyName} = ${mainAlias}.${joinColumn.referencedColumn!.propertyName}`;\n });\n const inverseJoinColumnConditions = relation.inverseRelation!.inverseJoinColumns.map(inverseJoinColumn => {\n return `${joinAlias}.${inverseJoinColumn.propertyName} IN (:...${inverseJoinColumn.propertyName})`;\n });\n const parameters = relation.inverseRelation!.inverseJoinColumns.reduce((parameters, joinColumn) => {\n parameters[joinColumn.propertyName] = entities.map(entity => joinColumn.referencedColumn!.getEntityValue(entity));\n return parameters;\n }, {} as ObjectLiteral);\n\n return this.connection\n .createQueryBuilder(queryRunner)\n .select(mainAlias)\n .from(relation.type, mainAlias)\n .innerJoin(joinAlias, joinAlias, [...joinColumnConditions, ...inverseJoinColumnConditions].join(\" AND \"))\n .setParameters(parameters)\n .getMany();\n }\n\n /**\n * Wraps given entity and creates getters/setters for its given relation\n * to be able to lazily load data when accessing this relation.\n */\n enableLazyLoad(relation: RelationMetadata, entity: ObjectLiteral, queryRunner?: QueryRunner) {\n const relationLoader = this;\n const dataIndex = \"__\" + relation.propertyName + \"__\"; // in what property of the entity loaded data will be stored\n const promiseIndex = \"__promise_\" + relation.propertyName + \"__\"; // in what property of the entity loading promise will be stored\n const resolveIndex = \"__has_\" + relation.propertyName + \"__\"; // indicates if relation data already was loaded or not, we need this flag if loaded data is empty\n\n const setData = (entity: ObjectLiteral, value: any) => {\n entity[dataIndex] = value;\n entity[resolveIndex] = true;\n delete entity[promiseIndex];\n return value;\n };\n const setPromise = (entity: ObjectLiteral, value: Promise<any>) => {\n delete entity[resolveIndex];\n delete entity[dataIndex];\n entity[promiseIndex] = value;\n value.then(\n // ensure different value is not assigned yet\n result => entity[promiseIndex] === value ? setData(entity, result) : result\n );\n return value;\n };\n\n Object.defineProperty(entity, relation.propertyName, {\n get: function() {\n if (this[resolveIndex] === true || this[dataIndex] !== undefined) // if related data already was loaded then simply return it\n return Promise.resolve(this[dataIndex]);\n\n if (this[promiseIndex]) // if related data is loading then return a promise relationLoader loads it\n return this[promiseIndex];\n\n // nothing is loaded yet, load relation data and save it in the model once they are loaded\n const loader = relationLoader.load(relation, this, queryRunner).then(\n result => relation.isOneToOne || relation.isManyToOne ? (result.length === 0 ? null : result[0]) : result\n );\n return setPromise(this, loader);\n },\n set: function(value: any|Promise<any>) {\n if (value instanceof Promise) { // if set data is a promise then wait for its resolve and save in the object\n setPromise(this, value);\n } else { // if its direct data set (non promise, probably not safe-typed)\n setData(this, value);\n }\n },\n configurable: true\n });\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/query-builder/RelationLoader.ts"],"names":[],"mappings":"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","file":"RelationLoader.js","sourcesContent":["import {Connection} from \"../connection/Connection\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {RelationMetadata} from \"../metadata/RelationMetadata\";\nimport { FindOptionsUtils } from \"..\";\n\n/**\n * Wraps entities and creates getters/setters for their relations\n * to be able to lazily load relations when accessing these relations.\n */\nexport class RelationLoader {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private connection: Connection) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Loads relation data for the given entity and its relation.\n */\n load(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any[]> { // todo: check all places where it uses non array\n if (queryRunner && queryRunner.isReleased) queryRunner = undefined; // get new one if already closed\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n return this.loadManyToOneOrOneToOneOwner(relation, entityOrEntities, queryRunner);\n\n } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n return this.loadOneToManyOrOneToOneNotOwner(relation, entityOrEntities, queryRunner);\n\n } else if (relation.isManyToManyOwner) {\n return this.loadManyToManyOwner(relation, entityOrEntities, queryRunner);\n\n } else { // many-to-many non owner\n return this.loadManyToManyNotOwner(relation, entityOrEntities, queryRunner);\n }\n }\n\n /**\n * Loads data for many-to-one and one-to-one owner relations.\n *\n * (ow) post.category<=>category.post\n * loaded: category from post\n * example: SELECT category.id AS category_id, category.name AS category_name FROM category category\n * INNER JOIN post Post ON Post.category=category.id WHERE Post.id=1\n */\n loadManyToOneOrOneToOneOwner(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any> {\n const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const columns = relation.entityMetadata.primaryColumns;\n const joinColumns = relation.isOwning ? relation.joinColumns : relation.inverseRelation!.joinColumns;\n const conditions = joinColumns.map(joinColumn => {\n return `${relation.entityMetadata.name}.${joinColumn.propertyName} = ${relation.propertyName}.${joinColumn.referencedColumn!.propertyName}`;\n }).join(\" AND \");\n\n const joinAliasName = relation.entityMetadata.name;\n const qb = this.connection\n .createQueryBuilder(queryRunner)\n .select(relation.propertyName) // category\n .from(relation.type, relation.propertyName) // Category, category\n .innerJoin(relation.entityMetadata.target as Function, joinAliasName, conditions);\n\n if (columns.length === 1) {\n qb.where(`${joinAliasName}.${columns[0].propertyPath} IN (:...${joinAliasName + \"_\" + columns[0].propertyName})`);\n qb.setParameter(joinAliasName + \"_\" + columns[0].propertyName, entities.map(entity => columns[0].getEntityValue(entity)));\n\n } else {\n const condition = entities.map((entity, entityIndex) => {\n return columns.map((column, columnIndex) => {\n const paramName = joinAliasName + \"_entity_\" + entityIndex + \"_\" + columnIndex;\n qb.setParameter(paramName, column.getEntityValue(entity));\n return joinAliasName + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(condition => \"(\" + condition + \")\").join(\" OR \");\n qb.where(condition);\n }\n\n FindOptionsUtils.joinEagerRelations(qb, qb.alias, qb.expressionMap.mainAlias!.metadata);\n\n return qb.getMany();\n // return qb.getOne(); todo: fix all usages\n }\n\n /**\n * Loads data for one-to-many and one-to-one not owner relations.\n *\n * SELECT post\n * FROM post post\n * WHERE post.[joinColumn.name] = entity[joinColumn.referencedColumn]\n */\n loadOneToManyOrOneToOneNotOwner(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any> {\n const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const aliasName = relation.propertyName;\n const columns = relation.inverseRelation!.joinColumns;\n const qb = this.connection\n .createQueryBuilder(queryRunner)\n .select(aliasName)\n .from(relation.inverseRelation!.entityMetadata.target, aliasName);\n\n if (columns.length === 1) {\n qb.where(`${aliasName}.${columns[0].propertyPath} IN (:...${aliasName + \"_\" + columns[0].propertyName})`);\n qb.setParameter(aliasName + \"_\" + columns[0].propertyName, entities.map(entity => columns[0].referencedColumn!.getEntityValue(entity)));\n\n } else {\n const condition = entities.map((entity, entityIndex) => {\n return columns.map((column, columnIndex) => {\n const paramName = aliasName + \"_entity_\" + entityIndex + \"_\" + columnIndex;\n qb.setParameter(paramName, column.referencedColumn!.getEntityValue(entity));\n return aliasName + \".\" + column.propertyPath + \" = :\" + paramName;\n }).join(\" AND \");\n }).map(condition => \"(\" + condition + \")\").join(\" OR \");\n qb.where(condition);\n }\n\n FindOptionsUtils.joinEagerRelations(qb, qb.alias, qb.expressionMap.mainAlias!.metadata);\n\n return qb.getMany();\n // return relation.isOneToMany ? qb.getMany() : qb.getOne(); todo: fix all usages\n }\n\n /**\n * Loads data for many-to-many owner relations.\n *\n * SELECT category\n * FROM category category\n * INNER JOIN post_categories post_categories\n * ON post_categories.postId = :postId\n * AND post_categories.categoryId = category.id\n */\n loadManyToManyOwner(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any> {\n const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const mainAlias = relation.propertyName;\n const joinAlias = relation.junctionEntityMetadata!.tableName;\n const joinColumnConditions = relation.joinColumns.map(joinColumn => {\n return `${joinAlias}.${joinColumn.propertyName} IN (:...${joinColumn.propertyName})`;\n });\n const inverseJoinColumnConditions = relation.inverseJoinColumns.map(inverseJoinColumn => {\n return `${joinAlias}.${inverseJoinColumn.propertyName}=${mainAlias}.${inverseJoinColumn.referencedColumn!.propertyName}`;\n });\n const parameters = relation.joinColumns.reduce((parameters, joinColumn) => {\n parameters[joinColumn.propertyName] = entities.map(entity => joinColumn.referencedColumn!.getEntityValue(entity));\n return parameters;\n }, {} as ObjectLiteral);\n\n const qb = this.connection\n .createQueryBuilder(queryRunner)\n .select(mainAlias)\n .from(relation.type, mainAlias)\n .innerJoin(joinAlias, joinAlias, [...joinColumnConditions, ...inverseJoinColumnConditions].join(\" AND \"))\n .setParameters(parameters);\n\n FindOptionsUtils.joinEagerRelations(qb, qb.alias, qb.expressionMap.mainAlias!.metadata);\n \n return qb.getMany();\n }\n\n /**\n * Loads data for many-to-many not owner relations.\n *\n * SELECT post\n * FROM post post\n * INNER JOIN post_categories post_categories\n * ON post_categories.postId = post.id\n * AND post_categories.categoryId = post_categories.categoryId\n */\n loadManyToManyNotOwner(relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], queryRunner?: QueryRunner): Promise<any> {\n const entities = Array.isArray(entityOrEntities) ? entityOrEntities : [entityOrEntities];\n const mainAlias = relation.propertyName;\n const joinAlias = relation.junctionEntityMetadata!.tableName;\n const joinColumnConditions = relation.inverseRelation!.joinColumns.map(joinColumn => {\n return `${joinAlias}.${joinColumn.propertyName} = ${mainAlias}.${joinColumn.referencedColumn!.propertyName}`;\n });\n const inverseJoinColumnConditions = relation.inverseRelation!.inverseJoinColumns.map(inverseJoinColumn => {\n return `${joinAlias}.${inverseJoinColumn.propertyName} IN (:...${inverseJoinColumn.propertyName})`;\n });\n const parameters = relation.inverseRelation!.inverseJoinColumns.reduce((parameters, joinColumn) => {\n parameters[joinColumn.propertyName] = entities.map(entity => joinColumn.referencedColumn!.getEntityValue(entity));\n return parameters;\n }, {} as ObjectLiteral);\n\n const qb = this.connection\n .createQueryBuilder(queryRunner)\n .select(mainAlias)\n .from(relation.type, mainAlias)\n .innerJoin(joinAlias, joinAlias, [...joinColumnConditions, ...inverseJoinColumnConditions].join(\" AND \"))\n .setParameters(parameters);\n\n FindOptionsUtils.joinEagerRelations(qb, qb.alias, qb.expressionMap.mainAlias!.metadata);\n\n return qb.getMany();\n }\n\n /**\n * Wraps given entity and creates getters/setters for its given relation\n * to be able to lazily load data when accessing this relation.\n */\n enableLazyLoad(relation: RelationMetadata, entity: ObjectLiteral, queryRunner?: QueryRunner) {\n const relationLoader = this;\n const dataIndex = \"__\" + relation.propertyName + \"__\"; // in what property of the entity loaded data will be stored\n const promiseIndex = \"__promise_\" + relation.propertyName + \"__\"; // in what property of the entity loading promise will be stored\n const resolveIndex = \"__has_\" + relation.propertyName + \"__\"; // indicates if relation data already was loaded or not, we need this flag if loaded data is empty\n\n const setData = (entity: ObjectLiteral, value: any) => {\n entity[dataIndex] = value;\n entity[resolveIndex] = true;\n delete entity[promiseIndex];\n return value;\n };\n const setPromise = (entity: ObjectLiteral, value: Promise<any>) => {\n delete entity[resolveIndex];\n delete entity[dataIndex];\n entity[promiseIndex] = value;\n value.then(\n // ensure different value is not assigned yet\n result => entity[promiseIndex] === value ? setData(entity, result) : result\n );\n return value;\n };\n\n Object.defineProperty(entity, relation.propertyName, {\n get: function() {\n if (this[resolveIndex] === true || this[dataIndex] !== undefined) // if related data already was loaded then simply return it\n return Promise.resolve(this[dataIndex]);\n\n if (this[promiseIndex]) // if related data is loading then return a promise relationLoader loads it\n return this[promiseIndex];\n\n // nothing is loaded yet, load relation data and save it in the model once they are loaded\n const loader = relationLoader.load(relation, this, queryRunner).then(\n result => relation.isOneToOne || relation.isManyToOne ? (result.length === 0 ? null : result[0]) : result\n );\n return setPromise(this, loader);\n },\n set: function(value: any|Promise<any>) {\n if (value instanceof Promise) { // if set data is a promise then wait for its resolve and save in the object\n setPromise(this, value);\n } else { // if its direct data set (non promise, probably not safe-typed)\n setData(this, value);\n }\n },\n configurable: true\n });\n }\n\n}\n"],"sourceRoot":".."}