typeorm 0.2.45-dev.f3cfdd2 → 0.2.45

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 (498) hide show
  1. package/browser/cache/DbQueryResultCache.js +6 -6
  2. package/browser/cache/DbQueryResultCache.js.map +1 -1
  3. package/browser/cache/RedisQueryResultCache.js +2 -2
  4. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  5. package/browser/connection/Connection.js +2 -2
  6. package/browser/connection/Connection.js.map +1 -1
  7. package/browser/connection/ConnectionOptionsReader.js +2 -2
  8. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  9. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js +10 -10
  10. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  11. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +157 -157
  12. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  13. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +3 -3
  14. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  15. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +4 -4
  16. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  17. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +2 -2
  18. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  19. package/browser/driver/capacitor/CapacitorDriver.js +1 -1
  20. package/browser/driver/capacitor/CapacitorDriver.js.map +1 -1
  21. package/browser/driver/capacitor/CapacitorQueryRunner.js +1 -1
  22. package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  23. package/browser/driver/cockroachdb/CockroachDriver.js +6 -6
  24. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  25. package/browser/driver/cockroachdb/CockroachQueryRunner.js +153 -153
  26. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  27. package/browser/driver/cordova/CordovaQueryRunner.js +1 -1
  28. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  29. package/browser/driver/expo/ExpoQueryRunner.js +3 -3
  30. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  31. package/browser/driver/mongodb/MongoDriver.js +4 -4
  32. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  33. package/browser/driver/mysql/MysqlDriver.js +11 -11
  34. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  35. package/browser/driver/mysql/MysqlQueryRunner.js +163 -163
  36. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  37. package/browser/driver/nativescript/NativescriptQueryRunner.js +1 -1
  38. package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  39. package/browser/driver/oracle/OracleDriver.js +10 -10
  40. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  41. package/browser/driver/oracle/OracleQueryRunner.js +124 -124
  42. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  43. package/browser/driver/postgres/PostgresDriver.js +18 -18
  44. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  45. package/browser/driver/postgres/PostgresQueryRunner.js +229 -229
  46. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  47. package/browser/driver/react-native/ReactNativeQueryRunner.js +1 -1
  48. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  49. package/browser/driver/sap/SapDriver.js +9 -9
  50. package/browser/driver/sap/SapDriver.js.map +1 -1
  51. package/browser/driver/sap/SapQueryRunner.js +126 -126
  52. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  53. package/browser/driver/sqlite/SqliteDriver.js +4 -4
  54. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  55. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +3 -3
  56. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  57. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +61 -61
  58. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  59. package/browser/driver/sqljs/SqljsDriver.js +3 -3
  60. package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
  61. package/browser/driver/sqlserver/SqlServerDriver.js +11 -11
  62. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  63. package/browser/driver/sqlserver/SqlServerQueryRunner.js +203 -203
  64. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  65. package/browser/entity-manager/EntityManager.js +4 -4
  66. package/browser/entity-manager/EntityManager.js.map +1 -1
  67. package/browser/entity-manager/MongoEntityManager.js +1 -1
  68. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  69. package/browser/entity-schema/EntitySchemaEmbeddedError.js +2 -2
  70. package/browser/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
  71. package/browser/error/AlreadyHasActiveConnectionError.js +1 -1
  72. package/browser/error/AlreadyHasActiveConnectionError.js.map +1 -1
  73. package/browser/error/CannotAttachTreeChildrenEntityError.js +1 -1
  74. package/browser/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  75. package/browser/error/CannotConnectAlreadyConnectedError.js +1 -1
  76. package/browser/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  77. package/browser/error/CannotCreateEntityIdMapError.js +1 -1
  78. package/browser/error/CannotCreateEntityIdMapError.js.map +1 -1
  79. package/browser/error/CannotDetermineEntityError.js +1 -1
  80. package/browser/error/CannotDetermineEntityError.js.map +1 -1
  81. package/browser/error/CannotExecuteNotConnectedError.js +1 -1
  82. package/browser/error/CannotExecuteNotConnectedError.js.map +1 -1
  83. package/browser/error/CannotGetEntityManagerNotConnectedError.js +1 -1
  84. package/browser/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  85. package/browser/error/CannotReflectMethodParameterTypeError.js +1 -1
  86. package/browser/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  87. package/browser/error/CircularRelationsError.js +1 -1
  88. package/browser/error/CircularRelationsError.js.map +1 -1
  89. package/browser/error/ColumnTypeUndefinedError.js +1 -1
  90. package/browser/error/ColumnTypeUndefinedError.js.map +1 -1
  91. package/browser/error/ConnectionIsNotSetError.js +1 -1
  92. package/browser/error/ConnectionIsNotSetError.js.map +1 -1
  93. package/browser/error/ConnectionNotFoundError.js +1 -1
  94. package/browser/error/ConnectionNotFoundError.js.map +1 -1
  95. package/browser/error/CustomRepositoryCannotInheritRepositoryError.js +1 -1
  96. package/browser/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  97. package/browser/error/CustomRepositoryDoesNotHaveEntityError.js +1 -1
  98. package/browser/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  99. package/browser/error/CustomRepositoryNotFoundError.js +1 -1
  100. package/browser/error/CustomRepositoryNotFoundError.js.map +1 -1
  101. package/browser/error/DataTypeNotSupportedError.js +1 -1
  102. package/browser/error/DataTypeNotSupportedError.js.map +1 -1
  103. package/browser/error/DriverOptionNotSetError.js +1 -1
  104. package/browser/error/DriverOptionNotSetError.js.map +1 -1
  105. package/browser/error/DriverPackageNotInstalledError.js +2 -2
  106. package/browser/error/DriverPackageNotInstalledError.js.map +1 -1
  107. package/browser/error/EntityColumnNotFound.js +1 -1
  108. package/browser/error/EntityColumnNotFound.js.map +1 -1
  109. package/browser/error/EntityMetadataNotFoundError.js +1 -1
  110. package/browser/error/EntityMetadataNotFoundError.js.map +1 -1
  111. package/browser/error/EntityNotFoundError.js +2 -2
  112. package/browser/error/EntityNotFoundError.js.map +1 -1
  113. package/browser/error/FindRelationsNotFoundError.js +2 -2
  114. package/browser/error/FindRelationsNotFoundError.js.map +1 -1
  115. package/browser/error/InitializedRelationError.js +1 -1
  116. package/browser/error/InitializedRelationError.js.map +1 -1
  117. package/browser/error/MissingDeleteDateColumnError.js +1 -1
  118. package/browser/error/MissingDeleteDateColumnError.js.map +1 -1
  119. package/browser/error/MissingDriverError.js +2 -2
  120. package/browser/error/MissingDriverError.js.map +1 -1
  121. package/browser/error/MissingJoinColumnError.js +3 -3
  122. package/browser/error/MissingJoinColumnError.js.map +1 -1
  123. package/browser/error/MissingJoinTableError.js +3 -3
  124. package/browser/error/MissingJoinTableError.js.map +1 -1
  125. package/browser/error/MissingPrimaryColumnError.js +1 -1
  126. package/browser/error/MissingPrimaryColumnError.js.map +1 -1
  127. package/browser/error/MustBeEntityError.js +1 -1
  128. package/browser/error/MustBeEntityError.js.map +1 -1
  129. package/browser/error/NamingStrategyNotFoundError.js +2 -2
  130. package/browser/error/NamingStrategyNotFoundError.js.map +1 -1
  131. package/browser/error/NoConnectionForRepositoryError.js +1 -1
  132. package/browser/error/NoConnectionForRepositoryError.js.map +1 -1
  133. package/browser/error/NoConnectionOptionError.js +2 -2
  134. package/browser/error/NoConnectionOptionError.js.map +1 -1
  135. package/browser/error/NoVersionOrUpdateDateColumnError.js +1 -1
  136. package/browser/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  137. package/browser/error/OptimisticLockVersionMismatchError.js +1 -1
  138. package/browser/error/OptimisticLockVersionMismatchError.js.map +1 -1
  139. package/browser/error/PrimaryColumnCannotBeNullableError.js +1 -1
  140. package/browser/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  141. package/browser/error/RepositoryNotFoundError.js +2 -2
  142. package/browser/error/RepositoryNotFoundError.js.map +1 -1
  143. package/browser/error/RepositoryNotTreeError.js +1 -1
  144. package/browser/error/RepositoryNotTreeError.js.map +1 -1
  145. package/browser/error/SubjectRemovedAndUpdatedError.js +1 -1
  146. package/browser/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  147. package/browser/error/SubjectWithoutIdentifierError.js +1 -1
  148. package/browser/error/SubjectWithoutIdentifierError.js.map +1 -1
  149. package/browser/error/TreeRepositoryNotSupportedError.js +1 -1
  150. package/browser/error/TreeRepositoryNotSupportedError.js.map +1 -1
  151. package/browser/error/UsingJoinColumnIsNotAllowedError.js +1 -1
  152. package/browser/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  153. package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +1 -1
  154. package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  155. package/browser/error/UsingJoinTableIsNotAllowedError.js +2 -2
  156. package/browser/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  157. package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js +1 -1
  158. package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  159. package/browser/find-options/FindOptionsUtils.js +6 -6
  160. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  161. package/browser/logger/FileLogger.js +3 -3
  162. package/browser/logger/FileLogger.js.map +1 -1
  163. package/browser/metadata/EmbeddedMetadata.js +1 -1
  164. package/browser/metadata/EmbeddedMetadata.js.map +1 -1
  165. package/browser/metadata/IndexMetadata.js +1 -1
  166. package/browser/metadata/IndexMetadata.js.map +1 -1
  167. package/browser/metadata/RelationCountMetadata.js +1 -1
  168. package/browser/metadata/RelationCountMetadata.js.map +1 -1
  169. package/browser/metadata/RelationIdMetadata.js +1 -1
  170. package/browser/metadata/RelationIdMetadata.js.map +1 -1
  171. package/browser/metadata/UniqueMetadata.js +1 -1
  172. package/browser/metadata/UniqueMetadata.js.map +1 -1
  173. package/browser/metadata-builder/EntityMetadataBuilder.js +1 -1
  174. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  175. package/browser/metadata-builder/EntityMetadataValidator.js +9 -9
  176. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  177. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +2 -2
  178. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  179. package/browser/metadata-builder/RelationJoinColumnBuilder.js +1 -1
  180. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  181. package/browser/migration/MigrationExecutor.js +16 -16
  182. package/browser/migration/MigrationExecutor.js.map +1 -1
  183. package/browser/naming-strategy/DefaultNamingStrategy.js +11 -11
  184. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  185. package/browser/persistence/tree/ClosureSubjectExecutor.js +17 -17
  186. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  187. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js +2 -2
  188. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  189. package/browser/persistence/tree/NestedSetSubjectExecutor.js +44 -44
  190. package/browser/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  191. package/browser/platform/BrowserPlatformTools.js +9 -9
  192. package/browser/platform/BrowserPlatformTools.js.map +1 -1
  193. package/browser/platform/PlatformTools.js +1 -1
  194. package/browser/platform/PlatformTools.js.map +1 -1
  195. package/browser/query-builder/Alias.js +1 -1
  196. package/browser/query-builder/Alias.js.map +1 -1
  197. package/browser/query-builder/DeleteQueryBuilder.js +3 -3
  198. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  199. package/browser/query-builder/InsertQueryBuilder.js +22 -22
  200. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  201. package/browser/query-builder/JoinAttribute.js +1 -1
  202. package/browser/query-builder/JoinAttribute.js.map +1 -1
  203. package/browser/query-builder/QueryBuilder.js +39 -39
  204. package/browser/query-builder/QueryBuilder.js.map +1 -1
  205. package/browser/query-builder/QueryExpressionMap.js +2 -2
  206. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  207. package/browser/query-builder/RelationLoader.js +7 -7
  208. package/browser/query-builder/RelationLoader.js.map +1 -1
  209. package/browser/query-builder/RelationQueryBuilder.js +3 -3
  210. package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
  211. package/browser/query-builder/RelationRemover.js +4 -4
  212. package/browser/query-builder/RelationRemover.js.map +1 -1
  213. package/browser/query-builder/RelationUpdater.js +1 -1
  214. package/browser/query-builder/RelationUpdater.js.map +1 -1
  215. package/browser/query-builder/SelectQueryBuilder.js +23 -23
  216. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  217. package/browser/query-builder/SoftDeleteQueryBuilder.js +4 -4
  218. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  219. package/browser/query-builder/UpdateQueryBuilder.js +8 -8
  220. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  221. package/browser/query-builder/relation-count/RelationCountAttribute.js +1 -1
  222. package/browser/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  223. package/browser/query-builder/relation-id/RelationIdAttribute.js +1 -1
  224. package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  225. package/browser/query-builder/relation-id/RelationIdLoader.js +4 -4
  226. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  227. package/browser/query-runner/BaseQueryRunner.js +7 -7
  228. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  229. package/browser/repository/TreeRepository.js +7 -7
  230. package/browser/repository/TreeRepository.js.map +1 -1
  231. package/browser/schema-builder/RdbmsSchemaBuilder.js +19 -19
  232. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  233. package/browser/subscriber/Broadcaster.js +1 -1
  234. package/browser/subscriber/Broadcaster.js.map +1 -1
  235. package/browser/util/DateUtils.js +1 -1
  236. package/browser/util/DateUtils.js.map +1 -1
  237. package/browser/util/DepGraph.js +7 -7
  238. package/browser/util/DepGraph.js.map +1 -1
  239. package/browser/util/DirectoryExportedClassesLoader.js +2 -2
  240. package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
  241. package/browser/util/PathUtils.js +1 -1
  242. package/browser/util/PathUtils.js.map +1 -1
  243. package/cache/DbQueryResultCache.js +6 -6
  244. package/cache/DbQueryResultCache.js.map +1 -1
  245. package/cache/RedisQueryResultCache.js +2 -2
  246. package/cache/RedisQueryResultCache.js.map +1 -1
  247. package/cli.js +0 -0
  248. package/commands/CommandUtils.js +1 -1
  249. package/commands/CommandUtils.js.map +1 -1
  250. package/commands/EntityCreateCommand.js +3 -3
  251. package/commands/EntityCreateCommand.js.map +1 -1
  252. package/commands/InitCommand.js +6 -6
  253. package/commands/InitCommand.js.map +1 -1
  254. package/commands/MigrationCreateCommand.js +3 -3
  255. package/commands/MigrationCreateCommand.js.map +1 -1
  256. package/commands/MigrationGenerateCommand.js +8 -8
  257. package/commands/MigrationGenerateCommand.js.map +1 -1
  258. package/commands/SchemaLogCommand.js +1 -1
  259. package/commands/SchemaLogCommand.js.map +1 -1
  260. package/commands/SubscriberCreateCommand.js +2 -2
  261. package/commands/SubscriberCreateCommand.js.map +1 -1
  262. package/connection/Connection.js +2 -2
  263. package/connection/Connection.js.map +1 -1
  264. package/connection/ConnectionOptionsReader.js +2 -2
  265. package/connection/ConnectionOptionsReader.js.map +1 -1
  266. package/driver/aurora-data-api/AuroraDataApiDriver.js +10 -10
  267. package/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  268. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +157 -157
  269. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  270. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +3 -3
  271. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  272. package/driver/better-sqlite3/BetterSqlite3Driver.js +4 -4
  273. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  274. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +2 -2
  275. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  276. package/driver/capacitor/CapacitorDriver.js +1 -1
  277. package/driver/capacitor/CapacitorDriver.js.map +1 -1
  278. package/driver/capacitor/CapacitorQueryRunner.js +1 -1
  279. package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  280. package/driver/cockroachdb/CockroachDriver.js +6 -6
  281. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  282. package/driver/cockroachdb/CockroachQueryRunner.js +153 -153
  283. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  284. package/driver/cordova/CordovaQueryRunner.js +1 -1
  285. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  286. package/driver/expo/ExpoQueryRunner.js +3 -3
  287. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  288. package/driver/mongodb/MongoDriver.js +4 -4
  289. package/driver/mongodb/MongoDriver.js.map +1 -1
  290. package/driver/mysql/MysqlDriver.js +11 -11
  291. package/driver/mysql/MysqlDriver.js.map +1 -1
  292. package/driver/mysql/MysqlQueryRunner.js +163 -163
  293. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  294. package/driver/nativescript/NativescriptQueryRunner.js +1 -1
  295. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  296. package/driver/oracle/OracleDriver.js +10 -10
  297. package/driver/oracle/OracleDriver.js.map +1 -1
  298. package/driver/oracle/OracleQueryRunner.js +124 -124
  299. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  300. package/driver/postgres/PostgresDriver.js +18 -18
  301. package/driver/postgres/PostgresDriver.js.map +1 -1
  302. package/driver/postgres/PostgresQueryRunner.js +229 -229
  303. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  304. package/driver/react-native/ReactNativeQueryRunner.js +1 -1
  305. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  306. package/driver/sap/SapDriver.js +9 -9
  307. package/driver/sap/SapDriver.js.map +1 -1
  308. package/driver/sap/SapQueryRunner.js +126 -126
  309. package/driver/sap/SapQueryRunner.js.map +1 -1
  310. package/driver/sqlite/SqliteDriver.js +4 -4
  311. package/driver/sqlite/SqliteDriver.js.map +1 -1
  312. package/driver/sqlite-abstract/AbstractSqliteDriver.js +3 -3
  313. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  314. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +61 -61
  315. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  316. package/driver/sqljs/SqljsDriver.js +3 -3
  317. package/driver/sqljs/SqljsDriver.js.map +1 -1
  318. package/driver/sqlserver/SqlServerDriver.js +11 -11
  319. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  320. package/driver/sqlserver/SqlServerQueryRunner.js +203 -203
  321. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  322. package/entity-manager/EntityManager.js +4 -4
  323. package/entity-manager/EntityManager.js.map +1 -1
  324. package/entity-manager/MongoEntityManager.js +1 -1
  325. package/entity-manager/MongoEntityManager.js.map +1 -1
  326. package/entity-schema/EntitySchemaEmbeddedError.js +2 -2
  327. package/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
  328. package/error/AlreadyHasActiveConnectionError.js +1 -1
  329. package/error/AlreadyHasActiveConnectionError.js.map +1 -1
  330. package/error/CannotAttachTreeChildrenEntityError.js +1 -1
  331. package/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  332. package/error/CannotConnectAlreadyConnectedError.js +1 -1
  333. package/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  334. package/error/CannotCreateEntityIdMapError.js +1 -1
  335. package/error/CannotCreateEntityIdMapError.js.map +1 -1
  336. package/error/CannotDetermineEntityError.js +1 -1
  337. package/error/CannotDetermineEntityError.js.map +1 -1
  338. package/error/CannotExecuteNotConnectedError.js +1 -1
  339. package/error/CannotExecuteNotConnectedError.js.map +1 -1
  340. package/error/CannotGetEntityManagerNotConnectedError.js +1 -1
  341. package/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  342. package/error/CannotReflectMethodParameterTypeError.js +1 -1
  343. package/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  344. package/error/CircularRelationsError.js +1 -1
  345. package/error/CircularRelationsError.js.map +1 -1
  346. package/error/ColumnTypeUndefinedError.js +1 -1
  347. package/error/ColumnTypeUndefinedError.js.map +1 -1
  348. package/error/ConnectionIsNotSetError.js +1 -1
  349. package/error/ConnectionIsNotSetError.js.map +1 -1
  350. package/error/ConnectionNotFoundError.js +1 -1
  351. package/error/ConnectionNotFoundError.js.map +1 -1
  352. package/error/CustomRepositoryCannotInheritRepositoryError.js +1 -1
  353. package/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  354. package/error/CustomRepositoryDoesNotHaveEntityError.js +1 -1
  355. package/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  356. package/error/CustomRepositoryNotFoundError.js +1 -1
  357. package/error/CustomRepositoryNotFoundError.js.map +1 -1
  358. package/error/DataTypeNotSupportedError.js +1 -1
  359. package/error/DataTypeNotSupportedError.js.map +1 -1
  360. package/error/DriverOptionNotSetError.js +1 -1
  361. package/error/DriverOptionNotSetError.js.map +1 -1
  362. package/error/DriverPackageNotInstalledError.js +2 -2
  363. package/error/DriverPackageNotInstalledError.js.map +1 -1
  364. package/error/EntityColumnNotFound.js +1 -1
  365. package/error/EntityColumnNotFound.js.map +1 -1
  366. package/error/EntityMetadataNotFoundError.js +1 -1
  367. package/error/EntityMetadataNotFoundError.js.map +1 -1
  368. package/error/EntityNotFoundError.js +2 -2
  369. package/error/EntityNotFoundError.js.map +1 -1
  370. package/error/FindRelationsNotFoundError.js +2 -2
  371. package/error/FindRelationsNotFoundError.js.map +1 -1
  372. package/error/InitializedRelationError.js +1 -1
  373. package/error/InitializedRelationError.js.map +1 -1
  374. package/error/MissingDeleteDateColumnError.js +1 -1
  375. package/error/MissingDeleteDateColumnError.js.map +1 -1
  376. package/error/MissingDriverError.js +2 -2
  377. package/error/MissingDriverError.js.map +1 -1
  378. package/error/MissingJoinColumnError.js +3 -3
  379. package/error/MissingJoinColumnError.js.map +1 -1
  380. package/error/MissingJoinTableError.js +3 -3
  381. package/error/MissingJoinTableError.js.map +1 -1
  382. package/error/MissingPrimaryColumnError.js +1 -1
  383. package/error/MissingPrimaryColumnError.js.map +1 -1
  384. package/error/MustBeEntityError.js +1 -1
  385. package/error/MustBeEntityError.js.map +1 -1
  386. package/error/NamingStrategyNotFoundError.js +2 -2
  387. package/error/NamingStrategyNotFoundError.js.map +1 -1
  388. package/error/NoConnectionForRepositoryError.js +1 -1
  389. package/error/NoConnectionForRepositoryError.js.map +1 -1
  390. package/error/NoConnectionOptionError.js +2 -2
  391. package/error/NoConnectionOptionError.js.map +1 -1
  392. package/error/NoVersionOrUpdateDateColumnError.js +1 -1
  393. package/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  394. package/error/OptimisticLockVersionMismatchError.js +1 -1
  395. package/error/OptimisticLockVersionMismatchError.js.map +1 -1
  396. package/error/PrimaryColumnCannotBeNullableError.js +1 -1
  397. package/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  398. package/error/RepositoryNotFoundError.js +2 -2
  399. package/error/RepositoryNotFoundError.js.map +1 -1
  400. package/error/RepositoryNotTreeError.js +1 -1
  401. package/error/RepositoryNotTreeError.js.map +1 -1
  402. package/error/SubjectRemovedAndUpdatedError.js +1 -1
  403. package/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  404. package/error/SubjectWithoutIdentifierError.js +1 -1
  405. package/error/SubjectWithoutIdentifierError.js.map +1 -1
  406. package/error/TreeRepositoryNotSupportedError.js +1 -1
  407. package/error/TreeRepositoryNotSupportedError.js.map +1 -1
  408. package/error/UsingJoinColumnIsNotAllowedError.js +1 -1
  409. package/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  410. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +1 -1
  411. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  412. package/error/UsingJoinTableIsNotAllowedError.js +2 -2
  413. package/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  414. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js +1 -1
  415. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  416. package/find-options/FindOptionsUtils.js +6 -6
  417. package/find-options/FindOptionsUtils.js.map +1 -1
  418. package/logger/FileLogger.js +3 -3
  419. package/logger/FileLogger.js.map +1 -1
  420. package/metadata/EmbeddedMetadata.js +1 -1
  421. package/metadata/EmbeddedMetadata.js.map +1 -1
  422. package/metadata/IndexMetadata.js +1 -1
  423. package/metadata/IndexMetadata.js.map +1 -1
  424. package/metadata/RelationCountMetadata.js +1 -1
  425. package/metadata/RelationCountMetadata.js.map +1 -1
  426. package/metadata/RelationIdMetadata.js +1 -1
  427. package/metadata/RelationIdMetadata.js.map +1 -1
  428. package/metadata/UniqueMetadata.js +1 -1
  429. package/metadata/UniqueMetadata.js.map +1 -1
  430. package/metadata-builder/EntityMetadataBuilder.js +1 -1
  431. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  432. package/metadata-builder/EntityMetadataValidator.js +9 -9
  433. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  434. package/metadata-builder/JunctionEntityMetadataBuilder.js +2 -2
  435. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  436. package/metadata-builder/RelationJoinColumnBuilder.js +1 -1
  437. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  438. package/migration/MigrationExecutor.js +16 -16
  439. package/migration/MigrationExecutor.js.map +1 -1
  440. package/naming-strategy/DefaultNamingStrategy.js +11 -11
  441. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  442. package/package.json +260 -1
  443. package/persistence/tree/ClosureSubjectExecutor.js +17 -17
  444. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  445. package/persistence/tree/MaterializedPathSubjectExecutor.js +2 -2
  446. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  447. package/persistence/tree/NestedSetSubjectExecutor.js +44 -44
  448. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  449. package/platform/PlatformTools.js +1 -1
  450. package/platform/PlatformTools.js.map +1 -1
  451. package/query-builder/Alias.js +1 -1
  452. package/query-builder/Alias.js.map +1 -1
  453. package/query-builder/DeleteQueryBuilder.js +3 -3
  454. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  455. package/query-builder/InsertQueryBuilder.js +22 -22
  456. package/query-builder/InsertQueryBuilder.js.map +1 -1
  457. package/query-builder/JoinAttribute.js +1 -1
  458. package/query-builder/JoinAttribute.js.map +1 -1
  459. package/query-builder/QueryBuilder.js +39 -39
  460. package/query-builder/QueryBuilder.js.map +1 -1
  461. package/query-builder/QueryExpressionMap.js +2 -2
  462. package/query-builder/QueryExpressionMap.js.map +1 -1
  463. package/query-builder/RelationLoader.js +7 -7
  464. package/query-builder/RelationLoader.js.map +1 -1
  465. package/query-builder/RelationQueryBuilder.js +3 -3
  466. package/query-builder/RelationQueryBuilder.js.map +1 -1
  467. package/query-builder/RelationRemover.js +4 -4
  468. package/query-builder/RelationRemover.js.map +1 -1
  469. package/query-builder/RelationUpdater.js +1 -1
  470. package/query-builder/RelationUpdater.js.map +1 -1
  471. package/query-builder/SelectQueryBuilder.js +23 -23
  472. package/query-builder/SelectQueryBuilder.js.map +1 -1
  473. package/query-builder/SoftDeleteQueryBuilder.js +4 -4
  474. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  475. package/query-builder/UpdateQueryBuilder.js +8 -8
  476. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  477. package/query-builder/relation-count/RelationCountAttribute.js +1 -1
  478. package/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  479. package/query-builder/relation-id/RelationIdAttribute.js +1 -1
  480. package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  481. package/query-builder/relation-id/RelationIdLoader.js +4 -4
  482. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  483. package/query-runner/BaseQueryRunner.js +7 -7
  484. package/query-runner/BaseQueryRunner.js.map +1 -1
  485. package/repository/TreeRepository.js +7 -7
  486. package/repository/TreeRepository.js.map +1 -1
  487. package/schema-builder/RdbmsSchemaBuilder.js +19 -19
  488. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  489. package/subscriber/Broadcaster.js +1 -1
  490. package/subscriber/Broadcaster.js.map +1 -1
  491. package/util/DateUtils.js +1 -1
  492. package/util/DateUtils.js.map +1 -1
  493. package/util/DepGraph.js +7 -7
  494. package/util/DepGraph.js.map +1 -1
  495. package/util/DirectoryExportedClassesLoader.js +2 -2
  496. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  497. package/util/PathUtils.js +1 -1
  498. package/util/PathUtils.js.map +1 -1
@@ -269,12 +269,12 @@ var InsertQueryBuilder = /** @class */ (function (_super) {
269
269
  var columnsExpression = this.createColumnNamesExpression();
270
270
  var query = "INSERT ";
271
271
  if (this.connection.driver instanceof MysqlDriver_1.MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver_1.AuroraDataApiDriver) {
272
- query += "" + (this.expressionMap.onIgnore ? " IGNORE " : "");
272
+ query += "".concat(this.expressionMap.onIgnore ? " IGNORE " : "");
273
273
  }
274
- query += "INTO " + tableName;
274
+ query += "INTO ".concat(tableName);
275
275
  // add columns expression
276
276
  if (columnsExpression) {
277
- query += "(" + columnsExpression + ")";
277
+ query += "(".concat(columnsExpression, ")");
278
278
  }
279
279
  else {
280
280
  if (!valuesExpression && (this.connection.driver instanceof MysqlDriver_1.MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver_1.AuroraDataApiDriver)) // special syntax for mysql DEFAULT VALUES insertion
@@ -282,15 +282,15 @@ var InsertQueryBuilder = /** @class */ (function (_super) {
282
282
  }
283
283
  // add OUTPUT expression
284
284
  if (returningExpression && this.connection.driver instanceof SqlServerDriver_1.SqlServerDriver) {
285
- query += " OUTPUT " + returningExpression;
285
+ query += " OUTPUT ".concat(returningExpression);
286
286
  }
287
287
  // add VALUES expression
288
288
  if (valuesExpression) {
289
289
  if (this.connection.driver instanceof OracleDriver_1.OracleDriver && this.getValueSets().length > 1) {
290
- query += " " + valuesExpression;
290
+ query += " ".concat(valuesExpression);
291
291
  }
292
292
  else {
293
- query += " VALUES " + valuesExpression;
293
+ query += " VALUES ".concat(valuesExpression);
294
294
  }
295
295
  }
296
296
  else {
@@ -306,30 +306,30 @@ var InsertQueryBuilder = /** @class */ (function (_super) {
306
306
  query += " ON CONFLICT DO NOTHING ";
307
307
  }
308
308
  else if (this.expressionMap.onConflict) {
309
- query += " ON CONFLICT " + this.expressionMap.onConflict + " ";
309
+ query += " ON CONFLICT ".concat(this.expressionMap.onConflict, " ");
310
310
  }
311
311
  else if (this.expressionMap.onUpdate) {
312
312
  var _a = this.expressionMap.onUpdate, overwrite = _a.overwrite, columns = _a.columns, conflict = _a.conflict, skipUpdateIfNoValuesChanged = _a.skipUpdateIfNoValuesChanged;
313
313
  var conflictTarget = "ON CONFLICT";
314
314
  if (Array.isArray(conflict)) {
315
- conflictTarget += " ( " + conflict.map(function (column) { return _this.escape(column); }).join(", ") + " )";
315
+ conflictTarget += " ( ".concat(conflict.map(function (column) { return _this.escape(column); }).join(", "), " )");
316
316
  }
317
317
  else if (conflict) {
318
- conflictTarget += " ON CONSTRAINT " + this.escape(conflict);
318
+ conflictTarget += " ON CONSTRAINT ".concat(this.escape(conflict));
319
319
  }
320
320
  if (Array.isArray(overwrite)) {
321
- query += " " + conflictTarget + " DO UPDATE SET ";
322
- query += overwrite === null || overwrite === void 0 ? void 0 : overwrite.map(function (column) { return _this.escape(column) + " = EXCLUDED." + _this.escape(column); }).join(", ");
321
+ query += " ".concat(conflictTarget, " DO UPDATE SET ");
322
+ query += overwrite === null || overwrite === void 0 ? void 0 : overwrite.map(function (column) { return "".concat(_this.escape(column), " = EXCLUDED.").concat(_this.escape(column)); }).join(", ");
323
323
  query += " ";
324
324
  }
325
325
  else if (columns) {
326
- query += " " + conflictTarget + " DO UPDATE SET ";
327
- query += columns.map(function (column) { return _this.escape(column) + " = :" + column; }).join(", ");
326
+ query += " ".concat(conflictTarget, " DO UPDATE SET ");
327
+ query += columns.map(function (column) { return "".concat(_this.escape(column), " = :").concat(column); }).join(", ");
328
328
  query += " ";
329
329
  }
330
330
  if (Array.isArray(overwrite) && skipUpdateIfNoValuesChanged && this.connection.driver instanceof PostgresDriver_1.PostgresDriver) {
331
331
  query += " WHERE (";
332
- query += overwrite.map(function (column) { return tableName + "." + _this.escape(column) + " IS DISTINCT FROM EXCLUDED." + _this.escape(column); }).join(" OR ");
332
+ query += overwrite.map(function (column) { return "".concat(tableName, ".").concat(_this.escape(column), " IS DISTINCT FROM EXCLUDED.").concat(_this.escape(column)); }).join(" OR ");
333
333
  query += ") ";
334
334
  }
335
335
  }
@@ -339,12 +339,12 @@ var InsertQueryBuilder = /** @class */ (function (_super) {
339
339
  var _b = this.expressionMap.onUpdate, overwrite = _b.overwrite, columns = _b.columns;
340
340
  if (Array.isArray(overwrite)) {
341
341
  query += " ON DUPLICATE KEY UPDATE ";
342
- query += overwrite.map(function (column) { return _this.escape(column) + " = VALUES(" + _this.escape(column) + ")"; }).join(", ");
342
+ query += overwrite.map(function (column) { return "".concat(_this.escape(column), " = VALUES(").concat(_this.escape(column), ")"); }).join(", ");
343
343
  query += " ";
344
344
  }
345
345
  else if (Array.isArray(columns)) {
346
346
  query += " ON DUPLICATE KEY UPDATE ";
347
- query += columns.map(function (column) { return _this.escape(column) + " = :" + column; }).join(", ");
347
+ query += columns.map(function (column) { return "".concat(_this.escape(column), " = :").concat(column); }).join(", ");
348
348
  query += " ";
349
349
  }
350
350
  }
@@ -360,7 +360,7 @@ var InsertQueryBuilder = /** @class */ (function (_super) {
360
360
  this.connection.driver instanceof OracleDriver_1.OracleDriver ||
361
361
  this.connection.driver instanceof CockroachDriver_1.CockroachDriver ||
362
362
  this.connection.driver instanceof MysqlDriver_1.MysqlDriver)) {
363
- query += " RETURNING " + returningExpression;
363
+ query += " RETURNING ".concat(returningExpression);
364
364
  }
365
365
  // Inserting a specific value for an auto-increment primary key in mssql requires enabling IDENTITY_INSERT
366
366
  // IDENTITY_INSERT can only be enabled for tables where there is an IDENTITY column and only if there is a value to be inserted (i.e. supplying DEFAULT is prohibited if IDENTITY_INSERT is enabled)
@@ -369,7 +369,7 @@ var InsertQueryBuilder = /** @class */ (function (_super) {
369
369
  && this.expressionMap.mainAlias.metadata.columns
370
370
  .filter(function (column) { return _this.expressionMap.insertColumns.length > 0 ? _this.expressionMap.insertColumns.indexOf(column.propertyPath) !== -1 : column.isInsert; })
371
371
  .some(function (column) { return _this.isOverridingAutoIncrementBehavior(column); })) {
372
- query = "SET IDENTITY_INSERT " + tableName + " ON; " + query + "; SET IDENTITY_INSERT " + tableName + " OFF";
372
+ query = "SET IDENTITY_INSERT ".concat(tableName, " ON; ").concat(query, "; SET IDENTITY_INSERT ").concat(tableName, " OFF");
373
373
  }
374
374
  return query;
375
375
  };
@@ -517,18 +517,18 @@ var InsertQueryBuilder = /** @class */ (function (_super) {
517
517
  var useLegacy = _this.connection.driver.options.legacySpatialSupport;
518
518
  var geomFromText = useLegacy ? "GeomFromText" : "ST_GeomFromText";
519
519
  if (column.srid != null) {
520
- expression_1 += geomFromText + "(" + paramName + ", " + column.srid + ")";
520
+ expression_1 += "".concat(geomFromText, "(").concat(paramName, ", ").concat(column.srid, ")");
521
521
  }
522
522
  else {
523
- expression_1 += geomFromText + "(" + paramName + ")";
523
+ expression_1 += "".concat(geomFromText, "(").concat(paramName, ")");
524
524
  }
525
525
  }
526
526
  else if (_this.connection.driver instanceof PostgresDriver_1.PostgresDriver && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {
527
527
  if (column.srid != null) {
528
- expression_1 += "ST_SetSRID(ST_GeomFromGeoJSON(" + paramName + "), " + column.srid + ")::" + column.type;
528
+ expression_1 += "ST_SetSRID(ST_GeomFromGeoJSON(".concat(paramName, "), ").concat(column.srid, ")::").concat(column.type);
529
529
  }
530
530
  else {
531
- expression_1 += "ST_GeomFromGeoJSON(" + paramName + ")::" + column.type;
531
+ expression_1 += "ST_GeomFromGeoJSON(".concat(paramName, ")::").concat(column.type);
532
532
  }
533
533
  }
534
534
  else if (_this.connection.driver instanceof SqlServerDriver_1.SqlServerDriver && _this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/InsertQueryBuilder.ts"],"names":[],"mappings":"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","file":"InsertQueryBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {SapDriver} from \"../driver/sap/SapDriver\";\nimport {QueryBuilder} from \"./QueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {EntityTarget} from \"../common/EntityTarget\";\nimport {QueryDeepPartialEntity} from \"./QueryPartialEntity\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {InsertResult} from \"./result/InsertResult\";\nimport {ReturningStatementNotSupportedError} from \"../error/ReturningStatementNotSupportedError\";\nimport {InsertValuesMissingError} from \"../error/InsertValuesMissingError\";\nimport {ColumnMetadata} from \"../metadata/ColumnMetadata\";\nimport {ReturningResultsEntityUpdator} from \"./ReturningResultsEntityUpdator\";\nimport {AbstractSqliteDriver} from \"../driver/sqlite-abstract/AbstractSqliteDriver\";\nimport {BroadcasterResult} from \"../subscriber/BroadcasterResult\";\nimport {EntitySchema} from \"../entity-schema/EntitySchema\";\nimport {OracleDriver} from \"../driver/oracle/OracleDriver\";\nimport {AuroraDataApiDriver} from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport {TypeORMError} from \"../error\";\nimport {v4 as uuidv4} from \"uuid\";\nimport { InsertOrUpdateOptions } from \"./InsertOrUpdateOptions\";\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nexport class InsertQueryBuilder<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 let sql = this.createComment();\n sql += this.createInsertExpression();\n return sql.trim();\n }\n\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n async execute(): Promise<InsertResult> {\n // console.time(\".value sets\");\n const valueSets: ObjectLiteral[] = this.getValueSets();\n // console.timeEnd(\".value sets\");\n\n // If user passed empty array of entities then we don't need to do\n // anything.\n //\n // Fixes GitHub issues #3111 and #5734. If we were to let this through\n // we would run into problems downstream, like subscribers getting\n // invoked with the empty array where they expect an entity, and SQL\n // queries with an empty VALUES clause.\n if (valueSets.length === 0)\n return new InsertResult();\n\n // console.time(\"QueryBuilder.execute\");\n // console.time(\".database stuff\");\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 // console.timeEnd(\".database stuff\");\n\n // call before insertion methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n const broadcastResult = new BroadcasterResult();\n valueSets.forEach(valueSet => {\n queryRunner.broadcaster.broadcastBeforeInsertEvent(broadcastResult, this.expressionMap.mainAlias!.metadata, valueSet);\n });\n await broadcastResult.wait();\n }\n\n let declareSql: string | null = null;\n let selectOutputSql: string | null = null;\n\n // if update entity mode is enabled we may need extra columns for the returning statement\n // console.time(\".prepare returning statement\");\n const returningResultsEntityUpdator = new ReturningResultsEntityUpdator(queryRunner, this.expressionMap);\n\n const returningColumns: ColumnMetadata[] = [];\n\n if (Array.isArray(this.expressionMap.returning) && this.expressionMap.mainAlias!.hasMetadata) {\n for (const columnPath of this.expressionMap.returning) {\n returningColumns.push(\n ...this.expressionMap.mainAlias!.metadata.findColumnsWithPropertyPath(columnPath)\n );\n }\n }\n\n if (this.expressionMap.updateEntity === true && this.expressionMap.mainAlias!.hasMetadata) {\n if (!(valueSets.length > 1 && this.connection.driver instanceof OracleDriver)) {\n this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getInsertionReturningColumns();\n }\n\n returningColumns.push(...this.expressionMap.extraReturningColumns.filter(\n c => !returningColumns.includes(c)\n ));\n }\n\n if (returningColumns.length > 0 && this.connection.driver instanceof SqlServerDriver) {\n declareSql = this.connection.driver.buildTableVariableDeclaration(\"@OutputTable\", returningColumns);\n selectOutputSql = `SELECT * FROM @OutputTable`;\n }\n // console.timeEnd(\".prepare returning statement\");\n\n // execute query\n // console.time(\".getting query and parameters\");\n const [insertSql, parameters] = this.getQueryAndParameters();\n // console.timeEnd(\".getting query and parameters\");\n\n // console.time(\".query execution by database\");\n const statements = [declareSql, insertSql, selectOutputSql];\n const sql = statements.filter(s => s != null).join(\";\\n\\n\");\n\n const queryResult = await queryRunner.query(sql, parameters, true);\n\n const insertResult = InsertResult.from(queryResult);\n\n // console.timeEnd(\".query execution by database\");\n\n // load returning results and set them to the entity if entity updation is enabled\n if (this.expressionMap.updateEntity === true && this.expressionMap.mainAlias!.hasMetadata) {\n // console.time(\".updating entity\");\n await returningResultsEntityUpdator.insert(insertResult, valueSets);\n // console.timeEnd(\".updating entity\");\n }\n\n // call after insertion methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n const broadcastResult = new BroadcasterResult();\n valueSets.forEach(valueSet => {\n queryRunner.broadcaster.broadcastAfterInsertEvent(broadcastResult, this.expressionMap.mainAlias!.metadata, valueSet);\n });\n await broadcastResult.wait();\n }\n\n // close transaction if we started it\n // console.time(\".commit\");\n if (transactionStartedByUs) {\n await queryRunner.commitTransaction();\n }\n // console.timeEnd(\".commit\");\n\n return insertResult;\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\n // console.time(\".releasing connection\");\n if (queryRunner !== this.queryRunner) { // means we created our own query runner\n await queryRunner.release();\n }\n // console.timeEnd(\".releasing connection\");\n // console.timeEnd(\"QueryBuilder.execute\");\n }\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Specifies INTO which entity's table insertion will be executed.\n */\n into<T>(entityTarget: EntityTarget<T>, columns?: string[]): InsertQueryBuilder<T> {\n entityTarget = entityTarget instanceof EntitySchema ? entityTarget.options.name : entityTarget;\n const mainAlias = this.createFromAlias(entityTarget);\n this.expressionMap.setMainAlias(mainAlias);\n this.expressionMap.insertColumns = columns || [];\n return (this as any) as InsertQueryBuilder<T>;\n }\n\n /**\n * Values needs to be inserted into table.\n */\n values(values: QueryDeepPartialEntity<Entity>|QueryDeepPartialEntity<Entity>[]): this {\n this.expressionMap.valuesSet = values;\n return this;\n }\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(\"insert\")) {\n throw new ReturningStatementNotSupportedError();\n }\n\n this.expressionMap.returning = returning;\n return this;\n }\n\n /**\n * Indicates if entity must be updated after insertion operations.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n updateEntity(enabled: boolean): this {\n this.expressionMap.updateEntity = enabled;\n return this;\n }\n\n /**\n * Adds additional ON CONFLICT statement supported in postgres and cockroach.\n *\n * @deprecated Use `orIgnore` or `orUpdate`\n */\n onConflict(statement: string): this {\n this.expressionMap.onConflict = statement;\n return this;\n }\n\n /**\n * Adds additional ignore statement supported in databases.\n */\n orIgnore(statement: string | boolean = true): this {\n this.expressionMap.onIgnore = !!statement;\n return this;\n }\n\n /**\n * @deprecated\n */\n orUpdate(statement?: { columns?: string[], overwrite?: string[], conflict_target?: string | string[] }): this;\n\n orUpdate(overwrite: string[], conflictTarget?: string | string[], orUpdateOptions?: InsertOrUpdateOptions): this;\n\n /**\n * Adds additional update statement supported in databases.\n */\n orUpdate(statementOrOverwrite?: { columns?: string[], overwrite?: string[], conflict_target?: string | string[] } | string[], conflictTarget?: string | string[], orUpdateOptions?: InsertOrUpdateOptions): this {\n\n if (!Array.isArray(statementOrOverwrite)) {\n this.expressionMap.onUpdate = {\n conflict: statementOrOverwrite?.conflict_target,\n columns: statementOrOverwrite?.columns,\n overwrite: statementOrOverwrite?.overwrite,\n skipUpdateIfNoValuesChanged: orUpdateOptions?.skipUpdateIfNoValuesChanged\n };\n return this;\n }\n\n this.expressionMap.onUpdate = {\n overwrite: statementOrOverwrite,\n conflict: conflictTarget,\n skipUpdateIfNoValuesChanged: orUpdateOptions?.skipUpdateIfNoValuesChanged\n };\n return this;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates INSERT express used to perform insert query.\n */\n protected createInsertExpression() {\n const tableName = this.getTableName(this.getMainTableName());\n const valuesExpression = this.createValuesExpression(); // its important to get values before returning expression because oracle rely on native parameters and ordering of them is important\n const returningExpression =\n (this.connection.driver instanceof OracleDriver && this.getValueSets().length > 1)\n ? null\n : this.createReturningExpression(\"insert\"); // oracle doesnt support returning with multi-row insert\n const columnsExpression = this.createColumnNamesExpression();\n let query = \"INSERT \";\n\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) {\n query += `${this.expressionMap.onIgnore ? \" IGNORE \" : \"\"}`;\n }\n\n query += `INTO ${tableName}`;\n\n // add columns expression\n if (columnsExpression) {\n query += `(${columnsExpression})`;\n } else {\n if (!valuesExpression && (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver)) // special syntax for mysql DEFAULT VALUES insertion\n query += \"()\";\n }\n\n // add OUTPUT expression\n if (returningExpression && this.connection.driver instanceof SqlServerDriver) {\n query += ` OUTPUT ${returningExpression}`;\n }\n\n // add VALUES expression\n if (valuesExpression) {\n if (this.connection.driver instanceof OracleDriver && this.getValueSets().length > 1) {\n query += ` ${valuesExpression}`;\n } else {\n query += ` VALUES ${valuesExpression}`;\n }\n } else {\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) { // special syntax for mysql DEFAULT VALUES insertion\n query += \" VALUES ()\";\n } else {\n query += ` DEFAULT VALUES`;\n }\n }\n if (this.connection.driver.supportedUpsertType === \"on-conflict-do-update\") {\n if (this.expressionMap.onIgnore) {\n query += \" ON CONFLICT DO NOTHING \";\n } else if (this.expressionMap.onConflict) {\n query += ` ON CONFLICT ${this.expressionMap.onConflict} `;\n } else if (this.expressionMap.onUpdate) {\n const { overwrite, columns, conflict, skipUpdateIfNoValuesChanged } = this.expressionMap.onUpdate;\n\n let conflictTarget = \"ON CONFLICT\";\n\n if (Array.isArray(conflict)) {\n conflictTarget += ` ( ${conflict.map((column) => this.escape(column)).join(\", \")} )`;\n } else if (conflict) {\n conflictTarget += ` ON CONSTRAINT ${this.escape(conflict)}`;\n }\n\n if (Array.isArray(overwrite)) {\n query += ` ${conflictTarget} DO UPDATE SET `;\n query += overwrite?.map(column => `${this.escape(column)} = EXCLUDED.${this.escape(column)}`).join(\", \");\n query += \" \";\n } else if (columns) {\n query += ` ${conflictTarget} DO UPDATE SET `;\n query += columns.map(column => `${this.escape(column)} = :${column}`).join(\", \");\n query += \" \";\n }\n\n if (Array.isArray(overwrite) && skipUpdateIfNoValuesChanged && this.connection.driver instanceof PostgresDriver) {\n query += ` WHERE (`;\n query += overwrite.map(column => `${tableName}.${this.escape(column)} IS DISTINCT FROM EXCLUDED.${this.escape(column)}`).join(\" OR \");\n query += \") \";\n }\n }\n } else if (this.connection.driver.supportedUpsertType === \"on-duplicate-key-update\") {\n if (this.expressionMap.onUpdate) {\n const { overwrite, columns } = this.expressionMap.onUpdate;\n\n if (Array.isArray(overwrite)) {\n query += \" ON DUPLICATE KEY UPDATE \";\n query += overwrite.map(column => `${this.escape(column)} = VALUES(${this.escape(column)})`).join(\", \");\n query += \" \";\n } else if (Array.isArray(columns)) {\n query += \" ON DUPLICATE KEY UPDATE \";\n query += columns.map(column => `${this.escape(column)} = :${column}`).join(\", \");\n query += \" \";\n }\n }\n } else {\n if (this.expressionMap.onUpdate) {\n throw new TypeORMError(`onUpdate is not supported by the current database driver`);\n }\n }\n\n // add RETURNING expression\n if (\n returningExpression &&\n (this.connection.driver instanceof PostgresDriver ||\n this.connection.driver instanceof OracleDriver ||\n this.connection.driver instanceof CockroachDriver ||\n this.connection.driver instanceof MysqlDriver)\n ) {\n query += ` RETURNING ${returningExpression}`;\n }\n\n\n // Inserting a specific value for an auto-increment primary key in mssql requires enabling IDENTITY_INSERT\n // IDENTITY_INSERT can only be enabled for tables where there is an IDENTITY column and only if there is a value to be inserted (i.e. supplying DEFAULT is prohibited if IDENTITY_INSERT is enabled)\n if (this.connection.driver instanceof SqlServerDriver\n && this.expressionMap.mainAlias!.hasMetadata\n && this.expressionMap.mainAlias!.metadata.columns\n .filter((column) => this.expressionMap.insertColumns.length > 0 ? this.expressionMap.insertColumns.indexOf(column.propertyPath) !== -1 : column.isInsert)\n .some((column) => this.isOverridingAutoIncrementBehavior(column))\n ) {\n query = `SET IDENTITY_INSERT ${tableName} ON; ${query}; SET IDENTITY_INSERT ${tableName} OFF`;\n }\n\n return query;\n }\n\n /**\n * Gets list of columns where values must be inserted to.\n */\n protected getInsertedColumns(): ColumnMetadata[] {\n if (!this.expressionMap.mainAlias!.hasMetadata)\n return [];\n\n return this.expressionMap.mainAlias!.metadata.columns.filter(column => {\n\n // if user specified list of columns he wants to insert to, then we filter only them\n if (this.expressionMap.insertColumns.length)\n return this.expressionMap.insertColumns.indexOf(column.propertyPath) !== -1;\n\n // skip columns the user doesn't want included by default\n if (!column.isInsert) { return false; }\n\n // if user did not specified such list then return all columns except auto-increment one\n // for Oracle we return auto-increment column as well because Oracle does not support DEFAULT VALUES expression\n if (column.isGenerated && column.generationStrategy === \"increment\"\n && !(this.connection.driver instanceof OracleDriver)\n && !(this.connection.driver instanceof AbstractSqliteDriver)\n && !(this.connection.driver instanceof MysqlDriver)\n && !(this.connection.driver instanceof AuroraDataApiDriver)\n && !(this.connection.driver instanceof SqlServerDriver && this.isOverridingAutoIncrementBehavior(column)))\n return false;\n\n return true;\n });\n }\n\n /**\n * Creates a columns string where values must be inserted to for INSERT INTO expression.\n */\n protected createColumnNamesExpression(): string {\n const columns = this.getInsertedColumns();\n if (columns.length > 0)\n return columns.map(column => this.escape(column.databaseName)).join(\", \");\n\n // in the case if there are no insert columns specified and table without metadata used\n // we get columns from the inserted value map, in the case if only one inserted map is specified\n if (!this.expressionMap.mainAlias!.hasMetadata && !this.expressionMap.insertColumns.length) {\n const valueSets = this.getValueSets();\n if (valueSets.length === 1)\n return Object.keys(valueSets[0]).map(columnName => this.escape(columnName)).join(\", \");\n }\n\n // get a table name and all column database names\n return this.expressionMap.insertColumns.map(columnName => this.escape(columnName)).join(\", \");\n }\n\n /**\n * Creates list of values needs to be inserted in the VALUES expression.\n */\n protected createValuesExpression(): string {\n const valueSets = this.getValueSets();\n const columns = this.getInsertedColumns();\n\n // if column metadatas are given then apply all necessary operations with values\n if (columns.length > 0) {\n let expression = \"\";\n valueSets.forEach((valueSet, valueSetIndex) => {\n columns.forEach((column, columnIndex) => {\n if (columnIndex === 0) {\n if (this.connection.driver instanceof OracleDriver && valueSets.length > 1) {\n expression += \" SELECT \";\n } else if (this.connection.driver instanceof SapDriver && valueSets.length > 1) {\n expression += \" SELECT \";\n } else {\n expression += \"(\";\n }\n }\n\n // extract real value from the entity\n let value = column.getEntityValue(valueSet);\n\n // if column is relational and value is an object then get real referenced column value from this object\n // for example column value is { question: { id: 1 } }, value will be equal to { id: 1 }\n // and we extract \"1\" from this object\n /*if (column.referencedColumn && value instanceof Object && !(value instanceof Function)) { // todo: check if we still need it since getEntityValue already has similar code\n value = column.referencedColumn.getEntityValue(value);\n }*/\n\n\n if (!(value instanceof Function)) {\n // make sure our value is normalized by a driver\n value = this.connection.driver.preparePersistentValue(value, column);\n }\n\n // newly inserted entities always have a version equal to 1 (first version)\n // also, user-specified version must be empty\n if (column.isVersion && value === undefined) {\n expression += \"1\";\n\n // } else if (column.isNestedSetLeft) {\n // const tableName = this.connection.driver.escape(column.entityMetadata.tablePath);\n // const rightColumnName = this.connection.driver.escape(column.entityMetadata.nestedSetRightColumn!.databaseName);\n // const subQuery = `(SELECT c.max + 1 FROM (SELECT MAX(${rightColumnName}) as max from ${tableName}) c)`;\n // expression += subQuery;\n //\n // } else if (column.isNestedSetRight) {\n // const tableName = this.connection.driver.escape(column.entityMetadata.tablePath);\n // const rightColumnName = this.connection.driver.escape(column.entityMetadata.nestedSetRightColumn!.databaseName);\n // const subQuery = `(SELECT c.max + 2 FROM (SELECT MAX(${rightColumnName}) as max from ${tableName}) c)`;\n // expression += subQuery;\n\n } else if (column.isDiscriminator) {\n expression += this.createParameter(this.expressionMap.mainAlias!.metadata.discriminatorValue);\n // return \"1\";\n\n // for create and update dates we insert current date\n // no, we don't do it because this constant is already in \"default\" value of the column\n // with extended timestamp functionality, like CURRENT_TIMESTAMP(6) for example\n // } else if (column.isCreateDate || column.isUpdateDate) {\n // return \"CURRENT_TIMESTAMP\";\n\n // if column is generated uuid and database does not support its generation and custom generated value was not provided by a user - we generate a new uuid value for insertion\n } else if (column.isGenerated && column.generationStrategy === \"uuid\" && !this.connection.driver.isUUIDGenerationSupported() && value === undefined) {\n\n value = uuidv4();\n expression += this.createParameter(value);\n\n if (!(valueSetIndex in this.expressionMap.locallyGenerated)) {\n this.expressionMap.locallyGenerated[valueSetIndex] = {};\n }\n column.setEntityValue(this.expressionMap.locallyGenerated[valueSetIndex], value);\n\n // if value for this column was not provided then insert default value\n } else if (value === undefined) {\n if ((this.connection.driver instanceof OracleDriver && valueSets.length > 1) || this.connection.driver instanceof AbstractSqliteDriver || this.connection.driver instanceof SapDriver) { // unfortunately sqlite does not support DEFAULT expression in INSERT queries\n if (column.default !== undefined && column.default !== null) { // try to use default defined in the column\n expression += this.connection.driver.normalizeDefault(column);\n } else {\n expression += \"NULL\"; // otherwise simply use NULL and pray if column is nullable\n }\n\n } else {\n expression += \"DEFAULT\";\n }\n\n // support for SQL expressions in queries\n } else if (value instanceof Function) {\n expression += value();\n\n // just any other regular value\n } else {\n if (this.connection.driver instanceof SqlServerDriver)\n value = this.connection.driver.parametrizeValue(column, value);\n\n // we need to store array values in a special class to make sure parameter replacement will work correctly\n // if (value instanceof Array)\n // value = new ArrayParameter(value);\n\n\n const paramName = this.createParameter(value);\n\n if ((this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n const useLegacy = this.connection.driver.options.legacySpatialSupport;\n const geomFromText = useLegacy ? \"GeomFromText\" : \"ST_GeomFromText\";\n if (column.srid != null) {\n expression += `${geomFromText}(${paramName}, ${column.srid})`;\n } else {\n expression += `${geomFromText}(${paramName})`;\n }\n } else if (this.connection.driver instanceof PostgresDriver && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n if (column.srid != null) {\n expression += `ST_SetSRID(ST_GeomFromGeoJSON(${paramName}), ${column.srid})::${column.type}`;\n } else {\n expression += `ST_GeomFromGeoJSON(${paramName})::${column.type}`;\n }\n } else if (this.connection.driver instanceof SqlServerDriver && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n expression += column.type + \"::STGeomFromText(\" + paramName + \", \" + (column.srid || \"0\") + \")\";\n } else {\n expression += paramName;\n }\n }\n\n if (columnIndex === columns.length - 1) {\n if (valueSetIndex === valueSets.length - 1) {\n if (this.connection.driver instanceof OracleDriver && valueSets.length > 1) {\n expression += \" FROM DUAL \";\n } else if (this.connection.driver instanceof SapDriver && valueSets.length > 1) {\n expression += \" FROM dummy \";\n } else {\n expression += \")\";\n }\n } else {\n if (this.connection.driver instanceof OracleDriver && valueSets.length > 1) {\n expression += \" FROM DUAL UNION ALL \";\n } else if (this.connection.driver instanceof SapDriver && valueSets.length > 1) {\n expression += \" FROM dummy UNION ALL \";\n } else {\n expression += \"), \";\n }\n }\n } else {\n expression += \", \";\n }\n });\n });\n if (expression === \"()\")\n return \"\";\n\n return expression;\n } else { // for tables without metadata\n // get values needs to be inserted\n let expression = \"\";\n\n valueSets.forEach((valueSet, insertionIndex) => {\n const columns = Object.keys(valueSet);\n columns.forEach((columnName, columnIndex) => {\n if (columnIndex === 0) {\n expression += \"(\";\n }\n\n const value = valueSet[columnName];\n\n // support for SQL expressions in queries\n if (value instanceof Function) {\n expression += value();\n\n // if value for this column was not provided then insert default value\n } else if (value === undefined) {\n if (this.connection.driver instanceof AbstractSqliteDriver || this.connection.driver instanceof SapDriver) {\n expression += \"NULL\";\n\n } else {\n expression += \"DEFAULT\";\n }\n\n // just any other regular value\n } else {\n expression += this.createParameter(value);\n }\n\n if (columnIndex === Object.keys(valueSet).length - 1) {\n if (insertionIndex === valueSets.length - 1) {\n expression += \")\";\n } else {\n expression += \"), \";\n }\n }\n else {\n expression += \", \";\n }\n });\n });\n if (expression === \"()\")\n return \"\";\n return expression;\n }\n }\n\n /**\n * Gets array of values need to be inserted into the target table.\n */\n protected getValueSets(): ObjectLiteral[] {\n if (Array.isArray(this.expressionMap.valuesSet))\n return this.expressionMap.valuesSet;\n\n if (this.expressionMap.valuesSet instanceof Object)\n return [this.expressionMap.valuesSet];\n\n throw new InsertValuesMissingError();\n }\n\n /**\n * Checks if column is an auto-generated primary key, but the current insertion specifies a value for it.\n *\n * @param column\n */\n protected isOverridingAutoIncrementBehavior(column: ColumnMetadata): boolean {\n return column.isPrimary\n && column.isGenerated\n && column.generationStrategy === \"increment\"\n && this.getValueSets().some((valueSet) =>\n column.getEntityValue(valueSet) !== undefined\n && column.getEntityValue(valueSet) !== null\n );\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/query-builder/InsertQueryBuilder.ts"],"names":[],"mappings":"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","file":"InsertQueryBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {SapDriver} from \"../driver/sap/SapDriver\";\nimport {QueryBuilder} from \"./QueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {EntityTarget} from \"../common/EntityTarget\";\nimport {QueryDeepPartialEntity} from \"./QueryPartialEntity\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {InsertResult} from \"./result/InsertResult\";\nimport {ReturningStatementNotSupportedError} from \"../error/ReturningStatementNotSupportedError\";\nimport {InsertValuesMissingError} from \"../error/InsertValuesMissingError\";\nimport {ColumnMetadata} from \"../metadata/ColumnMetadata\";\nimport {ReturningResultsEntityUpdator} from \"./ReturningResultsEntityUpdator\";\nimport {AbstractSqliteDriver} from \"../driver/sqlite-abstract/AbstractSqliteDriver\";\nimport {BroadcasterResult} from \"../subscriber/BroadcasterResult\";\nimport {EntitySchema} from \"../entity-schema/EntitySchema\";\nimport {OracleDriver} from \"../driver/oracle/OracleDriver\";\nimport {AuroraDataApiDriver} from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport {TypeORMError} from \"../error\";\nimport {v4 as uuidv4} from \"uuid\";\nimport { InsertOrUpdateOptions } from \"./InsertOrUpdateOptions\";\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nexport class InsertQueryBuilder<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 let sql = this.createComment();\n sql += this.createInsertExpression();\n return sql.trim();\n }\n\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n async execute(): Promise<InsertResult> {\n // console.time(\".value sets\");\n const valueSets: ObjectLiteral[] = this.getValueSets();\n // console.timeEnd(\".value sets\");\n\n // If user passed empty array of entities then we don't need to do\n // anything.\n //\n // Fixes GitHub issues #3111 and #5734. If we were to let this through\n // we would run into problems downstream, like subscribers getting\n // invoked with the empty array where they expect an entity, and SQL\n // queries with an empty VALUES clause.\n if (valueSets.length === 0)\n return new InsertResult();\n\n // console.time(\"QueryBuilder.execute\");\n // console.time(\".database stuff\");\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 // console.timeEnd(\".database stuff\");\n\n // call before insertion methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n const broadcastResult = new BroadcasterResult();\n valueSets.forEach(valueSet => {\n queryRunner.broadcaster.broadcastBeforeInsertEvent(broadcastResult, this.expressionMap.mainAlias!.metadata, valueSet);\n });\n await broadcastResult.wait();\n }\n\n let declareSql: string | null = null;\n let selectOutputSql: string | null = null;\n\n // if update entity mode is enabled we may need extra columns for the returning statement\n // console.time(\".prepare returning statement\");\n const returningResultsEntityUpdator = new ReturningResultsEntityUpdator(queryRunner, this.expressionMap);\n\n const returningColumns: ColumnMetadata[] = [];\n\n if (Array.isArray(this.expressionMap.returning) && this.expressionMap.mainAlias!.hasMetadata) {\n for (const columnPath of this.expressionMap.returning) {\n returningColumns.push(\n ...this.expressionMap.mainAlias!.metadata.findColumnsWithPropertyPath(columnPath)\n );\n }\n }\n\n if (this.expressionMap.updateEntity === true && this.expressionMap.mainAlias!.hasMetadata) {\n if (!(valueSets.length > 1 && this.connection.driver instanceof OracleDriver)) {\n this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getInsertionReturningColumns();\n }\n\n returningColumns.push(...this.expressionMap.extraReturningColumns.filter(\n c => !returningColumns.includes(c)\n ));\n }\n\n if (returningColumns.length > 0 && this.connection.driver instanceof SqlServerDriver) {\n declareSql = this.connection.driver.buildTableVariableDeclaration(\"@OutputTable\", returningColumns);\n selectOutputSql = `SELECT * FROM @OutputTable`;\n }\n // console.timeEnd(\".prepare returning statement\");\n\n // execute query\n // console.time(\".getting query and parameters\");\n const [insertSql, parameters] = this.getQueryAndParameters();\n // console.timeEnd(\".getting query and parameters\");\n\n // console.time(\".query execution by database\");\n const statements = [declareSql, insertSql, selectOutputSql];\n const sql = statements.filter(s => s != null).join(\";\\n\\n\");\n\n const queryResult = await queryRunner.query(sql, parameters, true);\n\n const insertResult = InsertResult.from(queryResult);\n\n // console.timeEnd(\".query execution by database\");\n\n // load returning results and set them to the entity if entity updation is enabled\n if (this.expressionMap.updateEntity === true && this.expressionMap.mainAlias!.hasMetadata) {\n // console.time(\".updating entity\");\n await returningResultsEntityUpdator.insert(insertResult, valueSets);\n // console.timeEnd(\".updating entity\");\n }\n\n // call after insertion methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n const broadcastResult = new BroadcasterResult();\n valueSets.forEach(valueSet => {\n queryRunner.broadcaster.broadcastAfterInsertEvent(broadcastResult, this.expressionMap.mainAlias!.metadata, valueSet);\n });\n await broadcastResult.wait();\n }\n\n // close transaction if we started it\n // console.time(\".commit\");\n if (transactionStartedByUs) {\n await queryRunner.commitTransaction();\n }\n // console.timeEnd(\".commit\");\n\n return insertResult;\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\n // console.time(\".releasing connection\");\n if (queryRunner !== this.queryRunner) { // means we created our own query runner\n await queryRunner.release();\n }\n // console.timeEnd(\".releasing connection\");\n // console.timeEnd(\"QueryBuilder.execute\");\n }\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Specifies INTO which entity's table insertion will be executed.\n */\n into<T>(entityTarget: EntityTarget<T>, columns?: string[]): InsertQueryBuilder<T> {\n entityTarget = entityTarget instanceof EntitySchema ? entityTarget.options.name : entityTarget;\n const mainAlias = this.createFromAlias(entityTarget);\n this.expressionMap.setMainAlias(mainAlias);\n this.expressionMap.insertColumns = columns || [];\n return (this as any) as InsertQueryBuilder<T>;\n }\n\n /**\n * Values needs to be inserted into table.\n */\n values(values: QueryDeepPartialEntity<Entity>|QueryDeepPartialEntity<Entity>[]): this {\n this.expressionMap.valuesSet = values;\n return this;\n }\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(\"insert\")) {\n throw new ReturningStatementNotSupportedError();\n }\n\n this.expressionMap.returning = returning;\n return this;\n }\n\n /**\n * Indicates if entity must be updated after insertion operations.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n updateEntity(enabled: boolean): this {\n this.expressionMap.updateEntity = enabled;\n return this;\n }\n\n /**\n * Adds additional ON CONFLICT statement supported in postgres and cockroach.\n *\n * @deprecated Use `orIgnore` or `orUpdate`\n */\n onConflict(statement: string): this {\n this.expressionMap.onConflict = statement;\n return this;\n }\n\n /**\n * Adds additional ignore statement supported in databases.\n */\n orIgnore(statement: string | boolean = true): this {\n this.expressionMap.onIgnore = !!statement;\n return this;\n }\n\n /**\n * @deprecated\n */\n orUpdate(statement?: { columns?: string[], overwrite?: string[], conflict_target?: string | string[] }): this;\n\n orUpdate(overwrite: string[], conflictTarget?: string | string[], orUpdateOptions?: InsertOrUpdateOptions): this;\n\n /**\n * Adds additional update statement supported in databases.\n */\n orUpdate(statementOrOverwrite?: { columns?: string[], overwrite?: string[], conflict_target?: string | string[] } | string[], conflictTarget?: string | string[], orUpdateOptions?: InsertOrUpdateOptions): this {\n\n if (!Array.isArray(statementOrOverwrite)) {\n this.expressionMap.onUpdate = {\n conflict: statementOrOverwrite?.conflict_target,\n columns: statementOrOverwrite?.columns,\n overwrite: statementOrOverwrite?.overwrite,\n skipUpdateIfNoValuesChanged: orUpdateOptions?.skipUpdateIfNoValuesChanged\n };\n return this;\n }\n\n this.expressionMap.onUpdate = {\n overwrite: statementOrOverwrite,\n conflict: conflictTarget,\n skipUpdateIfNoValuesChanged: orUpdateOptions?.skipUpdateIfNoValuesChanged\n };\n return this;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates INSERT express used to perform insert query.\n */\n protected createInsertExpression() {\n const tableName = this.getTableName(this.getMainTableName());\n const valuesExpression = this.createValuesExpression(); // its important to get values before returning expression because oracle rely on native parameters and ordering of them is important\n const returningExpression =\n (this.connection.driver instanceof OracleDriver && this.getValueSets().length > 1)\n ? null\n : this.createReturningExpression(\"insert\"); // oracle doesnt support returning with multi-row insert\n const columnsExpression = this.createColumnNamesExpression();\n let query = \"INSERT \";\n\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) {\n query += `${this.expressionMap.onIgnore ? \" IGNORE \" : \"\"}`;\n }\n\n query += `INTO ${tableName}`;\n\n // add columns expression\n if (columnsExpression) {\n query += `(${columnsExpression})`;\n } else {\n if (!valuesExpression && (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver)) // special syntax for mysql DEFAULT VALUES insertion\n query += \"()\";\n }\n\n // add OUTPUT expression\n if (returningExpression && this.connection.driver instanceof SqlServerDriver) {\n query += ` OUTPUT ${returningExpression}`;\n }\n\n // add VALUES expression\n if (valuesExpression) {\n if (this.connection.driver instanceof OracleDriver && this.getValueSets().length > 1) {\n query += ` ${valuesExpression}`;\n } else {\n query += ` VALUES ${valuesExpression}`;\n }\n } else {\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) { // special syntax for mysql DEFAULT VALUES insertion\n query += \" VALUES ()\";\n } else {\n query += ` DEFAULT VALUES`;\n }\n }\n if (this.connection.driver.supportedUpsertType === \"on-conflict-do-update\") {\n if (this.expressionMap.onIgnore) {\n query += \" ON CONFLICT DO NOTHING \";\n } else if (this.expressionMap.onConflict) {\n query += ` ON CONFLICT ${this.expressionMap.onConflict} `;\n } else if (this.expressionMap.onUpdate) {\n const { overwrite, columns, conflict, skipUpdateIfNoValuesChanged } = this.expressionMap.onUpdate;\n\n let conflictTarget = \"ON CONFLICT\";\n\n if (Array.isArray(conflict)) {\n conflictTarget += ` ( ${conflict.map((column) => this.escape(column)).join(\", \")} )`;\n } else if (conflict) {\n conflictTarget += ` ON CONSTRAINT ${this.escape(conflict)}`;\n }\n\n if (Array.isArray(overwrite)) {\n query += ` ${conflictTarget} DO UPDATE SET `;\n query += overwrite?.map(column => `${this.escape(column)} = EXCLUDED.${this.escape(column)}`).join(\", \");\n query += \" \";\n } else if (columns) {\n query += ` ${conflictTarget} DO UPDATE SET `;\n query += columns.map(column => `${this.escape(column)} = :${column}`).join(\", \");\n query += \" \";\n }\n\n if (Array.isArray(overwrite) && skipUpdateIfNoValuesChanged && this.connection.driver instanceof PostgresDriver) {\n query += ` WHERE (`;\n query += overwrite.map(column => `${tableName}.${this.escape(column)} IS DISTINCT FROM EXCLUDED.${this.escape(column)}`).join(\" OR \");\n query += \") \";\n }\n }\n } else if (this.connection.driver.supportedUpsertType === \"on-duplicate-key-update\") {\n if (this.expressionMap.onUpdate) {\n const { overwrite, columns } = this.expressionMap.onUpdate;\n\n if (Array.isArray(overwrite)) {\n query += \" ON DUPLICATE KEY UPDATE \";\n query += overwrite.map(column => `${this.escape(column)} = VALUES(${this.escape(column)})`).join(\", \");\n query += \" \";\n } else if (Array.isArray(columns)) {\n query += \" ON DUPLICATE KEY UPDATE \";\n query += columns.map(column => `${this.escape(column)} = :${column}`).join(\", \");\n query += \" \";\n }\n }\n } else {\n if (this.expressionMap.onUpdate) {\n throw new TypeORMError(`onUpdate is not supported by the current database driver`);\n }\n }\n\n // add RETURNING expression\n if (\n returningExpression &&\n (this.connection.driver instanceof PostgresDriver ||\n this.connection.driver instanceof OracleDriver ||\n this.connection.driver instanceof CockroachDriver ||\n this.connection.driver instanceof MysqlDriver)\n ) {\n query += ` RETURNING ${returningExpression}`;\n }\n\n\n // Inserting a specific value for an auto-increment primary key in mssql requires enabling IDENTITY_INSERT\n // IDENTITY_INSERT can only be enabled for tables where there is an IDENTITY column and only if there is a value to be inserted (i.e. supplying DEFAULT is prohibited if IDENTITY_INSERT is enabled)\n if (this.connection.driver instanceof SqlServerDriver\n && this.expressionMap.mainAlias!.hasMetadata\n && this.expressionMap.mainAlias!.metadata.columns\n .filter((column) => this.expressionMap.insertColumns.length > 0 ? this.expressionMap.insertColumns.indexOf(column.propertyPath) !== -1 : column.isInsert)\n .some((column) => this.isOverridingAutoIncrementBehavior(column))\n ) {\n query = `SET IDENTITY_INSERT ${tableName} ON; ${query}; SET IDENTITY_INSERT ${tableName} OFF`;\n }\n\n return query;\n }\n\n /**\n * Gets list of columns where values must be inserted to.\n */\n protected getInsertedColumns(): ColumnMetadata[] {\n if (!this.expressionMap.mainAlias!.hasMetadata)\n return [];\n\n return this.expressionMap.mainAlias!.metadata.columns.filter(column => {\n\n // if user specified list of columns he wants to insert to, then we filter only them\n if (this.expressionMap.insertColumns.length)\n return this.expressionMap.insertColumns.indexOf(column.propertyPath) !== -1;\n\n // skip columns the user doesn't want included by default\n if (!column.isInsert) { return false; }\n\n // if user did not specified such list then return all columns except auto-increment one\n // for Oracle we return auto-increment column as well because Oracle does not support DEFAULT VALUES expression\n if (column.isGenerated && column.generationStrategy === \"increment\"\n && !(this.connection.driver instanceof OracleDriver)\n && !(this.connection.driver instanceof AbstractSqliteDriver)\n && !(this.connection.driver instanceof MysqlDriver)\n && !(this.connection.driver instanceof AuroraDataApiDriver)\n && !(this.connection.driver instanceof SqlServerDriver && this.isOverridingAutoIncrementBehavior(column)))\n return false;\n\n return true;\n });\n }\n\n /**\n * Creates a columns string where values must be inserted to for INSERT INTO expression.\n */\n protected createColumnNamesExpression(): string {\n const columns = this.getInsertedColumns();\n if (columns.length > 0)\n return columns.map(column => this.escape(column.databaseName)).join(\", \");\n\n // in the case if there are no insert columns specified and table without metadata used\n // we get columns from the inserted value map, in the case if only one inserted map is specified\n if (!this.expressionMap.mainAlias!.hasMetadata && !this.expressionMap.insertColumns.length) {\n const valueSets = this.getValueSets();\n if (valueSets.length === 1)\n return Object.keys(valueSets[0]).map(columnName => this.escape(columnName)).join(\", \");\n }\n\n // get a table name and all column database names\n return this.expressionMap.insertColumns.map(columnName => this.escape(columnName)).join(\", \");\n }\n\n /**\n * Creates list of values needs to be inserted in the VALUES expression.\n */\n protected createValuesExpression(): string {\n const valueSets = this.getValueSets();\n const columns = this.getInsertedColumns();\n\n // if column metadatas are given then apply all necessary operations with values\n if (columns.length > 0) {\n let expression = \"\";\n valueSets.forEach((valueSet, valueSetIndex) => {\n columns.forEach((column, columnIndex) => {\n if (columnIndex === 0) {\n if (this.connection.driver instanceof OracleDriver && valueSets.length > 1) {\n expression += \" SELECT \";\n } else if (this.connection.driver instanceof SapDriver && valueSets.length > 1) {\n expression += \" SELECT \";\n } else {\n expression += \"(\";\n }\n }\n\n // extract real value from the entity\n let value = column.getEntityValue(valueSet);\n\n // if column is relational and value is an object then get real referenced column value from this object\n // for example column value is { question: { id: 1 } }, value will be equal to { id: 1 }\n // and we extract \"1\" from this object\n /*if (column.referencedColumn && value instanceof Object && !(value instanceof Function)) { // todo: check if we still need it since getEntityValue already has similar code\n value = column.referencedColumn.getEntityValue(value);\n }*/\n\n\n if (!(value instanceof Function)) {\n // make sure our value is normalized by a driver\n value = this.connection.driver.preparePersistentValue(value, column);\n }\n\n // newly inserted entities always have a version equal to 1 (first version)\n // also, user-specified version must be empty\n if (column.isVersion && value === undefined) {\n expression += \"1\";\n\n // } else if (column.isNestedSetLeft) {\n // const tableName = this.connection.driver.escape(column.entityMetadata.tablePath);\n // const rightColumnName = this.connection.driver.escape(column.entityMetadata.nestedSetRightColumn!.databaseName);\n // const subQuery = `(SELECT c.max + 1 FROM (SELECT MAX(${rightColumnName}) as max from ${tableName}) c)`;\n // expression += subQuery;\n //\n // } else if (column.isNestedSetRight) {\n // const tableName = this.connection.driver.escape(column.entityMetadata.tablePath);\n // const rightColumnName = this.connection.driver.escape(column.entityMetadata.nestedSetRightColumn!.databaseName);\n // const subQuery = `(SELECT c.max + 2 FROM (SELECT MAX(${rightColumnName}) as max from ${tableName}) c)`;\n // expression += subQuery;\n\n } else if (column.isDiscriminator) {\n expression += this.createParameter(this.expressionMap.mainAlias!.metadata.discriminatorValue);\n // return \"1\";\n\n // for create and update dates we insert current date\n // no, we don't do it because this constant is already in \"default\" value of the column\n // with extended timestamp functionality, like CURRENT_TIMESTAMP(6) for example\n // } else if (column.isCreateDate || column.isUpdateDate) {\n // return \"CURRENT_TIMESTAMP\";\n\n // if column is generated uuid and database does not support its generation and custom generated value was not provided by a user - we generate a new uuid value for insertion\n } else if (column.isGenerated && column.generationStrategy === \"uuid\" && !this.connection.driver.isUUIDGenerationSupported() && value === undefined) {\n\n value = uuidv4();\n expression += this.createParameter(value);\n\n if (!(valueSetIndex in this.expressionMap.locallyGenerated)) {\n this.expressionMap.locallyGenerated[valueSetIndex] = {};\n }\n column.setEntityValue(this.expressionMap.locallyGenerated[valueSetIndex], value);\n\n // if value for this column was not provided then insert default value\n } else if (value === undefined) {\n if ((this.connection.driver instanceof OracleDriver && valueSets.length > 1) || this.connection.driver instanceof AbstractSqliteDriver || this.connection.driver instanceof SapDriver) { // unfortunately sqlite does not support DEFAULT expression in INSERT queries\n if (column.default !== undefined && column.default !== null) { // try to use default defined in the column\n expression += this.connection.driver.normalizeDefault(column);\n } else {\n expression += \"NULL\"; // otherwise simply use NULL and pray if column is nullable\n }\n\n } else {\n expression += \"DEFAULT\";\n }\n\n // support for SQL expressions in queries\n } else if (value instanceof Function) {\n expression += value();\n\n // just any other regular value\n } else {\n if (this.connection.driver instanceof SqlServerDriver)\n value = this.connection.driver.parametrizeValue(column, value);\n\n // we need to store array values in a special class to make sure parameter replacement will work correctly\n // if (value instanceof Array)\n // value = new ArrayParameter(value);\n\n\n const paramName = this.createParameter(value);\n\n if ((this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n const useLegacy = this.connection.driver.options.legacySpatialSupport;\n const geomFromText = useLegacy ? \"GeomFromText\" : \"ST_GeomFromText\";\n if (column.srid != null) {\n expression += `${geomFromText}(${paramName}, ${column.srid})`;\n } else {\n expression += `${geomFromText}(${paramName})`;\n }\n } else if (this.connection.driver instanceof PostgresDriver && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n if (column.srid != null) {\n expression += `ST_SetSRID(ST_GeomFromGeoJSON(${paramName}), ${column.srid})::${column.type}`;\n } else {\n expression += `ST_GeomFromGeoJSON(${paramName})::${column.type}`;\n }\n } else if (this.connection.driver instanceof SqlServerDriver && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n expression += column.type + \"::STGeomFromText(\" + paramName + \", \" + (column.srid || \"0\") + \")\";\n } else {\n expression += paramName;\n }\n }\n\n if (columnIndex === columns.length - 1) {\n if (valueSetIndex === valueSets.length - 1) {\n if (this.connection.driver instanceof OracleDriver && valueSets.length > 1) {\n expression += \" FROM DUAL \";\n } else if (this.connection.driver instanceof SapDriver && valueSets.length > 1) {\n expression += \" FROM dummy \";\n } else {\n expression += \")\";\n }\n } else {\n if (this.connection.driver instanceof OracleDriver && valueSets.length > 1) {\n expression += \" FROM DUAL UNION ALL \";\n } else if (this.connection.driver instanceof SapDriver && valueSets.length > 1) {\n expression += \" FROM dummy UNION ALL \";\n } else {\n expression += \"), \";\n }\n }\n } else {\n expression += \", \";\n }\n });\n });\n if (expression === \"()\")\n return \"\";\n\n return expression;\n } else { // for tables without metadata\n // get values needs to be inserted\n let expression = \"\";\n\n valueSets.forEach((valueSet, insertionIndex) => {\n const columns = Object.keys(valueSet);\n columns.forEach((columnName, columnIndex) => {\n if (columnIndex === 0) {\n expression += \"(\";\n }\n\n const value = valueSet[columnName];\n\n // support for SQL expressions in queries\n if (value instanceof Function) {\n expression += value();\n\n // if value for this column was not provided then insert default value\n } else if (value === undefined) {\n if (this.connection.driver instanceof AbstractSqliteDriver || this.connection.driver instanceof SapDriver) {\n expression += \"NULL\";\n\n } else {\n expression += \"DEFAULT\";\n }\n\n // just any other regular value\n } else {\n expression += this.createParameter(value);\n }\n\n if (columnIndex === Object.keys(valueSet).length - 1) {\n if (insertionIndex === valueSets.length - 1) {\n expression += \")\";\n } else {\n expression += \"), \";\n }\n }\n else {\n expression += \", \";\n }\n });\n });\n if (expression === \"()\")\n return \"\";\n return expression;\n }\n }\n\n /**\n * Gets array of values need to be inserted into the target table.\n */\n protected getValueSets(): ObjectLiteral[] {\n if (Array.isArray(this.expressionMap.valuesSet))\n return this.expressionMap.valuesSet;\n\n if (this.expressionMap.valuesSet instanceof Object)\n return [this.expressionMap.valuesSet];\n\n throw new InsertValuesMissingError();\n }\n\n /**\n * Checks if column is an auto-generated primary key, but the current insertion specifies a value for it.\n *\n * @param column\n */\n protected isOverridingAutoIncrementBehavior(column: ColumnMetadata): boolean {\n return column.isPrimary\n && column.isGenerated\n && column.generationStrategy === \"increment\"\n && this.getValueSets().some((valueSet) =>\n column.getEntityValue(valueSet) !== undefined\n && column.getEntityValue(valueSet) !== null\n );\n }\n\n}\n"],"sourceRoot":".."}
@@ -138,7 +138,7 @@ var JoinAttribute = /** @class */ (function () {
138
138
  return relation;
139
139
  }
140
140
  }
141
- throw new error_1.TypeORMError("Relation with property path " + _this.relationPropertyPath + " in entity was not found.");
141
+ throw new error_1.TypeORMError("Relation with property path ".concat(_this.relationPropertyPath, " in entity was not found."));
142
142
  };
143
143
  this.relationCache = getValue.bind(this)();
144
144
  this.relationEvaluated = true;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/JoinAttribute.ts"],"names":[],"mappings":"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","file":"JoinAttribute.js","sourcesContent":["import {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {Connection} from \"../connection/Connection\";\nimport {RelationMetadata} from \"../metadata/RelationMetadata\";\nimport {QueryBuilderUtils} from \"./QueryBuilderUtils\";\nimport {QueryExpressionMap} from \"./QueryExpressionMap\";\nimport {Alias} from \"./Alias\";\nimport {ObjectUtils} from \"../util/ObjectUtils\";\nimport { TypeORMError } from \"../error\";\n\n/**\n * Stores all join attributes which will be used to build a JOIN query.\n */\nexport class JoinAttribute {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Join direction.\n */\n direction: \"LEFT\"|\"INNER\";\n\n /**\n * Alias of the joined (destination) table.\n */\n alias: Alias;\n\n /**\n * Joined table, entity target, or relation in \"post.category\" format.\n */\n entityOrProperty: Function|string;\n\n /**\n * Extra condition applied to \"ON\" section of join.\n */\n condition?: string;\n\n /**\n * Property + alias of the object where to joined data should be mapped.\n */\n mapToProperty?: string;\n\n /**\n * Indicates if user maps one or many objects from the join.\n */\n isMappingMany?: boolean;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private connection: Connection,\n private queryExpressionMap: QueryExpressionMap,\n joinAttribute?: JoinAttribute) {\n ObjectUtils.assign(this, joinAttribute || {});\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n get isMany(): boolean {\n if (this.isMappingMany !== undefined)\n return this.isMappingMany;\n\n if (this.relation)\n return this.relation.isManyToMany || this.relation.isOneToMany;\n\n return false;\n }\n\n\n isSelectedCache: boolean;\n isSelectedEvaluated: boolean = false;\n /**\n * Indicates if this join is selected.\n */\n get isSelected(): boolean {\n if (!this.isSelectedEvaluated) {\n let getValue = () => {\n for (const select of this.queryExpressionMap.selects) {\n if (select.selection === this.alias.name)\n return true;\n\n if (this.metadata && !!this.metadata.columns.find(column => select.selection === this.alias.name + \".\" + column.propertyPath))\n return true;\n }\n\n return false;\n };\n this.isSelectedCache = getValue();\n this.isSelectedEvaluated = true;\n }\n return this.isSelectedCache;\n\n }\n\n /**\n * Name of the table which we should join.\n */\n get tablePath(): string {\n return this.metadata ? this.metadata.tablePath : this.entityOrProperty as string;\n }\n\n /**\n * Alias of the parent of this join.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"post\" is a parent alias.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get parentAlias(): string|undefined {\n if (!QueryBuilderUtils.isAliasProperty(this.entityOrProperty))\n return undefined;\n\n return this.entityOrProperty.substr(0, this.entityOrProperty.indexOf(\".\"));\n }\n\n /**\n * Relation property name of the parent.\n * This is used to understand what is joined.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"category\" is a relation property.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get relationPropertyPath(): string|undefined {\n if (!QueryBuilderUtils.isAliasProperty(this.entityOrProperty))\n return undefined;\n\n return this.entityOrProperty.substr(this.entityOrProperty.indexOf(\".\") + 1);\n }\n\n relationCache: RelationMetadata|undefined;\n relationEvaluated: boolean = false;\n /**\n * Relation of the parent.\n * This is used to understand what is joined.\n * This is available when join was made using \"post.category\" syntax.\n * Relation can be undefined if entityOrProperty is regular entity or custom table.\n */\n get relation(): RelationMetadata | undefined {\n if (!this.relationEvaluated) {\n let getValue = () => {\n if (!QueryBuilderUtils.isAliasProperty(this.entityOrProperty))\n return undefined;\n\n const relationOwnerSelection = this.queryExpressionMap.findAliasByName(this.parentAlias!);\n let relation = relationOwnerSelection.metadata.findRelationWithPropertyPath(this.relationPropertyPath!);\n\n if (relation) {\n return relation;\n }\n\n if (relationOwnerSelection.metadata.parentEntityMetadata) {\n relation = relationOwnerSelection.metadata.parentEntityMetadata.findRelationWithPropertyPath(this.relationPropertyPath!);\n if (relation) {\n return relation;\n }\n }\n\n throw new TypeORMError(`Relation with property path ${this.relationPropertyPath} in entity was not found.`);\n };\n this.relationCache = getValue.bind(this)();\n this.relationEvaluated = true;\n }\n return this.relationCache;\n }\n\n /**\n * Metadata of the joined entity.\n * If table without entity was joined, then it will return undefined.\n */\n get metadata(): EntityMetadata|undefined {\n\n // entityOrProperty is relation, e.g. \"post.category\"\n if (this.relation)\n return this.relation.inverseEntityMetadata;\n\n // entityOrProperty is Entity class\n if (this.connection.hasMetadata(this.entityOrProperty))\n return this.connection.getMetadata(this.entityOrProperty);\n\n return undefined;\n\n /*if (typeof this.entityOrProperty === \"string\") { // entityOrProperty is a custom table\n\n // first try to find entity with such name, this is needed when entity does not have a target class,\n // and its target is a string name (scenario when plain old javascript is used or entity schema is loaded from files)\n const metadata = this.connection.entityMetadatas.find(metadata => metadata.name === this.entityOrProperty);\n if (metadata)\n return metadata;\n\n // check if we have entity with such table name, and use its metadata if found\n return this.connection.entityMetadatas.find(metadata => metadata.tableName === this.entityOrProperty);\n }*/\n }\n\n /**\n * Generates alias of junction table, whose ids we get.\n */\n get junctionAlias(): string {\n if (!this.relation)\n throw new TypeORMError(`Cannot get junction table for join without relation.`);\n\n return this.relation.isOwning ? this.parentAlias + \"_\" + this.alias.name : this.alias.name + \"_\" + this.parentAlias;\n }\n\n get mapToPropertyParentAlias(): string|undefined {\n if (!this.mapToProperty)\n return undefined;\n\n return this.mapToProperty!.split(\".\")[0];\n }\n\n get mapToPropertyPropertyName(): string|undefined {\n if (!this.mapToProperty)\n return undefined;\n\n return this.mapToProperty!.split(\".\")[1];\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/query-builder/JoinAttribute.ts"],"names":[],"mappings":"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","file":"JoinAttribute.js","sourcesContent":["import {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {Connection} from \"../connection/Connection\";\nimport {RelationMetadata} from \"../metadata/RelationMetadata\";\nimport {QueryBuilderUtils} from \"./QueryBuilderUtils\";\nimport {QueryExpressionMap} from \"./QueryExpressionMap\";\nimport {Alias} from \"./Alias\";\nimport {ObjectUtils} from \"../util/ObjectUtils\";\nimport { TypeORMError } from \"../error\";\n\n/**\n * Stores all join attributes which will be used to build a JOIN query.\n */\nexport class JoinAttribute {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Join direction.\n */\n direction: \"LEFT\"|\"INNER\";\n\n /**\n * Alias of the joined (destination) table.\n */\n alias: Alias;\n\n /**\n * Joined table, entity target, or relation in \"post.category\" format.\n */\n entityOrProperty: Function|string;\n\n /**\n * Extra condition applied to \"ON\" section of join.\n */\n condition?: string;\n\n /**\n * Property + alias of the object where to joined data should be mapped.\n */\n mapToProperty?: string;\n\n /**\n * Indicates if user maps one or many objects from the join.\n */\n isMappingMany?: boolean;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private connection: Connection,\n private queryExpressionMap: QueryExpressionMap,\n joinAttribute?: JoinAttribute) {\n ObjectUtils.assign(this, joinAttribute || {});\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n get isMany(): boolean {\n if (this.isMappingMany !== undefined)\n return this.isMappingMany;\n\n if (this.relation)\n return this.relation.isManyToMany || this.relation.isOneToMany;\n\n return false;\n }\n\n\n isSelectedCache: boolean;\n isSelectedEvaluated: boolean = false;\n /**\n * Indicates if this join is selected.\n */\n get isSelected(): boolean {\n if (!this.isSelectedEvaluated) {\n let getValue = () => {\n for (const select of this.queryExpressionMap.selects) {\n if (select.selection === this.alias.name)\n return true;\n\n if (this.metadata && !!this.metadata.columns.find(column => select.selection === this.alias.name + \".\" + column.propertyPath))\n return true;\n }\n\n return false;\n };\n this.isSelectedCache = getValue();\n this.isSelectedEvaluated = true;\n }\n return this.isSelectedCache;\n\n }\n\n /**\n * Name of the table which we should join.\n */\n get tablePath(): string {\n return this.metadata ? this.metadata.tablePath : this.entityOrProperty as string;\n }\n\n /**\n * Alias of the parent of this join.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"post\" is a parent alias.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get parentAlias(): string|undefined {\n if (!QueryBuilderUtils.isAliasProperty(this.entityOrProperty))\n return undefined;\n\n return this.entityOrProperty.substr(0, this.entityOrProperty.indexOf(\".\"));\n }\n\n /**\n * Relation property name of the parent.\n * This is used to understand what is joined.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"category\" is a relation property.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get relationPropertyPath(): string|undefined {\n if (!QueryBuilderUtils.isAliasProperty(this.entityOrProperty))\n return undefined;\n\n return this.entityOrProperty.substr(this.entityOrProperty.indexOf(\".\") + 1);\n }\n\n relationCache: RelationMetadata|undefined;\n relationEvaluated: boolean = false;\n /**\n * Relation of the parent.\n * This is used to understand what is joined.\n * This is available when join was made using \"post.category\" syntax.\n * Relation can be undefined if entityOrProperty is regular entity or custom table.\n */\n get relation(): RelationMetadata | undefined {\n if (!this.relationEvaluated) {\n let getValue = () => {\n if (!QueryBuilderUtils.isAliasProperty(this.entityOrProperty))\n return undefined;\n\n const relationOwnerSelection = this.queryExpressionMap.findAliasByName(this.parentAlias!);\n let relation = relationOwnerSelection.metadata.findRelationWithPropertyPath(this.relationPropertyPath!);\n\n if (relation) {\n return relation;\n }\n\n if (relationOwnerSelection.metadata.parentEntityMetadata) {\n relation = relationOwnerSelection.metadata.parentEntityMetadata.findRelationWithPropertyPath(this.relationPropertyPath!);\n if (relation) {\n return relation;\n }\n }\n\n throw new TypeORMError(`Relation with property path ${this.relationPropertyPath} in entity was not found.`);\n };\n this.relationCache = getValue.bind(this)();\n this.relationEvaluated = true;\n }\n return this.relationCache;\n }\n\n /**\n * Metadata of the joined entity.\n * If table without entity was joined, then it will return undefined.\n */\n get metadata(): EntityMetadata|undefined {\n\n // entityOrProperty is relation, e.g. \"post.category\"\n if (this.relation)\n return this.relation.inverseEntityMetadata;\n\n // entityOrProperty is Entity class\n if (this.connection.hasMetadata(this.entityOrProperty))\n return this.connection.getMetadata(this.entityOrProperty);\n\n return undefined;\n\n /*if (typeof this.entityOrProperty === \"string\") { // entityOrProperty is a custom table\n\n // first try to find entity with such name, this is needed when entity does not have a target class,\n // and its target is a string name (scenario when plain old javascript is used or entity schema is loaded from files)\n const metadata = this.connection.entityMetadatas.find(metadata => metadata.name === this.entityOrProperty);\n if (metadata)\n return metadata;\n\n // check if we have entity with such table name, and use its metadata if found\n return this.connection.entityMetadatas.find(metadata => metadata.tableName === this.entityOrProperty);\n }*/\n }\n\n /**\n * Generates alias of junction table, whose ids we get.\n */\n get junctionAlias(): string {\n if (!this.relation)\n throw new TypeORMError(`Cannot get junction table for join without relation.`);\n\n return this.relation.isOwning ? this.parentAlias + \"_\" + this.alias.name : this.alias.name + \"_\" + this.parentAlias;\n }\n\n get mapToPropertyParentAlias(): string|undefined {\n if (!this.mapToProperty)\n return undefined;\n\n return this.mapToProperty!.split(\".\")[0];\n }\n\n get mapToPropertyPropertyName(): string|undefined {\n if (!this.mapToProperty)\n return undefined;\n\n return this.mapToProperty!.split(\".\")[1];\n }\n\n}\n"],"sourceRoot":".."}