typeorm 0.2.41 → 0.2.42-dev.02400da

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 (338) hide show
  1. package/README.md +38 -0
  2. package/browser/cache/RedisQueryResultCache.js +40 -35
  3. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  4. package/browser/common/RelationType.d.ts +14 -0
  5. package/browser/common/RelationType.js +3 -0
  6. package/browser/common/RelationType.js.map +1 -0
  7. package/browser/connection/BaseConnectionOptions.d.ts +5 -0
  8. package/browser/connection/BaseConnectionOptions.js.map +1 -1
  9. package/browser/connection/Connection.d.ts +7 -3
  10. package/browser/connection/Connection.js +47 -31
  11. package/browser/connection/Connection.js.map +1 -1
  12. package/browser/connection/ConnectionMetadataBuilder.d.ts +3 -3
  13. package/browser/connection/ConnectionMetadataBuilder.js +54 -22
  14. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  15. package/browser/connection/ConnectionOptionsReader.js +33 -28
  16. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  17. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js +1 -0
  18. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  19. package/browser/decorator/Unique.d.ts +5 -4
  20. package/browser/decorator/Unique.js +7 -3
  21. package/browser/decorator/Unique.js.map +1 -1
  22. package/browser/decorator/columns/PrimaryGeneratedColumn.d.ts +2 -1
  23. package/browser/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  24. package/browser/decorator/options/ColumnOptions.d.ts +4 -0
  25. package/browser/decorator/options/ColumnOptions.js.map +1 -1
  26. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +22 -0
  27. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js +3 -0
  28. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -0
  29. package/browser/decorator/options/RelationOptions.d.ts +1 -1
  30. package/browser/decorator/options/RelationOptions.js.map +1 -1
  31. package/browser/decorator/options/UniqueOptions.d.ts +10 -0
  32. package/browser/decorator/options/UniqueOptions.js +3 -0
  33. package/browser/decorator/options/UniqueOptions.js.map +1 -0
  34. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +1 -1
  35. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  36. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +7 -5
  37. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  38. package/browser/driver/cockroachdb/CockroachQueryRunner.js +1 -1
  39. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  40. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +1 -1
  41. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  42. package/browser/driver/mysql/MysqlQueryRunner.js +1 -1
  43. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  44. package/browser/driver/oracle/OracleQueryRunner.js +1 -1
  45. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  46. package/browser/driver/postgres/PostgresQueryRunner.js +52 -19
  47. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  48. package/browser/driver/sap/SapQueryRunner.js +1 -1
  49. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  50. package/browser/driver/sqlite/SqliteDriver.js +11 -10
  51. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  52. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +1 -1
  53. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  54. package/browser/driver/sqlserver/SqlServerQueryRunner.js +1 -1
  55. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  56. package/browser/entity-manager/EntityManager.d.ts +2 -2
  57. package/browser/entity-manager/EntityManager.js +2 -12
  58. package/browser/entity-manager/EntityManager.js.map +1 -1
  59. package/browser/entity-manager/MongoEntityManager.js +2 -1
  60. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  61. package/browser/entity-schema/EntitySchemaOptions.d.ts +6 -0
  62. package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
  63. package/browser/entity-schema/EntitySchemaRelationOptions.d.ts +7 -1
  64. package/browser/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  65. package/browser/entity-schema/EntitySchemaTransformer.js +4 -1
  66. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  67. package/browser/entity-schema/EntitySchemaUniqueOptions.d.ts +5 -0
  68. package/browser/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  69. package/browser/find-options/FindOneOptions.d.ts +6 -0
  70. package/browser/find-options/FindOneOptions.js.map +1 -1
  71. package/browser/find-options/FindOptionsUtils.js +4 -0
  72. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  73. package/browser/find-options/operator/Like.d.ts +1 -1
  74. package/browser/find-options/operator/Like.js +1 -1
  75. package/browser/find-options/operator/Like.js.map +1 -1
  76. package/browser/find-options/operator/Not.d.ts +1 -1
  77. package/browser/find-options/operator/Not.js +1 -1
  78. package/browser/find-options/operator/Not.js.map +1 -1
  79. package/browser/globals.js +34 -7
  80. package/browser/globals.js.map +1 -1
  81. package/browser/index.d.ts +2 -0
  82. package/browser/index.js +2 -0
  83. package/browser/index.js.map +1 -1
  84. package/browser/metadata/ColumnMetadata.d.ts +4 -0
  85. package/browser/metadata/ColumnMetadata.js +2 -0
  86. package/browser/metadata/ColumnMetadata.js.map +1 -1
  87. package/browser/metadata/RelationMetadata.d.ts +1 -1
  88. package/browser/metadata/RelationMetadata.js.map +1 -1
  89. package/browser/metadata/UniqueMetadata.d.ts +5 -0
  90. package/browser/metadata/UniqueMetadata.js +1 -0
  91. package/browser/metadata/UniqueMetadata.js.map +1 -1
  92. package/browser/metadata-args/UniqueMetadataArgs.d.ts +5 -0
  93. package/browser/metadata-args/UniqueMetadataArgs.js.map +1 -1
  94. package/browser/metadata-builder/EntityMetadataValidator.js +1 -0
  95. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  96. package/browser/migration/MigrationExecutor.js +1 -1
  97. package/browser/migration/MigrationExecutor.js.map +1 -1
  98. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +3 -0
  99. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  100. package/browser/query-builder/DeleteQueryBuilder.d.ts +4 -2
  101. package/browser/query-builder/DeleteQueryBuilder.js +4 -2
  102. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  103. package/browser/query-builder/InsertQueryBuilder.d.ts +1 -1
  104. package/browser/query-builder/InsertQueryBuilder.js +1 -1
  105. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  106. package/browser/query-builder/NotBrackets.d.ts +7 -0
  107. package/browser/query-builder/NotBrackets.js +16 -0
  108. package/browser/query-builder/NotBrackets.js.map +1 -0
  109. package/browser/query-builder/QueryBuilder.d.ts +3 -2
  110. package/browser/query-builder/QueryBuilder.js +2 -1
  111. package/browser/query-builder/QueryBuilder.js.map +1 -1
  112. package/browser/query-builder/RelationLoader.js +11 -6
  113. package/browser/query-builder/RelationLoader.js.map +1 -1
  114. package/browser/query-builder/RelationQueryBuilder.d.ts +1 -1
  115. package/browser/query-builder/RelationQueryBuilder.js +1 -1
  116. package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
  117. package/browser/query-builder/SelectQueryBuilder.d.ts +10 -1
  118. package/browser/query-builder/SelectQueryBuilder.js +28 -21
  119. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  120. package/browser/query-builder/SoftDeleteQueryBuilder.d.ts +1 -1
  121. package/browser/query-builder/SoftDeleteQueryBuilder.js +1 -1
  122. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  123. package/browser/query-builder/UpdateQueryBuilder.d.ts +4 -2
  124. package/browser/query-builder/UpdateQueryBuilder.js +11 -6
  125. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  126. package/browser/query-builder/WhereExpressionBuilder.d.ts +3 -1
  127. package/browser/query-builder/WhereExpressionBuilder.js.map +1 -1
  128. package/browser/query-runner/BaseQueryRunner.d.ts +2 -2
  129. package/browser/query-runner/BaseQueryRunner.js +3 -3
  130. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  131. package/browser/repository/AbstractRepository.d.ts +2 -2
  132. package/browser/repository/AbstractRepository.js +2 -2
  133. package/browser/repository/AbstractRepository.js.map +1 -1
  134. package/browser/repository/BaseEntity.d.ts +1 -1
  135. package/browser/repository/BaseEntity.js +1 -1
  136. package/browser/repository/BaseEntity.js.map +1 -1
  137. package/browser/repository/Repository.d.ts +1 -1
  138. package/browser/repository/Repository.js +1 -1
  139. package/browser/repository/Repository.js.map +1 -1
  140. package/browser/repository/TreeRepository.js +1 -1
  141. package/browser/repository/TreeRepository.js.map +1 -1
  142. package/browser/schema-builder/RdbmsSchemaBuilder.js +1 -1
  143. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  144. package/browser/schema-builder/options/TableColumnOptions.d.ts +4 -0
  145. package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
  146. package/browser/schema-builder/options/TableUniqueOptions.d.ts +5 -0
  147. package/browser/schema-builder/options/TableUniqueOptions.js.map +1 -1
  148. package/browser/schema-builder/table/TableColumn.d.ts +4 -0
  149. package/browser/schema-builder/table/TableColumn.js +2 -0
  150. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  151. package/browser/schema-builder/table/TableUnique.d.ts +5 -0
  152. package/browser/schema-builder/table/TableUnique.js +5 -2
  153. package/browser/schema-builder/table/TableUnique.js.map +1 -1
  154. package/browser/schema-builder/util/TableUtils.js +1 -0
  155. package/browser/schema-builder/util/TableUtils.js.map +1 -1
  156. package/browser/util/DirectoryExportedClassesLoader.d.ts +1 -1
  157. package/browser/util/DirectoryExportedClassesLoader.js +55 -31
  158. package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
  159. package/browser/util/ImportUtils.d.ts +1 -0
  160. package/browser/util/ImportUtils.js +90 -0
  161. package/browser/util/ImportUtils.js.map +1 -0
  162. package/cache/RedisQueryResultCache.js +39 -34
  163. package/cache/RedisQueryResultCache.js.map +1 -1
  164. package/commands/CommandUtils.d.ts +4 -0
  165. package/commands/CommandUtils.js +10 -0
  166. package/commands/CommandUtils.js.map +1 -1
  167. package/commands/InitCommand.d.ts +9 -7
  168. package/commands/InitCommand.js +72 -43
  169. package/commands/InitCommand.js.map +1 -1
  170. package/commands/MigrationCreateCommand.d.ts +2 -0
  171. package/commands/MigrationCreateCommand.js +7 -1
  172. package/commands/MigrationCreateCommand.js.map +1 -1
  173. package/commands/MigrationGenerateCommand.d.ts +2 -0
  174. package/commands/MigrationGenerateCommand.js +7 -1
  175. package/commands/MigrationGenerateCommand.js.map +1 -1
  176. package/commands/QueryCommand.d.ts +1 -1
  177. package/commands/QueryCommand.js +1 -1
  178. package/commands/QueryCommand.js.map +1 -1
  179. package/common/RelationType.d.ts +14 -0
  180. package/common/RelationType.js +4 -0
  181. package/common/RelationType.js.map +1 -0
  182. package/connection/BaseConnectionOptions.d.ts +5 -0
  183. package/connection/BaseConnectionOptions.js.map +1 -1
  184. package/connection/Connection.d.ts +7 -3
  185. package/connection/Connection.js +47 -31
  186. package/connection/Connection.js.map +1 -1
  187. package/connection/ConnectionMetadataBuilder.d.ts +3 -3
  188. package/connection/ConnectionMetadataBuilder.js +53 -21
  189. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  190. package/connection/ConnectionOptionsReader.js +32 -27
  191. package/connection/ConnectionOptionsReader.js.map +1 -1
  192. package/connection/options-reader/ConnectionOptionsEnvReader.js +1 -0
  193. package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  194. package/decorator/Unique.d.ts +5 -4
  195. package/decorator/Unique.js +7 -3
  196. package/decorator/Unique.js.map +1 -1
  197. package/decorator/columns/PrimaryGeneratedColumn.d.ts +2 -1
  198. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  199. package/decorator/options/ColumnOptions.d.ts +4 -0
  200. package/decorator/options/ColumnOptions.js.map +1 -1
  201. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +22 -0
  202. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js +4 -0
  203. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -0
  204. package/decorator/options/RelationOptions.d.ts +1 -1
  205. package/decorator/options/RelationOptions.js.map +1 -1
  206. package/decorator/options/UniqueOptions.d.ts +10 -0
  207. package/decorator/options/UniqueOptions.js +4 -0
  208. package/decorator/options/UniqueOptions.js.map +1 -0
  209. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +1 -1
  210. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  211. package/driver/better-sqlite3/BetterSqlite3Driver.js +7 -5
  212. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  213. package/driver/cockroachdb/CockroachQueryRunner.js +1 -1
  214. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  215. package/driver/mongodb/MongoConnectionOptions.d.ts +1 -1
  216. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  217. package/driver/mysql/MysqlQueryRunner.js +1 -1
  218. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  219. package/driver/oracle/OracleQueryRunner.js +1 -1
  220. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  221. package/driver/postgres/PostgresQueryRunner.js +52 -19
  222. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  223. package/driver/sap/SapQueryRunner.js +1 -1
  224. package/driver/sap/SapQueryRunner.js.map +1 -1
  225. package/driver/sqlite/SqliteDriver.js +11 -10
  226. package/driver/sqlite/SqliteDriver.js.map +1 -1
  227. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +1 -1
  228. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  229. package/driver/sqlserver/SqlServerQueryRunner.js +1 -1
  230. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  231. package/entity-manager/EntityManager.d.ts +2 -2
  232. package/entity-manager/EntityManager.js +2 -12
  233. package/entity-manager/EntityManager.js.map +1 -1
  234. package/entity-manager/MongoEntityManager.js +2 -1
  235. package/entity-manager/MongoEntityManager.js.map +1 -1
  236. package/entity-schema/EntitySchemaOptions.d.ts +6 -0
  237. package/entity-schema/EntitySchemaOptions.js.map +1 -1
  238. package/entity-schema/EntitySchemaRelationOptions.d.ts +7 -1
  239. package/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  240. package/entity-schema/EntitySchemaTransformer.js +4 -1
  241. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  242. package/entity-schema/EntitySchemaUniqueOptions.d.ts +5 -0
  243. package/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  244. package/find-options/FindOneOptions.d.ts +6 -0
  245. package/find-options/FindOneOptions.js.map +1 -1
  246. package/find-options/FindOptionsUtils.js +4 -0
  247. package/find-options/FindOptionsUtils.js.map +1 -1
  248. package/find-options/operator/Like.d.ts +1 -1
  249. package/find-options/operator/Like.js +1 -1
  250. package/find-options/operator/Like.js.map +1 -1
  251. package/find-options/operator/Not.d.ts +1 -1
  252. package/find-options/operator/Not.js +1 -1
  253. package/find-options/operator/Not.js.map +1 -1
  254. package/globals.js +33 -6
  255. package/globals.js.map +1 -1
  256. package/index.d.ts +2 -0
  257. package/index.js +4 -1
  258. package/index.js.map +1 -1
  259. package/index.mjs +352 -0
  260. package/metadata/ColumnMetadata.d.ts +4 -0
  261. package/metadata/ColumnMetadata.js +2 -0
  262. package/metadata/ColumnMetadata.js.map +1 -1
  263. package/metadata/RelationMetadata.d.ts +1 -1
  264. package/metadata/RelationMetadata.js.map +1 -1
  265. package/metadata/UniqueMetadata.d.ts +5 -0
  266. package/metadata/UniqueMetadata.js +1 -0
  267. package/metadata/UniqueMetadata.js.map +1 -1
  268. package/metadata-args/UniqueMetadataArgs.d.ts +5 -0
  269. package/metadata-args/UniqueMetadataArgs.js.map +1 -1
  270. package/metadata-builder/EntityMetadataValidator.js +1 -0
  271. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  272. package/migration/MigrationExecutor.js +1 -1
  273. package/migration/MigrationExecutor.js.map +1 -1
  274. package/package.json +1 -239
  275. package/persistence/subject-builder/OneToManySubjectBuilder.js +3 -0
  276. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  277. package/query-builder/DeleteQueryBuilder.d.ts +4 -2
  278. package/query-builder/DeleteQueryBuilder.js +4 -2
  279. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  280. package/query-builder/InsertQueryBuilder.d.ts +1 -1
  281. package/query-builder/InsertQueryBuilder.js +1 -1
  282. package/query-builder/InsertQueryBuilder.js.map +1 -1
  283. package/query-builder/NotBrackets.d.ts +7 -0
  284. package/query-builder/NotBrackets.js +19 -0
  285. package/query-builder/NotBrackets.js.map +1 -0
  286. package/query-builder/QueryBuilder.d.ts +3 -2
  287. package/query-builder/QueryBuilder.js +2 -1
  288. package/query-builder/QueryBuilder.js.map +1 -1
  289. package/query-builder/RelationLoader.js +11 -6
  290. package/query-builder/RelationLoader.js.map +1 -1
  291. package/query-builder/RelationQueryBuilder.d.ts +1 -1
  292. package/query-builder/RelationQueryBuilder.js +1 -1
  293. package/query-builder/RelationQueryBuilder.js.map +1 -1
  294. package/query-builder/SelectQueryBuilder.d.ts +10 -1
  295. package/query-builder/SelectQueryBuilder.js +28 -21
  296. package/query-builder/SelectQueryBuilder.js.map +1 -1
  297. package/query-builder/SoftDeleteQueryBuilder.d.ts +1 -1
  298. package/query-builder/SoftDeleteQueryBuilder.js +1 -1
  299. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  300. package/query-builder/UpdateQueryBuilder.d.ts +4 -2
  301. package/query-builder/UpdateQueryBuilder.js +11 -6
  302. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  303. package/query-builder/WhereExpressionBuilder.d.ts +3 -1
  304. package/query-builder/WhereExpressionBuilder.js.map +1 -1
  305. package/query-runner/BaseQueryRunner.d.ts +2 -2
  306. package/query-runner/BaseQueryRunner.js +3 -3
  307. package/query-runner/BaseQueryRunner.js.map +1 -1
  308. package/repository/AbstractRepository.d.ts +2 -2
  309. package/repository/AbstractRepository.js +2 -2
  310. package/repository/AbstractRepository.js.map +1 -1
  311. package/repository/BaseEntity.d.ts +1 -1
  312. package/repository/BaseEntity.js +1 -1
  313. package/repository/BaseEntity.js.map +1 -1
  314. package/repository/Repository.d.ts +1 -1
  315. package/repository/Repository.js +1 -1
  316. package/repository/Repository.js.map +1 -1
  317. package/repository/TreeRepository.js +1 -1
  318. package/repository/TreeRepository.js.map +1 -1
  319. package/schema-builder/RdbmsSchemaBuilder.js +1 -1
  320. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  321. package/schema-builder/options/TableColumnOptions.d.ts +4 -0
  322. package/schema-builder/options/TableColumnOptions.js.map +1 -1
  323. package/schema-builder/options/TableUniqueOptions.d.ts +5 -0
  324. package/schema-builder/options/TableUniqueOptions.js.map +1 -1
  325. package/schema-builder/table/TableColumn.d.ts +4 -0
  326. package/schema-builder/table/TableColumn.js +2 -0
  327. package/schema-builder/table/TableColumn.js.map +1 -1
  328. package/schema-builder/table/TableUnique.d.ts +5 -0
  329. package/schema-builder/table/TableUnique.js +5 -2
  330. package/schema-builder/table/TableUnique.js.map +1 -1
  331. package/schema-builder/util/TableUtils.js +1 -0
  332. package/schema-builder/util/TableUtils.js.map +1 -1
  333. package/util/DirectoryExportedClassesLoader.d.ts +1 -1
  334. package/util/DirectoryExportedClassesLoader.js +54 -31
  335. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  336. package/util/ImportUtils.d.ts +1 -0
  337. package/util/ImportUtils.js +94 -0
  338. package/util/ImportUtils.js.map +1 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/RelationQueryBuilder.ts"],"names":[],"mappings":"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","file":"RelationQueryBuilder.js","sourcesContent":["import {QueryBuilder} from \"./QueryBuilder\";\nimport {RelationUpdater} from \"./RelationUpdater\";\nimport {RelationRemover} from \"./RelationRemover\";\nimport { TypeORMError } from \"../error\";\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationQueryBuilder<Entity> extends QueryBuilder<Entity> {\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated sql query without parameters being replaced.\n */\n getQuery(): string {\n return \"\";\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Sets entity (target) which relations will be updated.\n */\n of(entity: any|any[]): this {\n this.expressionMap.of = entity;\n return this;\n }\n\n /**\n * Sets entity relation's value.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Works only for many-to-one and one-to-one relations.\n * For many-to-many and one-to-many relations use #add and #remove methods instead.\n */\n async set(value: any): Promise<void> {\n const relation = this.expressionMap.relationMetadata;\n\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new TypeORMError(`Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`);\n\n if (relation.isManyToMany || relation.isOneToMany)\n throw new TypeORMError(`Set operation is only supported for many-to-one and one-to-one relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .add() method instead.`);\n\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!(value instanceof Object) || Object.keys(value).length < relation.joinColumns.length))\n throw new TypeORMError(`Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })`);\n\n const updater = new RelationUpdater(this, this.expressionMap);\n return updater.update(value);\n }\n\n /**\n * Adds (binds) given value to entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n async add(value: any|any[]): Promise<void> {\n if (Array.isArray(value) && value.length === 0)\n return;\n\n const relation = this.expressionMap.relationMetadata;\n\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new TypeORMError(`Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`);\n\n if (relation.isManyToOne || relation.isOneToOne)\n throw new TypeORMError(`Add operation is only supported for many-to-many and one-to-many relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .set() method instead.`);\n\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!(value instanceof Object) || Object.keys(value).length < relation.joinColumns.length))\n throw new TypeORMError(`Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })`);\n\n const updater = new RelationUpdater(this, this.expressionMap);\n return updater.update(value);\n }\n\n /**\n * Removes (unbinds) given value from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n async remove(value: any|any[]): Promise<void> {\n if (Array.isArray(value) && value.length === 0)\n return;\n\n const relation = this.expressionMap.relationMetadata;\n\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new TypeORMError(`Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`);\n\n if (relation.isManyToOne || relation.isOneToOne)\n throw new TypeORMError(`Add operation is only supported for many-to-many and one-to-many relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .set(null) method instead.`);\n\n const remover = new RelationRemover(this, this.expressionMap);\n return remover.remove(value);\n }\n\n /**\n * Adds (binds) and removes (unbinds) given values to/from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n async addAndRemove(added: any|any[], removed: any|any[]): Promise<void> {\n await this.remove(removed);\n await this.add(added);\n }\n\n /**\n * Gets entity's relation id.\n async getId(): Promise<any> {\n\n }*/\n\n /**\n * Gets entity's relation ids.\n async getIds(): Promise<any[]> {\n return [];\n }*/\n\n /**\n * Loads a single entity (relational) from the relation.\n * You can also provide id of relational entity to filter by.\n */\n async loadOne<T = any>(): Promise<T|undefined> {\n return this.loadMany<T>().then(results => results[0]);\n }\n\n /**\n * Loads many entities (relational) from the relation.\n * You can also provide ids of relational entities to filter by.\n */\n async loadMany<T = any>(): Promise<T[]> {\n let of = this.expressionMap.of;\n if (!(of instanceof Object)) {\n const metadata = this.expressionMap.mainAlias!.metadata;\n if (metadata.hasMultiplePrimaryKeys)\n throw new TypeORMError(`Cannot load entity because only one primary key was specified, however entity contains multiple primary keys`);\n\n of = metadata.primaryColumns[0].createValueMap(of);\n }\n\n return this.connection.relationLoader.load(this.expressionMap.relationMetadata, of, this.queryRunner);\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/query-builder/RelationQueryBuilder.ts"],"names":[],"mappings":";;;;AAAA,+CAA4C;AAC5C,qDAAkD;AAClD,qDAAkD;AAClD,kCAAwC;AAExC;;;;GAIG;AACH;IAAkD,qDAAoB;IAAtE;;IA6JA,CAAC;IA3JG,4EAA4E;IAC5E,6BAA6B;IAC7B,4EAA4E;IAE5E;;OAEG;IACH,uCAAQ,GAAR;QACI,OAAO,EAAE,CAAC;IACd,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,iCAAE,GAAF,UAAG,MAAiB;QAChB,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,MAAM,CAAC;QAC/B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACG,kCAAG,GAAT,UAAU,KAAU;;;;gBACV,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;gBAErD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,gEAAgE;oBACxF,MAAM,IAAI,oBAAY,CAAC,4GAA4G,CAAC,CAAC;gBAEzI,IAAI,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,WAAW;oBAC7C,MAAM,IAAI,oBAAY,CAAC,4EAA4E;yBAC/F,qBAAkB,QAAQ,CAAC,YAAY,eAAS,QAAQ,CAAC,YAAY,gBAAa,CAAA;wBAClF,4BAA4B,CAAC,CAAC;gBAEtC,+GAA+G;gBAC/G,IAAI,QAAQ,CAAC,WAAW;oBACpB,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;oBAC/B,CAAC,CAAC,CAAC,KAAK,YAAY,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;oBACvF,MAAM,IAAI,oBAAY,CAAC,+HAA2H,CAAC,CAAC;gBAElJ,OAAO,GAAG,IAAI,iCAAe,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC9D,sBAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC;;;KAChC;IAED;;;;;;OAMG;IACG,kCAAG,GAAT,UAAU,KAAgB;;;;gBACtB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;oBAC1C,sBAAO;gBAEL,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;gBAErD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,gEAAgE;oBACxF,MAAM,IAAI,oBAAY,CAAC,4GAA4G,CAAC,CAAC;gBAEzI,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,UAAU;oBAC3C,MAAM,IAAI,oBAAY,CAAC,8EAA8E;yBACjG,qBAAkB,QAAQ,CAAC,YAAY,eAAS,QAAQ,CAAC,YAAY,gBAAa,CAAA;wBAClF,4BAA4B,CAAC,CAAC;gBAEtC,+GAA+G;gBAC/G,IAAI,QAAQ,CAAC,WAAW;oBACpB,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;oBAC/B,CAAC,CAAC,CAAC,KAAK,YAAY,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;oBACvF,MAAM,IAAI,oBAAY,CAAC,+HAA2H,CAAC,CAAC;gBAElJ,OAAO,GAAG,IAAI,iCAAe,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC9D,sBAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC;;;KAChC;IAED;;;;;;OAMG;IACG,qCAAM,GAAZ,UAAa,KAAgB;;;;gBACzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;oBAC1C,sBAAO;gBAEL,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;gBAErD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,gEAAgE;oBACxF,MAAM,IAAI,oBAAY,CAAC,4GAA4G,CAAC,CAAC;gBAEzI,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,UAAU;oBAC3C,MAAM,IAAI,oBAAY,CAAC,8EAA8E;yBACjG,qBAAkB,QAAQ,CAAC,YAAY,eAAS,QAAQ,CAAC,YAAY,gBAAa,CAAA;wBAClF,gCAAgC,CAAC,CAAC;gBAEpC,OAAO,GAAG,IAAI,iCAAe,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC9D,sBAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC;;;KAChC;IAED;;;;;;OAMG;IACG,2CAAY,GAAlB,UAAmB,KAAgB,EAAE,OAAkB;;;;4BACnD,qBAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAA;;wBAA1B,SAA0B,CAAC;wBAC3B,qBAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAA;;wBAArB,SAAqB,CAAC;;;;;KACzB;IAED;;;;OAIG;IAEH;;;;OAIG;IAEH;;;OAGG;IACG,sCAAO,GAAb;;;gBACI,sBAAO,IAAI,CAAC,QAAQ,EAAK,CAAC,IAAI,CAAC,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,CAAC,CAAC,EAAV,CAAU,CAAC,EAAC;;;KACzD;IAED;;;OAGG;IACG,uCAAQ,GAAd;;;;gBACQ,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,CAAC,EAAE,YAAY,MAAM,CAAC,EAAE;oBACnB,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,QAAQ,CAAC;oBACxD,IAAI,QAAQ,CAAC,sBAAsB;wBAC/B,MAAM,IAAI,oBAAY,CAAC,8GAA8G,CAAC,CAAC;oBAE3I,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;iBACtD;gBAED,sBAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,EAAC;;;KACzG;IAEL,2BAAC;AAAD,CA7JA,AA6JC,CA7JiD,2BAAY,GA6J7D;AA7JY,oDAAoB","file":"RelationQueryBuilder.js","sourcesContent":["import {QueryBuilder} from \"./QueryBuilder\";\nimport {RelationUpdater} from \"./RelationUpdater\";\nimport {RelationRemover} from \"./RelationRemover\";\nimport { TypeORMError } from \"../error\";\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationQueryBuilder<Entity> extends QueryBuilder<Entity> {\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated SQL query without parameters being replaced.\n */\n getQuery(): string {\n return \"\";\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Sets entity (target) which relations will be updated.\n */\n of(entity: any|any[]): this {\n this.expressionMap.of = entity;\n return this;\n }\n\n /**\n * Sets entity relation's value.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Works only for many-to-one and one-to-one relations.\n * For many-to-many and one-to-many relations use #add and #remove methods instead.\n */\n async set(value: any): Promise<void> {\n const relation = this.expressionMap.relationMetadata;\n\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new TypeORMError(`Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`);\n\n if (relation.isManyToMany || relation.isOneToMany)\n throw new TypeORMError(`Set operation is only supported for many-to-one and one-to-one relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .add() method instead.`);\n\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!(value instanceof Object) || Object.keys(value).length < relation.joinColumns.length))\n throw new TypeORMError(`Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })`);\n\n const updater = new RelationUpdater(this, this.expressionMap);\n return updater.update(value);\n }\n\n /**\n * Adds (binds) given value to entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n async add(value: any|any[]): Promise<void> {\n if (Array.isArray(value) && value.length === 0)\n return;\n\n const relation = this.expressionMap.relationMetadata;\n\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new TypeORMError(`Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`);\n\n if (relation.isManyToOne || relation.isOneToOne)\n throw new TypeORMError(`Add operation is only supported for many-to-many and one-to-many relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .set() method instead.`);\n\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!(value instanceof Object) || Object.keys(value).length < relation.joinColumns.length))\n throw new TypeORMError(`Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })`);\n\n const updater = new RelationUpdater(this, this.expressionMap);\n return updater.update(value);\n }\n\n /**\n * Removes (unbinds) given value from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n async remove(value: any|any[]): Promise<void> {\n if (Array.isArray(value) && value.length === 0)\n return;\n\n const relation = this.expressionMap.relationMetadata;\n\n if (!this.expressionMap.of) // todo: move this check before relation query builder creation?\n throw new TypeORMError(`Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`);\n\n if (relation.isManyToOne || relation.isOneToOne)\n throw new TypeORMError(`Add operation is only supported for many-to-many and one-to-many relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .set(null) method instead.`);\n\n const remover = new RelationRemover(this, this.expressionMap);\n return remover.remove(value);\n }\n\n /**\n * Adds (binds) and removes (unbinds) given values to/from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n */\n async addAndRemove(added: any|any[], removed: any|any[]): Promise<void> {\n await this.remove(removed);\n await this.add(added);\n }\n\n /**\n * Gets entity's relation id.\n async getId(): Promise<any> {\n\n }*/\n\n /**\n * Gets entity's relation ids.\n async getIds(): Promise<any[]> {\n return [];\n }*/\n\n /**\n * Loads a single entity (relational) from the relation.\n * You can also provide id of relational entity to filter by.\n */\n async loadOne<T = any>(): Promise<T|undefined> {\n return this.loadMany<T>().then(results => results[0]);\n }\n\n /**\n * Loads many entities (relational) from the relation.\n * You can also provide ids of relational entities to filter by.\n */\n async loadMany<T = any>(): Promise<T[]> {\n let of = this.expressionMap.of;\n if (!(of instanceof Object)) {\n const metadata = this.expressionMap.mainAlias!.metadata;\n if (metadata.hasMultiplePrimaryKeys)\n throw new TypeORMError(`Cannot load entity because only one primary key was specified, however entity contains multiple primary keys`);\n\n of = metadata.primaryColumns[0].createValueMap(of);\n }\n\n return this.connection.relationLoader.load(this.expressionMap.relationMetadata, of, this.queryRunner);\n }\n\n}\n"],"sourceRoot":".."}
@@ -16,7 +16,7 @@ import { SelectQueryBuilderOption } from "./SelectQueryBuilderOption";
16
16
  */
17
17
  export declare class SelectQueryBuilder<Entity> extends QueryBuilder<Entity> implements WhereExpressionBuilder {
18
18
  /**
19
- * Gets generated sql query without parameters being replaced.
19
+ * Gets generated SQL query without parameters being replaced.
20
20
  */
21
21
  getQuery(): string;
22
22
  /**
@@ -584,6 +584,15 @@ export declare class SelectQueryBuilder<Entity> extends QueryBuilder<Entity> imp
584
584
  * Creates "LIMIT" and "OFFSET" parts of SQL query.
585
585
  */
586
586
  protected createLimitOffsetExpression(): string;
587
+ /**
588
+ * Creates "LOCK" part of SELECT Query after table Clause
589
+ * ex.
590
+ * SELECT 1
591
+ * FROM USER U WITH (NOLOCK)
592
+ * JOIN ORDER O WITH (NOLOCK)
593
+ * ON U.ID=O.OrderID
594
+ */
595
+ private createTableLockExpression;
587
596
  /**
588
597
  * Creates "LOCK" part of SQL query.
589
598
  */
@@ -41,7 +41,7 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
41
41
  // Public Implemented Methods
42
42
  // -------------------------------------------------------------------------
43
43
  /**
44
- * Gets generated sql query without parameters being replaced.
44
+ * Gets generated SQL query without parameters being replaced.
45
45
  */
46
46
  SelectQueryBuilder.prototype.getQuery = function () {
47
47
  var sql = this.createComment();
@@ -1029,20 +1029,6 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1029
1029
  // if still selection is empty, then simply set it to all (*)
1030
1030
  if (allSelects.length === 0)
1031
1031
  allSelects.push({ selection: "*" });
1032
- var lock = "";
1033
- if (this.connection.driver instanceof SqlServerDriver_1.SqlServerDriver) {
1034
- switch (this.expressionMap.lockMode) {
1035
- case "pessimistic_read":
1036
- lock = " WITH (HOLDLOCK, ROWLOCK)";
1037
- break;
1038
- case "pessimistic_write":
1039
- lock = " WITH (UPDLOCK, ROWLOCK)";
1040
- break;
1041
- case "dirty_read":
1042
- lock = " WITH (NOLOCK)";
1043
- break;
1044
- }
1045
- }
1046
1032
  // Use certain index
1047
1033
  var useIndex = "";
1048
1034
  if (this.expressionMap.useIndex) {
@@ -1060,7 +1046,7 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1060
1046
  });
1061
1047
  var select = this.createSelectDistinctExpression();
1062
1048
  var selection = allSelects.map(function (select) { return select.selection + (select.aliasName ? " AS " + _this.escape(select.aliasName) : ""); }).join(", ");
1063
- return select + selection + " FROM " + froms.join(", ") + lock + useIndex;
1049
+ return select + selection + " FROM " + froms.join(", ") + this.createTableLockExpression() + useIndex;
1064
1050
  };
1065
1051
  /**
1066
1052
  * Creates select | select distinct part of SQL query.
@@ -1106,7 +1092,7 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1106
1092
  // table to join, without junction table involved. This means we simply join direct table.
1107
1093
  if (!parentAlias || !relation) {
1108
1094
  var destinationJoin = joinAttr.alias.subQuery ? joinAttr.alias.subQuery : _this.getTableName(destinationTableName);
1109
- return " " + joinAttr.direction + " JOIN " + destinationJoin + " " + _this.escape(destinationTableAlias) +
1095
+ return " " + joinAttr.direction + " JOIN " + destinationJoin + " " + _this.escape(destinationTableAlias) + _this.createTableLockExpression() +
1110
1096
  (joinAttr.condition ? " ON " + _this.replacePropertyNames(joinAttr.condition) : "");
1111
1097
  }
1112
1098
  // if real entity relation is involved
@@ -1116,7 +1102,7 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1116
1102
  return destinationTableAlias + "." + joinColumn.referencedColumn.propertyPath + "=" +
1117
1103
  parentAlias + "." + relation.propertyPath + "." + joinColumn.referencedColumn.propertyPath;
1118
1104
  }).join(" AND ");
1119
- return " " + joinAttr.direction + " JOIN " + _this.getTableName(destinationTableName) + " " + _this.escape(destinationTableAlias) + " ON " + _this.replacePropertyNames(condition + appendedCondition);
1105
+ return " " + joinAttr.direction + " JOIN " + _this.getTableName(destinationTableName) + " " + _this.escape(destinationTableAlias) + _this.createTableLockExpression() + " ON " + _this.replacePropertyNames(condition + appendedCondition);
1120
1106
  }
1121
1107
  else if (relation.isOneToMany || relation.isOneToOneNotOwner) {
1122
1108
  // JOIN `post` `post` ON `post`.`categoryId` = `category`.`id`
@@ -1127,7 +1113,7 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1127
1113
  return destinationTableAlias + "." + relation.inverseRelation.propertyPath + "." + joinColumn.referencedColumn.propertyPath + "=" +
1128
1114
  parentAlias + "." + joinColumn.referencedColumn.propertyPath;
1129
1115
  }).join(" AND ");
1130
- return " " + joinAttr.direction + " JOIN " + _this.getTableName(destinationTableName) + " " + _this.escape(destinationTableAlias) + " ON " + _this.replacePropertyNames(condition + appendedCondition);
1116
+ return " " + joinAttr.direction + " JOIN " + _this.getTableName(destinationTableName) + " " + _this.escape(destinationTableAlias) + _this.createTableLockExpression() + " ON " + _this.replacePropertyNames(condition + appendedCondition);
1131
1117
  }
1132
1118
  else { // means many-to-many
1133
1119
  var junctionTableName = relation.junctionEntityMetadata.tablePath;
@@ -1153,8 +1139,8 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1153
1139
  return destinationTableAlias + "." + joinColumn.referencedColumn.propertyPath + "=" + junctionAlias_1 + "." + joinColumn.propertyPath;
1154
1140
  }).join(" AND ");
1155
1141
  }
1156
- return " " + joinAttr.direction + " JOIN " + _this.getTableName(junctionTableName) + " " + _this.escape(junctionAlias_1) + " ON " + _this.replacePropertyNames(junctionCondition) +
1157
- " " + joinAttr.direction + " JOIN " + _this.getTableName(destinationTableName) + " " + _this.escape(destinationTableAlias) + " ON " + _this.replacePropertyNames(destinationCondition + appendedCondition);
1142
+ return " " + joinAttr.direction + " JOIN " + _this.getTableName(junctionTableName) + " " + _this.escape(junctionAlias_1) + _this.createTableLockExpression() + " ON " + _this.replacePropertyNames(junctionCondition) +
1143
+ " " + joinAttr.direction + " JOIN " + _this.getTableName(destinationTableName) + " " + _this.escape(destinationTableAlias) + _this.createTableLockExpression() + " ON " + _this.replacePropertyNames(destinationCondition + appendedCondition);
1158
1144
  }
1159
1145
  });
1160
1146
  return joins.join(" ");
@@ -1248,6 +1234,27 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1248
1234
  }
1249
1235
  return "";
1250
1236
  };
1237
+ /**
1238
+ * Creates "LOCK" part of SELECT Query after table Clause
1239
+ * ex.
1240
+ * SELECT 1
1241
+ * FROM USER U WITH (NOLOCK)
1242
+ * JOIN ORDER O WITH (NOLOCK)
1243
+ * ON U.ID=O.OrderID
1244
+ */
1245
+ SelectQueryBuilder.prototype.createTableLockExpression = function () {
1246
+ if (this.connection.driver instanceof SqlServerDriver_1.SqlServerDriver) {
1247
+ switch (this.expressionMap.lockMode) {
1248
+ case "pessimistic_read":
1249
+ return " WITH (HOLDLOCK, ROWLOCK)";
1250
+ case "pessimistic_write":
1251
+ return " WITH (UPDLOCK, ROWLOCK)";
1252
+ case "dirty_read":
1253
+ return " WITH (NOLOCK)";
1254
+ }
1255
+ }
1256
+ return "";
1257
+ };
1251
1258
  /**
1252
1259
  * Creates "LOCK" part of SQL query.
1253
1260
  */