typeorm 0.3.20-dev.fa86f6f → 0.3.20

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 (465) hide show
  1. package/README.md +1 -1
  2. package/browser/cache/DbQueryResultCache.js +1 -1
  3. package/browser/cache/DbQueryResultCache.js.map +1 -1
  4. package/browser/cache/QueryResultCacheFactory.js.map +1 -1
  5. package/browser/cache/RedisQueryResultCache.js +1 -1
  6. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  7. package/browser/cli-ts-node-esm.js.map +1 -1
  8. package/browser/connection/ConnectionManager.js.map +1 -1
  9. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  10. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  11. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  12. package/browser/container.js.map +1 -1
  13. package/browser/data-source/DataSource.js +3 -1
  14. package/browser/data-source/DataSource.js.map +1 -1
  15. package/browser/decorator/Unique.js.map +1 -1
  16. package/browser/decorator/columns/Column.js.map +1 -1
  17. package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
  18. package/browser/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  19. package/browser/decorator/columns/VirtualColumn.js +1 -1
  20. package/browser/decorator/columns/VirtualColumn.js.map +1 -1
  21. package/browser/decorator/entity/ChildEntity.js.map +1 -1
  22. package/browser/decorator/relations/ManyToMany.js.map +1 -1
  23. package/browser/decorator/relations/ManyToOne.js.map +1 -1
  24. package/browser/decorator/relations/OneToMany.js.map +1 -1
  25. package/browser/decorator/relations/OneToOne.js.map +1 -1
  26. package/browser/driver/DriverFactory.js.map +1 -1
  27. package/browser/driver/DriverUtils.js.map +1 -1
  28. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +10 -10
  29. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  30. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +2 -2
  31. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  32. package/browser/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  33. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js +2 -2
  34. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  35. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  36. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  37. package/browser/driver/capacitor/CapacitorDriver.js.map +1 -1
  38. package/browser/driver/capacitor/CapacitorQueryRunner.js +2 -2
  39. package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  40. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  41. package/browser/driver/cockroachdb/CockroachQueryRunner.js +3 -3
  42. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  43. package/browser/driver/cordova/CordovaDriver.js.map +1 -1
  44. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  45. package/browser/driver/expo/ExpoDriver.js.map +1 -1
  46. package/browser/driver/expo/ExpoQueryRunner.js +2 -2
  47. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  48. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  49. package/browser/driver/mysql/MysqlDriver.js +12 -14
  50. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  51. package/browser/driver/mysql/MysqlQueryRunner.js +1 -1
  52. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  53. package/browser/driver/nativescript/NativescriptDriver.js.map +1 -1
  54. package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  55. package/browser/driver/oracle/OracleDriver.js +18 -10
  56. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  57. package/browser/driver/oracle/OracleQueryRunner.js +8 -10
  58. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  59. package/browser/driver/postgres/PostgresDriver.js +11 -6
  60. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  61. package/browser/driver/postgres/PostgresQueryRunner.d.ts +1 -1
  62. package/browser/driver/postgres/PostgresQueryRunner.js +31 -12
  63. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  64. package/browser/driver/react-native/ReactNativeDriver.js +4 -6
  65. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  66. package/browser/driver/react-native/ReactNativeQueryRunner.js +2 -2
  67. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  68. package/browser/driver/sap/SapDriver.js.map +1 -1
  69. package/browser/driver/sap/SapQueryRunner.js +4 -4
  70. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  71. package/browser/driver/spanner/SpannerDriver.js.map +1 -1
  72. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
  73. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  74. package/browser/driver/sqlite/SqliteQueryRunner.js +3 -2
  75. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  76. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -6
  77. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  78. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +4 -4
  79. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  80. package/browser/driver/sqljs/SqljsDriver.js +1 -2
  81. package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
  82. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  83. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  84. package/browser/driver/sqlserver/SqlServerQueryRunner.js +9 -7
  85. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  86. package/browser/driver/types/ColumnTypes.d.ts +1 -1
  87. package/browser/driver/types/ColumnTypes.js.map +1 -1
  88. package/browser/entity-manager/EntityManager.d.ts +2 -2
  89. package/browser/entity-manager/EntityManager.js.map +1 -1
  90. package/browser/entity-manager/MongoEntityManager.js +1 -1
  91. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  92. package/browser/entity-schema/EntitySchemaTransformer.js +2 -3
  93. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  94. package/browser/error/EntityMetadataNotFoundError.js.map +1 -1
  95. package/browser/error/EntityNotFoundError.js.map +1 -1
  96. package/browser/error/FindRelationsNotFoundError.js.map +1 -1
  97. package/browser/error/MissingJoinColumnError.js.map +1 -1
  98. package/browser/error/MissingJoinTableError.js.map +1 -1
  99. package/browser/error/QueryFailedError.js.map +1 -1
  100. package/browser/error/RepositoryNotTreeError.js.map +1 -1
  101. package/browser/error/TypeORMError.js.map +1 -1
  102. package/browser/find-options/FindOperator.js.map +1 -1
  103. package/browser/find-options/FindOptionsUtils.js +1 -1
  104. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  105. package/browser/find-options/operator/Raw.js.map +1 -1
  106. package/browser/globals.js.map +1 -1
  107. package/browser/logger/AbstractLogger.js.map +1 -1
  108. package/browser/logger/AdvancedConsoleLogger.js +1 -2
  109. package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
  110. package/browser/logger/DebugLogger.js +1 -2
  111. package/browser/logger/DebugLogger.js.map +1 -1
  112. package/browser/logger/FileLogger.js +2 -3
  113. package/browser/logger/FileLogger.js.map +1 -1
  114. package/browser/logger/LoggerFactory.js.map +1 -1
  115. package/browser/logger/SimpleConsoleLogger.js +1 -2
  116. package/browser/logger/SimpleConsoleLogger.js.map +1 -1
  117. package/browser/metadata/CheckMetadata.js.map +1 -1
  118. package/browser/metadata/ColumnMetadata.js +1 -6
  119. package/browser/metadata/ColumnMetadata.js.map +1 -1
  120. package/browser/metadata/EmbeddedMetadata.js +1 -1
  121. package/browser/metadata/EmbeddedMetadata.js.map +1 -1
  122. package/browser/metadata/EntityListenerMetadata.js.map +1 -1
  123. package/browser/metadata/EntityMetadata.js +3 -7
  124. package/browser/metadata/EntityMetadata.js.map +1 -1
  125. package/browser/metadata/ExclusionMetadata.js.map +1 -1
  126. package/browser/metadata/IndexMetadata.js.map +1 -1
  127. package/browser/metadata/RelationIdMetadata.js.map +1 -1
  128. package/browser/metadata/RelationMetadata.js.map +1 -1
  129. package/browser/metadata/UniqueMetadata.js.map +1 -1
  130. package/browser/metadata-args/MetadataArgsStorage.js.map +1 -1
  131. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  132. package/browser/metadata-builder/EntityMetadataBuilder.js +5 -8
  133. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  134. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  135. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +7 -8
  136. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  137. package/browser/metadata-builder/MetadataUtils.js.map +1 -1
  138. package/browser/metadata-builder/RelationJoinColumnBuilder.js +2 -3
  139. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  140. package/browser/migration/MigrationExecutor.js +2 -2
  141. package/browser/migration/MigrationExecutor.js.map +1 -1
  142. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  143. package/browser/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -1
  144. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  145. package/browser/persistence/Subject.js.map +1 -1
  146. package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  147. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  148. package/browser/persistence/SubjectExecutor.js.map +1 -1
  149. package/browser/persistence/SubjectTopoligicalSorter.js.map +1 -1
  150. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  151. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  152. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +1 -2
  153. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  154. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  155. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  156. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  157. package/browser/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  158. package/browser/platform/BrowserPlatformTools.js.map +1 -1
  159. package/browser/platform/PlatformTools.d.ts +3 -0
  160. package/browser/platform/PlatformTools.js.map +1 -1
  161. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  162. package/browser/query-builder/InsertQueryBuilder.js +15 -15
  163. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  164. package/browser/query-builder/JoinAttribute.js.map +1 -1
  165. package/browser/query-builder/QueryBuilder.d.ts +1 -1
  166. package/browser/query-builder/QueryBuilder.js +10 -11
  167. package/browser/query-builder/QueryBuilder.js.map +1 -1
  168. package/browser/query-builder/QueryExpressionMap.js +2 -2
  169. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  170. package/browser/query-builder/RelationIdLoader.js.map +1 -1
  171. package/browser/query-builder/RelationLoader.js.map +1 -1
  172. package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
  173. package/browser/query-builder/RelationRemover.js.map +1 -1
  174. package/browser/query-builder/RelationUpdater.js.map +1 -1
  175. package/browser/query-builder/ReturningResultsEntityUpdator.js +5 -2
  176. package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  177. package/browser/query-builder/SelectQueryBuilder.d.ts +4 -4
  178. package/browser/query-builder/SelectQueryBuilder.js +23 -22
  179. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  180. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  181. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  182. package/browser/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  183. package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +2 -2
  184. package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  185. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  186. package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +2 -2
  187. package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  188. package/browser/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  189. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  190. package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  191. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +0 -9
  192. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +0 -28
  193. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  194. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  195. package/browser/query-runner/QueryLock.js.map +1 -1
  196. package/browser/repository/BaseEntity.js.map +1 -1
  197. package/browser/repository/Repository.js.map +1 -1
  198. package/browser/repository/TreeRepository.js.map +1 -1
  199. package/browser/schema-builder/RdbmsSchemaBuilder.js +2 -1
  200. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  201. package/browser/schema-builder/table/Table.js +2 -2
  202. package/browser/schema-builder/table/Table.js.map +1 -1
  203. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  204. package/browser/schema-builder/util/ViewUtils.js.map +1 -1
  205. package/browser/schema-builder/view/View.js.map +1 -1
  206. package/browser/subscriber/Broadcaster.js +6 -6
  207. package/browser/subscriber/Broadcaster.js.map +1 -1
  208. package/browser/subscriber/BroadcasterResult.js.map +1 -1
  209. package/browser/util/ApplyValueTransformers.js.map +1 -1
  210. package/browser/util/DateUtils.js.map +1 -1
  211. package/browser/util/DepGraph.js +2 -2
  212. package/browser/util/DepGraph.js.map +1 -1
  213. package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
  214. package/browser/util/ImportUtils.js +1 -1
  215. package/browser/util/ImportUtils.js.map +1 -1
  216. package/browser/util/ObjectUtils.js.map +1 -1
  217. package/browser/util/OrmUtils.js.map +1 -1
  218. package/browser/util/PathUtils.js +1 -1
  219. package/browser/util/PathUtils.js.map +1 -1
  220. package/browser/util/RandomGenerator.js.map +1 -1
  221. package/browser/util/StringUtils.js.map +1 -1
  222. package/browser/util/TreeRepositoryUtils.js +3 -6
  223. package/browser/util/TreeRepositoryUtils.js.map +1 -1
  224. package/cache/DbQueryResultCache.js +1 -1
  225. package/cache/DbQueryResultCache.js.map +1 -1
  226. package/cache/QueryResultCacheFactory.js.map +1 -1
  227. package/cache/RedisQueryResultCache.js +1 -1
  228. package/cache/RedisQueryResultCache.js.map +1 -1
  229. package/cli-ts-node-esm.js.map +1 -1
  230. package/commands/CacheClearCommand.js.map +1 -1
  231. package/commands/CommandUtils.js.map +1 -1
  232. package/commands/EntityCreateCommand.js.map +1 -1
  233. package/commands/InitCommand.js +1 -1
  234. package/commands/InitCommand.js.map +1 -1
  235. package/commands/MigrationCreateCommand.js.map +1 -1
  236. package/commands/MigrationGenerateCommand.js.map +1 -1
  237. package/commands/MigrationRevertCommand.js +2 -2
  238. package/commands/MigrationRevertCommand.js.map +1 -1
  239. package/commands/MigrationRunCommand.js +2 -2
  240. package/commands/MigrationRunCommand.js.map +1 -1
  241. package/commands/MigrationShowCommand.js.map +1 -1
  242. package/commands/QueryCommand.js.map +1 -1
  243. package/commands/SchemaDropCommand.js.map +1 -1
  244. package/commands/SchemaLogCommand.js.map +1 -1
  245. package/commands/SchemaSyncCommand.js.map +1 -1
  246. package/commands/SubscriberCreateCommand.js.map +1 -1
  247. package/commands/VersionCommand.js.map +1 -1
  248. package/connection/ConnectionManager.js.map +1 -1
  249. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  250. package/connection/ConnectionOptionsReader.js.map +1 -1
  251. package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  252. package/container.js.map +1 -1
  253. package/data-source/DataSource.js +3 -1
  254. package/data-source/DataSource.js.map +1 -1
  255. package/decorator/Unique.js.map +1 -1
  256. package/decorator/columns/Column.js.map +1 -1
  257. package/decorator/columns/PrimaryColumn.js.map +1 -1
  258. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  259. package/decorator/columns/VirtualColumn.js +1 -1
  260. package/decorator/columns/VirtualColumn.js.map +1 -1
  261. package/decorator/entity/ChildEntity.js.map +1 -1
  262. package/decorator/relations/ManyToMany.js.map +1 -1
  263. package/decorator/relations/ManyToOne.js.map +1 -1
  264. package/decorator/relations/OneToMany.js.map +1 -1
  265. package/decorator/relations/OneToOne.js.map +1 -1
  266. package/driver/DriverFactory.js.map +1 -1
  267. package/driver/DriverUtils.js.map +1 -1
  268. package/driver/aurora-mysql/AuroraMysqlDriver.js +10 -10
  269. package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  270. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +2 -2
  271. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  272. package/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  273. package/driver/aurora-postgres/AuroraPostgresQueryRunner.js +2 -2
  274. package/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  275. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  276. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  277. package/driver/capacitor/CapacitorDriver.js.map +1 -1
  278. package/driver/capacitor/CapacitorQueryRunner.js +2 -2
  279. package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  280. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  281. package/driver/cockroachdb/CockroachQueryRunner.js +3 -3
  282. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  283. package/driver/cordova/CordovaDriver.js.map +1 -1
  284. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  285. package/driver/expo/ExpoDriver.js.map +1 -1
  286. package/driver/expo/ExpoQueryRunner.js +2 -2
  287. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  288. package/driver/mongodb/MongoDriver.js.map +1 -1
  289. package/driver/mysql/MysqlDriver.js +12 -14
  290. package/driver/mysql/MysqlDriver.js.map +1 -1
  291. package/driver/mysql/MysqlQueryRunner.js +1 -1
  292. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  293. package/driver/nativescript/NativescriptDriver.js.map +1 -1
  294. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  295. package/driver/oracle/OracleDriver.js +18 -10
  296. package/driver/oracle/OracleDriver.js.map +1 -1
  297. package/driver/oracle/OracleQueryRunner.js +8 -10
  298. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  299. package/driver/postgres/PostgresDriver.js +11 -6
  300. package/driver/postgres/PostgresDriver.js.map +1 -1
  301. package/driver/postgres/PostgresQueryRunner.d.ts +1 -1
  302. package/driver/postgres/PostgresQueryRunner.js +31 -12
  303. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  304. package/driver/react-native/ReactNativeDriver.js +4 -6
  305. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  306. package/driver/react-native/ReactNativeQueryRunner.js +2 -2
  307. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  308. package/driver/sap/SapDriver.js.map +1 -1
  309. package/driver/sap/SapQueryRunner.js +4 -4
  310. package/driver/sap/SapQueryRunner.js.map +1 -1
  311. package/driver/spanner/SpannerDriver.js.map +1 -1
  312. package/driver/spanner/SpannerQueryRunner.js.map +1 -1
  313. package/driver/sqlite/SqliteDriver.js.map +1 -1
  314. package/driver/sqlite/SqliteQueryRunner.js +3 -2
  315. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  316. package/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -6
  317. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  318. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +4 -4
  319. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  320. package/driver/sqljs/SqljsDriver.js +1 -2
  321. package/driver/sqljs/SqljsDriver.js.map +1 -1
  322. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  323. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  324. package/driver/sqlserver/SqlServerQueryRunner.js +9 -7
  325. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  326. package/driver/types/ColumnTypes.d.ts +1 -1
  327. package/driver/types/ColumnTypes.js.map +1 -1
  328. package/driver/types/MetadataTableType.js +1 -1
  329. package/driver/types/MetadataTableType.js.map +1 -1
  330. package/entity-manager/EntityManager.d.ts +2 -2
  331. package/entity-manager/EntityManager.js.map +1 -1
  332. package/entity-manager/MongoEntityManager.js +1 -1
  333. package/entity-manager/MongoEntityManager.js.map +1 -1
  334. package/entity-schema/EntitySchemaTransformer.js +2 -3
  335. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  336. package/error/EntityMetadataNotFoundError.js.map +1 -1
  337. package/error/EntityNotFoundError.js.map +1 -1
  338. package/error/FindRelationsNotFoundError.js.map +1 -1
  339. package/error/MissingJoinColumnError.js.map +1 -1
  340. package/error/MissingJoinTableError.js.map +1 -1
  341. package/error/QueryFailedError.js.map +1 -1
  342. package/error/RepositoryNotTreeError.js.map +1 -1
  343. package/error/TypeORMError.js.map +1 -1
  344. package/find-options/FindOperator.js.map +1 -1
  345. package/find-options/FindOptionsUtils.js +1 -1
  346. package/find-options/FindOptionsUtils.js.map +1 -1
  347. package/find-options/operator/Raw.js.map +1 -1
  348. package/globals.js.map +1 -1
  349. package/logger/AbstractLogger.js.map +1 -1
  350. package/logger/AdvancedConsoleLogger.js +1 -2
  351. package/logger/AdvancedConsoleLogger.js.map +1 -1
  352. package/logger/DebugLogger.js +1 -2
  353. package/logger/DebugLogger.js.map +1 -1
  354. package/logger/FileLogger.js +2 -3
  355. package/logger/FileLogger.js.map +1 -1
  356. package/logger/LoggerFactory.js.map +1 -1
  357. package/logger/SimpleConsoleLogger.js +1 -2
  358. package/logger/SimpleConsoleLogger.js.map +1 -1
  359. package/metadata/CheckMetadata.js.map +1 -1
  360. package/metadata/ColumnMetadata.js +1 -6
  361. package/metadata/ColumnMetadata.js.map +1 -1
  362. package/metadata/EmbeddedMetadata.js +1 -1
  363. package/metadata/EmbeddedMetadata.js.map +1 -1
  364. package/metadata/EntityListenerMetadata.js.map +1 -1
  365. package/metadata/EntityMetadata.js +3 -7
  366. package/metadata/EntityMetadata.js.map +1 -1
  367. package/metadata/ExclusionMetadata.js.map +1 -1
  368. package/metadata/IndexMetadata.js.map +1 -1
  369. package/metadata/RelationIdMetadata.js.map +1 -1
  370. package/metadata/RelationMetadata.js.map +1 -1
  371. package/metadata/UniqueMetadata.js.map +1 -1
  372. package/metadata-args/MetadataArgsStorage.js.map +1 -1
  373. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  374. package/metadata-builder/EntityMetadataBuilder.js +5 -8
  375. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  376. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  377. package/metadata-builder/JunctionEntityMetadataBuilder.js +7 -8
  378. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  379. package/metadata-builder/MetadataUtils.js.map +1 -1
  380. package/metadata-builder/RelationJoinColumnBuilder.js +2 -3
  381. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  382. package/migration/MigrationExecutor.js +2 -2
  383. package/migration/MigrationExecutor.js.map +1 -1
  384. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  385. package/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -1
  386. package/package.json +276 -1
  387. package/persistence/EntityPersistExecutor.js.map +1 -1
  388. package/persistence/Subject.js.map +1 -1
  389. package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  390. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  391. package/persistence/SubjectExecutor.js.map +1 -1
  392. package/persistence/SubjectTopoligicalSorter.js.map +1 -1
  393. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  394. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  395. package/persistence/subject-builder/OneToManySubjectBuilder.js +1 -2
  396. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  397. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  398. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  399. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  400. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  401. package/platform/PlatformTools.d.ts +3 -0
  402. package/platform/PlatformTools.js.map +1 -1
  403. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  404. package/query-builder/InsertQueryBuilder.js +15 -15
  405. package/query-builder/InsertQueryBuilder.js.map +1 -1
  406. package/query-builder/JoinAttribute.js.map +1 -1
  407. package/query-builder/QueryBuilder.d.ts +1 -1
  408. package/query-builder/QueryBuilder.js +10 -11
  409. package/query-builder/QueryBuilder.js.map +1 -1
  410. package/query-builder/QueryExpressionMap.js +2 -2
  411. package/query-builder/QueryExpressionMap.js.map +1 -1
  412. package/query-builder/RelationIdLoader.js.map +1 -1
  413. package/query-builder/RelationLoader.js.map +1 -1
  414. package/query-builder/RelationQueryBuilder.js.map +1 -1
  415. package/query-builder/RelationRemover.js.map +1 -1
  416. package/query-builder/RelationUpdater.js.map +1 -1
  417. package/query-builder/ReturningResultsEntityUpdator.js +5 -2
  418. package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  419. package/query-builder/SelectQueryBuilder.d.ts +4 -4
  420. package/query-builder/SelectQueryBuilder.js +23 -22
  421. package/query-builder/SelectQueryBuilder.js.map +1 -1
  422. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  423. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  424. package/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  425. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +2 -2
  426. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  427. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  428. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +2 -2
  429. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  430. package/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  431. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  432. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  433. package/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +0 -9
  434. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +0 -28
  435. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  436. package/query-runner/BaseQueryRunner.js.map +1 -1
  437. package/query-runner/QueryLock.js.map +1 -1
  438. package/repository/BaseEntity.js.map +1 -1
  439. package/repository/Repository.js.map +1 -1
  440. package/repository/TreeRepository.js.map +1 -1
  441. package/schema-builder/RdbmsSchemaBuilder.js +2 -1
  442. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  443. package/schema-builder/table/Table.js +2 -2
  444. package/schema-builder/table/Table.js.map +1 -1
  445. package/schema-builder/table/TableColumn.js.map +1 -1
  446. package/schema-builder/util/ViewUtils.js.map +1 -1
  447. package/schema-builder/view/View.js.map +1 -1
  448. package/subscriber/Broadcaster.js +6 -6
  449. package/subscriber/Broadcaster.js.map +1 -1
  450. package/subscriber/BroadcasterResult.js.map +1 -1
  451. package/util/ApplyValueTransformers.js.map +1 -1
  452. package/util/DateUtils.js.map +1 -1
  453. package/util/DepGraph.js +2 -2
  454. package/util/DepGraph.js.map +1 -1
  455. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  456. package/util/ImportUtils.js +1 -1
  457. package/util/ImportUtils.js.map +1 -1
  458. package/util/ObjectUtils.js.map +1 -1
  459. package/util/OrmUtils.js.map +1 -1
  460. package/util/PathUtils.js +1 -1
  461. package/util/PathUtils.js.map +1 -1
  462. package/util/RandomGenerator.js.map +1 -1
  463. package/util/StringUtils.js.map +1 -1
  464. package/util/TreeRepositoryUtils.js +3 -6
  465. package/util/TreeRepositoryUtils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/RelationRemover.ts"],"names":[],"mappings":"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","file":"RelationRemover.js","sourcesContent":["import { QueryBuilder } from \"./QueryBuilder\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationRemover {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected queryBuilder: QueryBuilder<any>,\n protected expressionMap: QueryExpressionMap,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs remove operation on a relation.\n */\n async remove(value: any | any[]): Promise<void> {\n const relation = this.expressionMap.relationMetadata\n\n if (relation.isOneToMany) {\n // if (this.expressionMap.of instanceof Array)\n // throw new TypeORMError(`You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.`);\n\n // DELETE FROM post WHERE post.categoryId = of AND post.id = id\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n\n const updateSet: ObjectLiteral = {}\n relation.inverseRelation!.joinColumns.forEach((column) => {\n updateSet[column.propertyName] = null\n })\n\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n ofs.forEach((of, ofIndex) => {\n conditions.push(\n ...values.map((value, valueIndex) => {\n return [\n ...relation.inverseRelation!.joinColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"joinColumn_\" +\n ofIndex +\n \"_\" +\n valueIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(of)\n ? column.referencedColumn!.getEntityValue(\n of,\n )\n : of\n return `${column.propertyPath} = :${parameterName}`\n },\n ),\n ...relation.inverseRelation!.entityMetadata.primaryColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"primaryColumn_\" +\n valueIndex +\n \"_\" +\n valueIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(value)\n ? column.getEntityValue(value)\n : value\n return `${column.propertyPath} = :${parameterName}`\n },\n ),\n ].join(\" AND \")\n }),\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n if (!condition) return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .where(condition)\n .setParameters(parameters)\n .execute()\n } else {\n // many to many\n\n const junctionMetadata = relation.junctionEntityMetadata!\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n const firstColumnValues = relation.isManyToManyOwner ? ofs : values\n const secondColumnValues = relation.isManyToManyOwner ? values : ofs\n\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n firstColumnValues.forEach((firstColumnVal, firstColumnValIndex) => {\n conditions.push(\n ...secondColumnValues.map(\n (secondColumnVal, secondColumnValIndex) => {\n return [\n ...junctionMetadata.ownerColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"firstValue_\" +\n firstColumnValIndex +\n \"_\" +\n secondColumnValIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(firstColumnVal)\n ? column.referencedColumn!.getEntityValue(\n firstColumnVal,\n )\n : firstColumnVal\n return `${column.databaseName} = :${parameterName}`\n },\n ),\n ...junctionMetadata.inverseColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"secondValue_\" +\n firstColumnValIndex +\n \"_\" +\n secondColumnValIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(\n secondColumnVal,\n )\n ? column.referencedColumn!.getEntityValue(\n secondColumnVal,\n )\n : secondColumnVal\n return `${column.databaseName} = :${parameterName}`\n },\n ),\n ].join(\" AND \")\n },\n ),\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n\n await this.queryBuilder\n .createQueryBuilder()\n .delete()\n .from(junctionMetadata.tableName)\n .where(condition)\n .setParameters(parameters)\n .execute()\n }\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/query-builder/RelationRemover.ts"],"names":[],"mappings":"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","file":"RelationRemover.js","sourcesContent":["import { QueryBuilder } from \"./QueryBuilder\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationRemover {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected queryBuilder: QueryBuilder<any>,\n protected expressionMap: QueryExpressionMap,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs remove operation on a relation.\n */\n async remove(value: any | any[]): Promise<void> {\n const relation = this.expressionMap.relationMetadata\n\n if (relation.isOneToMany) {\n // if (this.expressionMap.of instanceof Array)\n // throw new TypeORMError(`You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.`);\n\n // DELETE FROM post WHERE post.categoryId = of AND post.id = id\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n\n const updateSet: ObjectLiteral = {}\n relation.inverseRelation!.joinColumns.forEach((column) => {\n updateSet[column.propertyName] = null\n })\n\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n ofs.forEach((of, ofIndex) => {\n conditions.push(\n ...values.map((value, valueIndex) => {\n return [\n ...relation.inverseRelation!.joinColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"joinColumn_\" +\n ofIndex +\n \"_\" +\n valueIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(of)\n ? column.referencedColumn!.getEntityValue(\n of,\n )\n : of\n return `${column.propertyPath} = :${parameterName}`\n },\n ),\n ...relation.inverseRelation!.entityMetadata.primaryColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"primaryColumn_\" +\n valueIndex +\n \"_\" +\n valueIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(value)\n ? column.getEntityValue(value)\n : value\n return `${column.propertyPath} = :${parameterName}`\n },\n ),\n ].join(\" AND \")\n }),\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n if (!condition) return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .where(condition)\n .setParameters(parameters)\n .execute()\n } else {\n // many to many\n\n const junctionMetadata = relation.junctionEntityMetadata!\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n const firstColumnValues = relation.isManyToManyOwner ? ofs : values\n const secondColumnValues = relation.isManyToManyOwner ? values : ofs\n\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n firstColumnValues.forEach((firstColumnVal, firstColumnValIndex) => {\n conditions.push(\n ...secondColumnValues.map(\n (secondColumnVal, secondColumnValIndex) => {\n return [\n ...junctionMetadata.ownerColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"firstValue_\" +\n firstColumnValIndex +\n \"_\" +\n secondColumnValIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(firstColumnVal)\n ? column.referencedColumn!.getEntityValue(\n firstColumnVal,\n )\n : firstColumnVal\n return `${column.databaseName} = :${parameterName}`\n },\n ),\n ...junctionMetadata.inverseColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"secondValue_\" +\n firstColumnValIndex +\n \"_\" +\n secondColumnValIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(\n secondColumnVal,\n )\n ? column.referencedColumn!.getEntityValue(\n secondColumnVal,\n )\n : secondColumnVal\n return `${column.databaseName} = :${parameterName}`\n },\n ),\n ].join(\" AND \")\n },\n ),\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n\n await this.queryBuilder\n .createQueryBuilder()\n .delete()\n .from(junctionMetadata.tableName)\n .where(condition)\n .setParameters(parameters)\n .execute()\n }\n }\n}\n"],"sourceRoot":".."}
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/RelationUpdater.ts"],"names":[],"mappings":"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","file":"RelationUpdater.js","sourcesContent":["import { QueryBuilder } from \"./QueryBuilder\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\nimport { TypeORMError } from \"../error\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationUpdater {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected queryBuilder: QueryBuilder<any>,\n protected expressionMap: QueryExpressionMap,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs set or add operation on a relation.\n */\n async update(value: any | any[]): Promise<void> {\n const relation = this.expressionMap.relationMetadata\n\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n const updateSet = relation.joinColumns.reduce(\n (updateSet, joinColumn) => {\n const relationValue = ObjectUtils.isObject(value)\n ? joinColumn.referencedColumn!.getEntityValue(value)\n : value\n joinColumn.setEntityValue(updateSet, relationValue)\n return updateSet\n },\n {} as any,\n )\n\n if (\n !this.expressionMap.of ||\n (Array.isArray(this.expressionMap.of) &&\n !this.expressionMap.of.length)\n )\n return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.entityMetadata.target)\n .set(updateSet)\n .whereInIds(this.expressionMap.of)\n .execute()\n } else if (\n (relation.isOneToOneNotOwner || relation.isOneToMany) &&\n value === null\n ) {\n // we handle null a bit different way\n\n const updateSet: ObjectLiteral = {}\n relation.inverseRelation!.joinColumns.forEach((column) => {\n updateSet[column.propertyName] = null\n })\n\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n ofs.forEach((of, ofIndex) => {\n relation.inverseRelation!.joinColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"joinColumn_\" + ofIndex + \"_\" + columnIndex\n parameters[parameterName] = ObjectUtils.isObject(of)\n ? column.referencedColumn!.getEntityValue(of)\n : of\n conditions.push(\n `${column.propertyPath} = :${parameterName}`,\n )\n },\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n if (!condition) return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .where(condition)\n .setParameters(parameters)\n .execute()\n } else if (relation.isOneToOneNotOwner || relation.isOneToMany) {\n if (Array.isArray(this.expressionMap.of))\n throw new TypeORMError(\n `You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.`,\n )\n\n const of = this.expressionMap.of\n const updateSet = relation.inverseRelation!.joinColumns.reduce(\n (updateSet, joinColumn) => {\n const relationValue = ObjectUtils.isObject(of)\n ? joinColumn.referencedColumn!.getEntityValue(of)\n : of\n joinColumn.setEntityValue(updateSet, relationValue)\n return updateSet\n },\n {} as any,\n )\n\n if (!value || (Array.isArray(value) && !value.length)) return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .whereInIds(value)\n .execute()\n } else {\n // many to many\n const junctionMetadata = relation.junctionEntityMetadata!\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n const firstColumnValues = relation.isManyToManyOwner ? ofs : values\n const secondColumnValues = relation.isManyToManyOwner ? values : ofs\n\n const bulkInserted: ObjectLiteral[] = []\n firstColumnValues.forEach((firstColumnVal) => {\n secondColumnValues.forEach((secondColumnVal) => {\n const inserted: ObjectLiteral = {}\n junctionMetadata.ownerColumns.forEach((column) => {\n inserted[column.databaseName] = ObjectUtils.isObject(\n firstColumnVal,\n )\n ? column.referencedColumn!.getEntityValue(\n firstColumnVal,\n )\n : firstColumnVal\n })\n junctionMetadata.inverseColumns.forEach((column) => {\n inserted[column.databaseName] = ObjectUtils.isObject(\n secondColumnVal,\n )\n ? column.referencedColumn!.getEntityValue(\n secondColumnVal,\n )\n : secondColumnVal\n })\n bulkInserted.push(inserted)\n })\n })\n\n if (!bulkInserted.length) return\n\n if (\n this.queryBuilder.connection.driver.options.type === \"oracle\" ||\n this.queryBuilder.connection.driver.options.type === \"sap\"\n ) {\n await Promise.all(\n bulkInserted.map((value) => {\n return this.queryBuilder\n .createQueryBuilder()\n .insert()\n .into(junctionMetadata.tableName)\n .values(value)\n .execute()\n }),\n )\n } else {\n await this.queryBuilder\n .createQueryBuilder()\n .insert()\n .into(junctionMetadata.tableName)\n .values(bulkInserted)\n .execute()\n }\n }\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/query-builder/RelationUpdater.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD;;;;GAIG;AACH,MAAM,OAAO,eAAe;IACxB,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YACc,YAA+B,EAC/B,aAAiC;QADjC,iBAAY,GAAZ,YAAY,CAAmB;QAC/B,kBAAa,GAAb,aAAa,CAAoB;IAC5C,CAAC;IAEJ,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,KAAkB;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAA;QAEpD,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CACzC,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE;gBACtB,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAC7C,CAAC,CAAC,UAAU,CAAC,gBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC;oBACpD,CAAC,CAAC,KAAK,CAAA;gBACX,UAAU,CAAC,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;gBACnD,OAAO,SAAS,CAAA;YACpB,CAAC,EACD,EAAS,CACZ,CAAA;YAED,IACI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBACtB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;oBACjC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC;gBAElC,OAAM;YAEV,MAAM,IAAI,CAAC,YAAY;iBAClB,kBAAkB,EAAE;iBACpB,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC;iBACtC,GAAG,CAAC,SAAS,CAAC;iBACd,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;iBACjC,OAAO,EAAE,CAAA;QAClB,CAAC;aAAM,IACH,CAAC,QAAQ,CAAC,kBAAkB,IAAI,QAAQ,CAAC,WAAW,CAAC;YACrD,KAAK,KAAK,IAAI,EAChB,CAAC;YACC,qCAAqC;YAErC,MAAM,SAAS,GAAkB,EAAE,CAAA;YACnC,QAAQ,CAAC,eAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACrD,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAA;YACzC,CAAC,CAAC,CAAA;YAEF,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC5C,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBACvB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;YAC7B,MAAM,UAAU,GAAkB,EAAE,CAAA;YACpC,MAAM,UAAU,GAAa,EAAE,CAAA;YAC/B,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE;gBACxB,QAAQ,CAAC,eAAgB,CAAC,WAAW,CAAC,GAAG,CACrC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;oBACpB,MAAM,aAAa,GACf,aAAa,GAAG,OAAO,GAAG,GAAG,GAAG,WAAW,CAAA;oBAC/C,UAAU,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAChD,CAAC,CAAC,MAAM,CAAC,gBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC;wBAC7C,CAAC,CAAC,EAAE,CAAA;oBACR,UAAU,CAAC,IAAI,CACX,GAAG,MAAM,CAAC,YAAY,OAAO,aAAa,EAAE,CAC/C,CAAA;gBACL,CAAC,CACJ,CAAA;YACL,CAAC,CAAC,CAAA;YACF,MAAM,SAAS,GAAG,UAAU;iBACvB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;iBAC7B,IAAI,CAAC,MAAM,CAAC,CAAA;YACjB,IAAI,CAAC,SAAS;gBAAE,OAAM;YAEtB,MAAM,IAAI,CAAC,YAAY;iBAClB,kBAAkB,EAAE;iBACpB,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC;iBAC7C,GAAG,CAAC,SAAS,CAAC;iBACd,KAAK,CAAC,SAAS,CAAC;iBAChB,aAAa,CAAC,UAAU,CAAC;iBACzB,OAAO,EAAE,CAAA;QAClB,CAAC;aAAM,IAAI,QAAQ,CAAC,kBAAkB,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,YAAY,CAClB,yHAAyH,CAC5H,CAAA;YAEL,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAA;YAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,eAAgB,CAAC,WAAW,CAAC,MAAM,CAC1D,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE;gBACtB,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1C,CAAC,CAAC,UAAU,CAAC,gBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC;oBACjD,CAAC,CAAC,EAAE,CAAA;gBACR,UAAU,CAAC,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;gBACnD,OAAO,SAAS,CAAA;YACpB,CAAC,EACD,EAAS,CACZ,CAAA;YAED,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,OAAM;YAE7D,MAAM,IAAI,CAAC,YAAY;iBAClB,kBAAkB,EAAE;iBACpB,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC;iBAC7C,GAAG,CAAC,SAAS,CAAC;iBACd,UAAU,CAAC,KAAK,CAAC;iBACjB,OAAO,EAAE,CAAA;QAClB,CAAC;aAAM,CAAC;YACJ,eAAe;YACf,MAAM,gBAAgB,GAAG,QAAQ,CAAC,sBAAuB,CAAA;YACzD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC5C,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBACvB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;YAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;YACrD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAA;YACnE,MAAM,kBAAkB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAA;YAEpE,MAAM,YAAY,GAAoB,EAAE,CAAA;YACxC,iBAAiB,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE;gBACzC,kBAAkB,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,EAAE;oBAC3C,MAAM,QAAQ,GAAkB,EAAE,CAAA;oBAClC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;wBAC7C,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC,QAAQ,CAChD,cAAc,CACjB;4BACG,CAAC,CAAC,MAAM,CAAC,gBAAiB,CAAC,cAAc,CACnC,cAAc,CACjB;4BACH,CAAC,CAAC,cAAc,CAAA;oBACxB,CAAC,CAAC,CAAA;oBACF,gBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;wBAC/C,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC,QAAQ,CAChD,eAAe,CAClB;4BACG,CAAC,CAAC,MAAM,CAAC,gBAAiB,CAAC,cAAc,CACnC,eAAe,CAClB;4BACH,CAAC,CAAC,eAAe,CAAA;oBACzB,CAAC,CAAC,CAAA;oBACF,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC/B,CAAC,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,YAAY,CAAC,MAAM;gBAAE,OAAM;YAEhC,IACI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ;gBAC7D,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,EAC5D,CAAC;gBACC,MAAM,OAAO,CAAC,GAAG,CACb,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oBACvB,OAAO,IAAI,CAAC,YAAY;yBACnB,kBAAkB,EAAE;yBACpB,MAAM,EAAE;yBACR,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;yBAChC,MAAM,CAAC,KAAK,CAAC;yBACb,OAAO,EAAE,CAAA;gBAClB,CAAC,CAAC,CACL,CAAA;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,CAAC,YAAY;qBAClB,kBAAkB,EAAE;qBACpB,MAAM,EAAE;qBACR,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;qBAChC,MAAM,CAAC,YAAY,CAAC;qBACpB,OAAO,EAAE,CAAA;YAClB,CAAC;QACL,CAAC;IACL,CAAC;CACJ","file":"RelationUpdater.js","sourcesContent":["import { QueryBuilder } from \"./QueryBuilder\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\nimport { TypeORMError } from \"../error\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationUpdater {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected queryBuilder: QueryBuilder<any>,\n protected expressionMap: QueryExpressionMap,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs set or add operation on a relation.\n */\n async update(value: any | any[]): Promise<void> {\n const relation = this.expressionMap.relationMetadata\n\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n const updateSet = relation.joinColumns.reduce(\n (updateSet, joinColumn) => {\n const relationValue = ObjectUtils.isObject(value)\n ? joinColumn.referencedColumn!.getEntityValue(value)\n : value\n joinColumn.setEntityValue(updateSet, relationValue)\n return updateSet\n },\n {} as any,\n )\n\n if (\n !this.expressionMap.of ||\n (Array.isArray(this.expressionMap.of) &&\n !this.expressionMap.of.length)\n )\n return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.entityMetadata.target)\n .set(updateSet)\n .whereInIds(this.expressionMap.of)\n .execute()\n } else if (\n (relation.isOneToOneNotOwner || relation.isOneToMany) &&\n value === null\n ) {\n // we handle null a bit different way\n\n const updateSet: ObjectLiteral = {}\n relation.inverseRelation!.joinColumns.forEach((column) => {\n updateSet[column.propertyName] = null\n })\n\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n ofs.forEach((of, ofIndex) => {\n relation.inverseRelation!.joinColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"joinColumn_\" + ofIndex + \"_\" + columnIndex\n parameters[parameterName] = ObjectUtils.isObject(of)\n ? column.referencedColumn!.getEntityValue(of)\n : of\n conditions.push(\n `${column.propertyPath} = :${parameterName}`,\n )\n },\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n if (!condition) return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .where(condition)\n .setParameters(parameters)\n .execute()\n } else if (relation.isOneToOneNotOwner || relation.isOneToMany) {\n if (Array.isArray(this.expressionMap.of))\n throw new TypeORMError(\n `You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.`,\n )\n\n const of = this.expressionMap.of\n const updateSet = relation.inverseRelation!.joinColumns.reduce(\n (updateSet, joinColumn) => {\n const relationValue = ObjectUtils.isObject(of)\n ? joinColumn.referencedColumn!.getEntityValue(of)\n : of\n joinColumn.setEntityValue(updateSet, relationValue)\n return updateSet\n },\n {} as any,\n )\n\n if (!value || (Array.isArray(value) && !value.length)) return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .whereInIds(value)\n .execute()\n } else {\n // many to many\n const junctionMetadata = relation.junctionEntityMetadata!\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n const firstColumnValues = relation.isManyToManyOwner ? ofs : values\n const secondColumnValues = relation.isManyToManyOwner ? values : ofs\n\n const bulkInserted: ObjectLiteral[] = []\n firstColumnValues.forEach((firstColumnVal) => {\n secondColumnValues.forEach((secondColumnVal) => {\n const inserted: ObjectLiteral = {}\n junctionMetadata.ownerColumns.forEach((column) => {\n inserted[column.databaseName] = ObjectUtils.isObject(\n firstColumnVal,\n )\n ? column.referencedColumn!.getEntityValue(\n firstColumnVal,\n )\n : firstColumnVal\n })\n junctionMetadata.inverseColumns.forEach((column) => {\n inserted[column.databaseName] = ObjectUtils.isObject(\n secondColumnVal,\n )\n ? column.referencedColumn!.getEntityValue(\n secondColumnVal,\n )\n : secondColumnVal\n })\n bulkInserted.push(inserted)\n })\n })\n\n if (!bulkInserted.length) return\n\n if (\n this.queryBuilder.connection.driver.options.type === \"oracle\" ||\n this.queryBuilder.connection.driver.options.type === \"sap\"\n ) {\n await Promise.all(\n bulkInserted.map((value) => {\n return this.queryBuilder\n .createQueryBuilder()\n .insert()\n .into(junctionMetadata.tableName)\n .values(value)\n .execute()\n }),\n )\n } else {\n await this.queryBuilder\n .createQueryBuilder()\n .insert()\n .into(junctionMetadata.tableName)\n .values(bulkInserted)\n .execute()\n }\n }\n }\n}\n"],"sourceRoot":".."}
@@ -146,7 +146,9 @@ export class ReturningResultsEntityUpdator {
146
146
  */
147
147
  getUpdationReturningColumns() {
148
148
  return this.expressionMap.mainAlias.metadata.columns.filter((column) => {
149
- return column.isUpdateDate || column.isVersion;
149
+ return (column.asExpression !== undefined ||
150
+ column.isUpdateDate ||
151
+ column.isVersion);
150
152
  });
151
153
  }
152
154
  /**
@@ -154,7 +156,8 @@ export class ReturningResultsEntityUpdator {
154
156
  */
155
157
  getSoftDeletionReturningColumns() {
156
158
  return this.expressionMap.mainAlias.metadata.columns.filter((column) => {
157
- return (column.isUpdateDate ||
159
+ return (column.asExpression !== undefined ||
160
+ column.isUpdateDate ||
158
161
  column.isVersion ||
159
162
  column.isDeleteDate);
160
163
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-builder/ReturningResultsEntityUpdator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC;;GAEG;AACH,MAAM,OAAO,6BAA6B;IACtC,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YACc,WAAwB,EACxB,aAAiC;QADjC,gBAAW,GAAX,WAAW,CAAa;QACxB,kBAAa,GAAb,aAAa,CAAoB;IAC5C,CAAC;IAEJ,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,MAAM,CACR,YAA0B,EAC1B,QAAyB;QAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,QAAQ,CAAA;QAEvD,MAAM,OAAO,CAAC,GAAG,CACb,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;YACvC,uIAAuI;YACvI,IACI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,uBAAuB,CACtD,QAAQ,CACX,EACH;gBACE,IACI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;oBAC3C,QAAQ;oBACZ,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC;oBAC/B,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EACrD;oBACE,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CACtC,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;wBAC9B,MAAM,CACF,IAAI,CAAC,aAAa,CAAC,qBAAqB,CACpC,YAAY,CACf,CAAC,YAAY,CACjB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;wBACd,OAAO,MAAM,CAAA;oBACjB,CAAC,EACD,EAAmB,CACtB,CAAA;iBACJ;gBACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC;oBAC1C,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;oBAC/B,CAAC,CAAC,YAAY,CAAC,GAAG,CAAA;gBACtB,MAAM,gBAAgB,GAClB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CACjD,QAAQ,EACR,MAAM,CACT,CAAA;gBACL,IAAI,gBAAgB,EAAE;oBAClB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAC1B,QAAQ,CAAC,MAAa,EACtB,MAAM,EACN,gBAAgB,CACnB,CAAA;oBACD,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;iBACpD;aACJ;iBAAM;gBACH,qHAAqH;gBACrH,MAAM,eAAe,GACjB,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAA;gBAC5C,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC5B,iDAAiD;oBACjD,MAAM,QAAQ,GACV,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,QAAQ,CAAC,cAAc,CACjD,MAAM,CACT,CAAA;oBACL,IAAI,CAAC,QAAQ;wBACT,MAAM,IAAI,YAAY,CAClB,kEAAkE,CACrE,CAAA;oBAEL,mCAAmC;oBACnC,MAAM,sBAAsB,GACxB,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO;yBAC1B,kBAAkB,EAAE;yBACpB,MAAM,CACH,QAAQ,CAAC,cAAc,CAAC,GAAG,CACvB,CAAC,MAAM,EAAE,EAAE,CACP,QAAQ,CAAC,UAAU;wBACnB,GAAG;wBACH,MAAM,CAAC,YAAY,CAC1B,CACJ;yBACA,SAAS,CACN,eAAe,CAAC,GAAG,CACf,CAAC,MAAM,EAAE,EAAE,CACP,QAAQ,CAAC,UAAU;wBACnB,GAAG;wBACH,MAAM,CAAC,YAAY,CAC1B,CACJ;yBACA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC;yBAC1C,KAAK,CAAC,QAAQ,CAAC;yBACf,WAAW,EAAE;yBACb,SAAS,CAAC,aAAa,CAAC,CAAC,6IAA6I;yBACtK,MAAM,EAAE,CAAQ,CAAA;oBAEzB,IAAI,sBAAsB,EAAE;wBACxB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAC1B,QAAQ,CAAC,MAAa,EACtB,MAAM,EACN,sBAAsB,CACzB,CAAA;wBACD,YAAY,CAAC,aAAa,CAAC,IAAI,CAC3B,sBAAsB,CACzB,CAAA;qBACJ;iBACJ;aACJ;QACL,CAAC,CAAC,CACL,CAAA;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACR,YAA0B,EAC1B,QAAyB;QAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,QAAQ,CAAA;QACvD,IAAI,gBAAgB,GAAG,QAAQ,CAAC,4BAA4B,EAAE,CAAA;QAE9D,+EAA+E;QAC/E,uFAAuF;QACvF,uDAAuD;QACvD,MAAM,oBAAoB,GACtB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAA;QACxE,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAClD,IAAI,CAAC,MAAM,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAA;YACpC,OAAO,oBAAoB,KAAK,IAAI,CAAA;QACxC,CAAC,CAAC,CAAA;QAEF,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;YACvD,IACI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ;gBAC5D,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC;gBAC/B,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EACrD;gBACE,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CACtC,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;oBAC9B,MAAM,CACF,IAAI,CAAC,aAAa,CAAC,qBAAqB,CACpC,YAAY,CACf,CAAC,YAAY,CACjB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;oBACd,OAAO,MAAM,CAAA;gBACjB,CAAC,EACD,EAAmB,CACtB,CAAA;aACJ;YACD,gDAAgD;YAChD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC;gBAC1C,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC/B,CAAC,CAAC,YAAY,CAAC,GAAG,CAAA;YAEtB,MAAM,YAAY,GACd,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CACjD,QAAQ,EACR,MAAM,EACN,WAAW,EACX,QAAQ,CAAC,MAAM,CAClB,IAAI,EAAE,CAAA;YAEX,IAAI,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE;gBACpD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAC1B,QAAQ,CAAC,MAAa,EACtB,YAAY,EACZ,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,WAAW,CAAC,CACnD,CAAA;aACJ;YAED,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAC1B,QAAQ,CAAC,MAAa,EACtB,MAAM,EACN,YAAY,CACf,CAAA;YAED,OAAO,YAAY,CAAA;QACvB,CAAC,CAAC,CAAA;QAEF,kHAAkH;QAClH,qEAAqE;QACrE,IACI,gBAAgB,CAAC,MAAM,GAAG,CAAC;YAC3B,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,uBAAuB,CACvD,QAAQ,CACX,EACH;YACE,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAE,CAAA;gBAEjD,yFAAyF;gBACzF,wFAAwF;gBACxF,2BAA2B;gBAC3B,IAAI,CAAC,QAAQ;oBACT,MAAM,IAAI,YAAY,CAClB,kEAAkE,CACrE,CAAA;gBAEL,OAAO,QAAQ,CAAA;YACnB,CAAC,CAAC,CAAA;YAEF,oEAAoE;YACpE,kFAAkF;YAClF,iDAAiD;YACjD,sEAAsE;YACtE,kFAAkF;YAElF,MAAM,eAAe,GAAQ,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO;iBACtD,kBAAkB,EAAE;iBACpB,MAAM,CACH,QAAQ,CAAC,cAAc,CAAC,GAAG,CACvB,CAAC,MAAM,EAAE,EAAE,CACP,QAAQ,CAAC,UAAU,GAAG,GAAG,GAAG,MAAM,CAAC,YAAY,CACtD,CACJ;iBACA,SAAS,CACN,gBAAgB,CAAC,GAAG,CAChB,CAAC,MAAM,EAAE,EAAE,CACP,QAAQ,CAAC,UAAU,GAAG,GAAG,GAAG,MAAM,CAAC,YAAY,CACtD,CACJ;iBACA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC;iBAC1C,KAAK,CAAC,SAAS,CAAC;iBAChB,SAAS,CAAC,aAAa,CAAC,CAAC,6IAA6I;iBACtK,OAAO,EAAE,CAAA;YAEd,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAC1B,QAAQ,CAAC,MAAa,EACtB,aAAa,CAAC,WAAW,CAAC,EAC1B,eAAe,CAAC,WAAW,CAAC,CAC/B,CAAA;gBAED,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAC1B,QAAQ,CAAC,MAAa,EACtB,MAAM,EACN,eAAe,CAAC,WAAW,CAAC,CAC/B,CAAA;YACL,CAAC,CAAC,CAAA;SACL;QAED,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAE,CAAA;YACjD,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACvC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACH,2BAA2B;QACvB,OAAO,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CACxD,CAAC,MAAM,EAAE,EAAE;YACP,OAAO,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,SAAS,CAAA;QAClD,CAAC,CACJ,CAAA;IACL,CAAC;IAED;;OAEG;IACH,+BAA+B;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CACxD,CAAC,MAAM,EAAE,EAAE;YACP,OAAO,CACH,MAAM,CAAC,YAAY;gBACnB,MAAM,CAAC,SAAS;gBAChB,MAAM,CAAC,YAAY,CACtB,CAAA;QACL,CAAC,CACJ,CAAA;IACL,CAAC;CACJ","file":"ReturningResultsEntityUpdator.js","sourcesContent":["import { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\nimport { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { UpdateResult } from \"./result/UpdateResult\"\nimport { InsertResult } from \"./result/InsertResult\"\nimport { TypeORMError } from \"../error\"\n\n/**\n * Updates entity with returning results in the entity insert and update operations.\n */\nexport class ReturningResultsEntityUpdator {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected queryRunner: QueryRunner,\n protected expressionMap: QueryExpressionMap,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Updates entities with a special columns after updation query execution.\n */\n async update(\n updateResult: UpdateResult,\n entities: ObjectLiteral[],\n ): Promise<void> {\n const metadata = this.expressionMap.mainAlias!.metadata\n\n await Promise.all(\n entities.map(async (entity, entityIndex) => {\n // if database supports returning/output statement then we already should have updating values in the raw data returned by insert query\n if (\n this.queryRunner.connection.driver.isReturningSqlSupported(\n \"update\",\n )\n ) {\n if (\n this.queryRunner.connection.driver.options.type ===\n \"oracle\" &&\n Array.isArray(updateResult.raw) &&\n this.expressionMap.extraReturningColumns.length > 0\n ) {\n updateResult.raw = updateResult.raw.reduce(\n (newRaw, rawItem, rawItemIndex) => {\n newRaw[\n this.expressionMap.extraReturningColumns[\n rawItemIndex\n ].databaseName\n ] = rawItem[0]\n return newRaw\n },\n {} as ObjectLiteral,\n )\n }\n const result = Array.isArray(updateResult.raw)\n ? updateResult.raw[entityIndex]\n : updateResult.raw\n const returningColumns =\n this.queryRunner.connection.driver.createGeneratedMap(\n metadata,\n result,\n )\n if (returningColumns) {\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n returningColumns,\n )\n updateResult.generatedMaps.push(returningColumns)\n }\n } else {\n // for driver which do not support returning/output statement we need to perform separate query and load what we need\n const updationColumns =\n this.expressionMap.extraReturningColumns\n if (updationColumns.length > 0) {\n // get entity id by which we will get needed data\n const entityId =\n this.expressionMap.mainAlias!.metadata.getEntityIdMap(\n entity,\n )\n if (!entityId)\n throw new TypeORMError(\n `Cannot update entity because entity id is not set in the entity.`,\n )\n\n // execute query to get needed data\n const loadedReturningColumns =\n (await this.queryRunner.manager\n .createQueryBuilder()\n .select(\n metadata.primaryColumns.map(\n (column) =>\n metadata.targetName +\n \".\" +\n column.propertyPath,\n ),\n )\n .addSelect(\n updationColumns.map(\n (column) =>\n metadata.targetName +\n \".\" +\n column.propertyPath,\n ),\n )\n .from(metadata.target, metadata.targetName)\n .where(entityId)\n .withDeleted()\n .setOption(\"create-pojo\") // use POJO because created object can contain default values, e.g. property = null and those properties might be overridden by merge process\n .getOne()) as any\n\n if (loadedReturningColumns) {\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n loadedReturningColumns,\n )\n updateResult.generatedMaps.push(\n loadedReturningColumns,\n )\n }\n }\n }\n }),\n )\n }\n\n /**\n * Updates entities with a special columns after insertion query execution.\n */\n async insert(\n insertResult: InsertResult,\n entities: ObjectLiteral[],\n ): Promise<void> {\n const metadata = this.expressionMap.mainAlias!.metadata\n let insertionColumns = metadata.getInsertionReturningColumns()\n\n // to prevent extra select SQL execution for databases not supporting RETURNING\n // in the case if we have generated column and it's value returned by underlying driver\n // we remove this column from the insertionColumns list\n const needToCheckGenerated =\n this.queryRunner.connection.driver.isReturningSqlSupported(\"insert\")\n insertionColumns = insertionColumns.filter((column) => {\n if (!column.isGenerated) return true\n return needToCheckGenerated === true\n })\n\n const generatedMaps = entities.map((entity, entityIndex) => {\n if (\n this.queryRunner.connection.driver.options.type === \"oracle\" &&\n Array.isArray(insertResult.raw) &&\n this.expressionMap.extraReturningColumns.length > 0\n ) {\n insertResult.raw = insertResult.raw.reduce(\n (newRaw, rawItem, rawItemIndex) => {\n newRaw[\n this.expressionMap.extraReturningColumns[\n rawItemIndex\n ].databaseName\n ] = rawItem[0]\n return newRaw\n },\n {} as ObjectLiteral,\n )\n }\n // get all values generated by a database for us\n const result = Array.isArray(insertResult.raw)\n ? insertResult.raw[entityIndex]\n : insertResult.raw\n\n const generatedMap =\n this.queryRunner.connection.driver.createGeneratedMap(\n metadata,\n result,\n entityIndex,\n entities.length,\n ) || {}\n\n if (entityIndex in this.expressionMap.locallyGenerated) {\n this.queryRunner.manager.merge(\n metadata.target as any,\n generatedMap,\n this.expressionMap.locallyGenerated[entityIndex],\n )\n }\n\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n generatedMap,\n )\n\n return generatedMap\n })\n\n // for postgres and mssql we use returning/output statement to get values of inserted default and generated values\n // for other drivers we have to re-select this data from the database\n if (\n insertionColumns.length > 0 &&\n !this.queryRunner.connection.driver.isReturningSqlSupported(\n \"insert\",\n )\n ) {\n const entityIds = entities.map((entity) => {\n const entityId = metadata.getEntityIdMap(entity)!\n\n // We have to check for an empty `entityId` - if we don't, the query against the database\n // effectively drops the `where` clause entirely and the first record will be returned -\n // not what we want at all.\n if (!entityId)\n throw new TypeORMError(\n `Cannot update entity because entity id is not set in the entity.`,\n )\n\n return entityId\n })\n\n // to select just inserted entities we need a criteria to select by.\n // for newly inserted entities in drivers which do not support returning statement\n // row identifier can only be an increment column\n // (since its the only thing that can be generated by those databases)\n // or (and) other primary key which is defined by a user and inserted value has it\n\n const returningResult: any = await this.queryRunner.manager\n .createQueryBuilder()\n .select(\n metadata.primaryColumns.map(\n (column) =>\n metadata.targetName + \".\" + column.propertyPath,\n ),\n )\n .addSelect(\n insertionColumns.map(\n (column) =>\n metadata.targetName + \".\" + column.propertyPath,\n ),\n )\n .from(metadata.target, metadata.targetName)\n .where(entityIds)\n .setOption(\"create-pojo\") // use POJO because created object can contain default values, e.g. property = null and those properties might be overridden by merge process\n .getMany()\n\n entities.forEach((entity, entityIndex) => {\n this.queryRunner.manager.merge(\n metadata.target as any,\n generatedMaps[entityIndex],\n returningResult[entityIndex],\n )\n\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n returningResult[entityIndex],\n )\n })\n }\n\n entities.forEach((entity, entityIndex) => {\n const entityId = metadata.getEntityIdMap(entity)!\n insertResult.identifiers.push(entityId)\n insertResult.generatedMaps.push(generatedMaps[entityIndex])\n })\n }\n\n /**\n * Columns we need to be returned from the database when we update entity.\n */\n getUpdationReturningColumns(): ColumnMetadata[] {\n return this.expressionMap.mainAlias!.metadata.columns.filter(\n (column) => {\n return column.isUpdateDate || column.isVersion\n },\n )\n }\n\n /**\n * Columns we need to be returned from the database when we soft delete and restore entity.\n */\n getSoftDeletionReturningColumns(): ColumnMetadata[] {\n return this.expressionMap.mainAlias!.metadata.columns.filter(\n (column) => {\n return (\n column.isUpdateDate ||\n column.isVersion ||\n column.isDeleteDate\n )\n },\n )\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/query-builder/ReturningResultsEntityUpdator.ts"],"names":[],"mappings":"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","file":"ReturningResultsEntityUpdator.js","sourcesContent":["import { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\nimport { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { UpdateResult } from \"./result/UpdateResult\"\nimport { InsertResult } from \"./result/InsertResult\"\nimport { TypeORMError } from \"../error\"\n\n/**\n * Updates entity with returning results in the entity insert and update operations.\n */\nexport class ReturningResultsEntityUpdator {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected queryRunner: QueryRunner,\n protected expressionMap: QueryExpressionMap,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Updates entities with a special columns after updation query execution.\n */\n async update(\n updateResult: UpdateResult,\n entities: ObjectLiteral[],\n ): Promise<void> {\n const metadata = this.expressionMap.mainAlias!.metadata\n\n await Promise.all(\n entities.map(async (entity, entityIndex) => {\n // if database supports returning/output statement then we already should have updating values in the raw data returned by insert query\n if (\n this.queryRunner.connection.driver.isReturningSqlSupported(\n \"update\",\n )\n ) {\n if (\n this.queryRunner.connection.driver.options.type ===\n \"oracle\" &&\n Array.isArray(updateResult.raw) &&\n this.expressionMap.extraReturningColumns.length > 0\n ) {\n updateResult.raw = updateResult.raw.reduce(\n (newRaw, rawItem, rawItemIndex) => {\n newRaw[\n this.expressionMap.extraReturningColumns[\n rawItemIndex\n ].databaseName\n ] = rawItem[0]\n return newRaw\n },\n {} as ObjectLiteral,\n )\n }\n const result = Array.isArray(updateResult.raw)\n ? updateResult.raw[entityIndex]\n : updateResult.raw\n const returningColumns =\n this.queryRunner.connection.driver.createGeneratedMap(\n metadata,\n result,\n )\n if (returningColumns) {\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n returningColumns,\n )\n updateResult.generatedMaps.push(returningColumns)\n }\n } else {\n // for driver which do not support returning/output statement we need to perform separate query and load what we need\n const updationColumns =\n this.expressionMap.extraReturningColumns\n if (updationColumns.length > 0) {\n // get entity id by which we will get needed data\n const entityId =\n this.expressionMap.mainAlias!.metadata.getEntityIdMap(\n entity,\n )\n if (!entityId)\n throw new TypeORMError(\n `Cannot update entity because entity id is not set in the entity.`,\n )\n\n // execute query to get needed data\n const loadedReturningColumns =\n (await this.queryRunner.manager\n .createQueryBuilder()\n .select(\n metadata.primaryColumns.map(\n (column) =>\n metadata.targetName +\n \".\" +\n column.propertyPath,\n ),\n )\n .addSelect(\n updationColumns.map(\n (column) =>\n metadata.targetName +\n \".\" +\n column.propertyPath,\n ),\n )\n .from(metadata.target, metadata.targetName)\n .where(entityId)\n .withDeleted()\n .setOption(\"create-pojo\") // use POJO because created object can contain default values, e.g. property = null and those properties might be overridden by merge process\n .getOne()) as any\n\n if (loadedReturningColumns) {\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n loadedReturningColumns,\n )\n updateResult.generatedMaps.push(\n loadedReturningColumns,\n )\n }\n }\n }\n }),\n )\n }\n\n /**\n * Updates entities with a special columns after insertion query execution.\n */\n async insert(\n insertResult: InsertResult,\n entities: ObjectLiteral[],\n ): Promise<void> {\n const metadata = this.expressionMap.mainAlias!.metadata\n let insertionColumns = metadata.getInsertionReturningColumns()\n\n // to prevent extra select SQL execution for databases not supporting RETURNING\n // in the case if we have generated column and it's value returned by underlying driver\n // we remove this column from the insertionColumns list\n const needToCheckGenerated =\n this.queryRunner.connection.driver.isReturningSqlSupported(\"insert\")\n insertionColumns = insertionColumns.filter((column) => {\n if (!column.isGenerated) return true\n return needToCheckGenerated === true\n })\n\n const generatedMaps = entities.map((entity, entityIndex) => {\n if (\n this.queryRunner.connection.driver.options.type === \"oracle\" &&\n Array.isArray(insertResult.raw) &&\n this.expressionMap.extraReturningColumns.length > 0\n ) {\n insertResult.raw = insertResult.raw.reduce(\n (newRaw, rawItem, rawItemIndex) => {\n newRaw[\n this.expressionMap.extraReturningColumns[\n rawItemIndex\n ].databaseName\n ] = rawItem[0]\n return newRaw\n },\n {} as ObjectLiteral,\n )\n }\n // get all values generated by a database for us\n const result = Array.isArray(insertResult.raw)\n ? insertResult.raw[entityIndex]\n : insertResult.raw\n\n const generatedMap =\n this.queryRunner.connection.driver.createGeneratedMap(\n metadata,\n result,\n entityIndex,\n entities.length,\n ) || {}\n\n if (entityIndex in this.expressionMap.locallyGenerated) {\n this.queryRunner.manager.merge(\n metadata.target as any,\n generatedMap,\n this.expressionMap.locallyGenerated[entityIndex],\n )\n }\n\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n generatedMap,\n )\n\n return generatedMap\n })\n\n // for postgres and mssql we use returning/output statement to get values of inserted default and generated values\n // for other drivers we have to re-select this data from the database\n if (\n insertionColumns.length > 0 &&\n !this.queryRunner.connection.driver.isReturningSqlSupported(\n \"insert\",\n )\n ) {\n const entityIds = entities.map((entity) => {\n const entityId = metadata.getEntityIdMap(entity)!\n\n // We have to check for an empty `entityId` - if we don't, the query against the database\n // effectively drops the `where` clause entirely and the first record will be returned -\n // not what we want at all.\n if (!entityId)\n throw new TypeORMError(\n `Cannot update entity because entity id is not set in the entity.`,\n )\n\n return entityId\n })\n\n // to select just inserted entities we need a criteria to select by.\n // for newly inserted entities in drivers which do not support returning statement\n // row identifier can only be an increment column\n // (since its the only thing that can be generated by those databases)\n // or (and) other primary key which is defined by a user and inserted value has it\n\n const returningResult: any = await this.queryRunner.manager\n .createQueryBuilder()\n .select(\n metadata.primaryColumns.map(\n (column) =>\n metadata.targetName + \".\" + column.propertyPath,\n ),\n )\n .addSelect(\n insertionColumns.map(\n (column) =>\n metadata.targetName + \".\" + column.propertyPath,\n ),\n )\n .from(metadata.target, metadata.targetName)\n .where(entityIds)\n .setOption(\"create-pojo\") // use POJO because created object can contain default values, e.g. property = null and those properties might be overridden by merge process\n .getMany()\n\n entities.forEach((entity, entityIndex) => {\n this.queryRunner.manager.merge(\n metadata.target as any,\n generatedMaps[entityIndex],\n returningResult[entityIndex],\n )\n\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n returningResult[entityIndex],\n )\n })\n }\n\n entities.forEach((entity, entityIndex) => {\n const entityId = metadata.getEntityIdMap(entity)!\n insertResult.identifiers.push(entityId)\n insertResult.generatedMaps.push(generatedMaps[entityIndex])\n })\n }\n\n /**\n * Columns we need to be returned from the database when we update entity.\n */\n getUpdationReturningColumns(): ColumnMetadata[] {\n return this.expressionMap.mainAlias!.metadata.columns.filter(\n (column) => {\n return (\n column.asExpression !== undefined ||\n column.isUpdateDate ||\n column.isVersion\n )\n },\n )\n }\n\n /**\n * Columns we need to be returned from the database when we soft delete and restore entity.\n */\n getSoftDeletionReturningColumns(): ColumnMetadata[] {\n return this.expressionMap.mainAlias!.metadata.columns.filter(\n (column) => {\n return (\n column.asExpression !== undefined ||\n column.isUpdateDate ||\n column.isVersion ||\n column.isDeleteDate\n )\n },\n )\n }\n}\n"],"sourceRoot":".."}
@@ -504,17 +504,17 @@ export declare class SelectQueryBuilder<Entity extends ObjectLiteral> extends Qu
504
504
  */
505
505
  addOrderBy(sort: string, order?: "ASC" | "DESC", nulls?: "NULLS FIRST" | "NULLS LAST"): this;
506
506
  /**
507
- * Set's LIMIT - maximum number of rows to be selected.
507
+ * Sets LIMIT - maximum number of rows to be selected.
508
508
  * NOTE that it may not work as you expect if you are using joins.
509
509
  * If you want to implement pagination, and you are having join in your query,
510
- * then use instead take method instead.
510
+ * then use the take method instead.
511
511
  */
512
512
  limit(limit?: number): this;
513
513
  /**
514
- * Set's OFFSET - selection offset.
514
+ * Sets OFFSET - selection offset.
515
515
  * NOTE that it may not work as you expect if you are using joins.
516
516
  * If you want to implement pagination, and you are having join in your query,
517
- * then use instead skip method instead.
517
+ * then use the skip method instead.
518
518
  */
519
519
  offset(offset?: number): this;
520
520
  /**
@@ -151,8 +151,8 @@ export class SelectQueryBuilder extends QueryBuilder {
151
151
  return this;
152
152
  }
153
153
  fromDummy() {
154
- var _a;
155
- return this.from((_a = this.connection.driver.dummyTableName) !== null && _a !== void 0 ? _a : "(SELECT 1 AS dummy_column)", "dummy_table");
154
+ return this.from(this.connection.driver.dummyTableName ??
155
+ "(SELECT 1 AS dummy_column)", "dummy_table");
156
156
  }
157
157
  /**
158
158
  * Specifies FROM which entity's table select/update/delete will be executed.
@@ -541,10 +541,10 @@ export class SelectQueryBuilder extends QueryBuilder {
541
541
  return this;
542
542
  }
543
543
  /**
544
- * Set's LIMIT - maximum number of rows to be selected.
544
+ * Sets LIMIT - maximum number of rows to be selected.
545
545
  * NOTE that it may not work as you expect if you are using joins.
546
546
  * If you want to implement pagination, and you are having join in your query,
547
- * then use instead take method instead.
547
+ * then use the take method instead.
548
548
  */
549
549
  limit(limit) {
550
550
  this.expressionMap.limit = this.normalizeNumber(limit);
@@ -554,10 +554,10 @@ export class SelectQueryBuilder extends QueryBuilder {
554
554
  return this;
555
555
  }
556
556
  /**
557
- * Set's OFFSET - selection offset.
557
+ * Sets OFFSET - selection offset.
558
558
  * NOTE that it may not work as you expect if you are using joins.
559
559
  * If you want to implement pagination, and you are having join in your query,
560
- * then use instead skip method instead.
560
+ * then use the skip method instead.
561
561
  */
562
562
  offset(offset) {
563
563
  this.expressionMap.offset = this.normalizeNumber(offset);
@@ -2059,7 +2059,7 @@ export class SelectQueryBuilder extends QueryBuilder {
2059
2059
  const relations = Array.isArray(this.findOptions.relations)
2060
2060
  ? OrmUtils.propertyPathsToTruthyObject(this.findOptions.relations)
2061
2061
  : this.findOptions.relations;
2062
- const queryBuilder = this.createQueryBuilder()
2062
+ const queryBuilder = this.createQueryBuilder(queryRunner)
2063
2063
  .select(relationAlias)
2064
2064
  .from(relationTarget, relationAlias)
2065
2065
  .setFindOptions({
@@ -2392,9 +2392,9 @@ export class SelectQueryBuilder extends QueryBuilder {
2392
2392
  ? order[key].nulls
2393
2393
  : undefined;
2394
2394
  nulls =
2395
- (nulls === null || nulls === void 0 ? void 0 : nulls.toLowerCase()) === "first"
2395
+ nulls?.toLowerCase() === "first"
2396
2396
  ? "NULLS FIRST"
2397
- : (nulls === null || nulls === void 0 ? void 0 : nulls.toLowerCase()) === "last"
2397
+ : nulls?.toLowerCase() === "last"
2398
2398
  ? "NULLS LAST"
2399
2399
  : undefined;
2400
2400
  let aliasPath = `${alias}.${propertyPath}`;
@@ -2448,17 +2448,16 @@ export class SelectQueryBuilder extends QueryBuilder {
2448
2448
  buildWhere(where, metadata, alias, embedPrefix) {
2449
2449
  let condition = "";
2450
2450
  // let parameterIndex = Object.keys(this.expressionMap.nativeParameters).length;
2451
- if (Array.isArray(where) && where.length) {
2452
- condition =
2453
- "(" +
2454
- where
2455
- .map((whereItem) => {
2456
- return this.buildWhere(whereItem, metadata, alias, embedPrefix);
2457
- })
2458
- .filter((condition) => !!condition)
2459
- .map((condition) => "(" + condition + ")")
2460
- .join(" OR ") +
2461
- ")";
2451
+ if (Array.isArray(where)) {
2452
+ if (where.length) {
2453
+ condition = where
2454
+ .map((whereItem) => {
2455
+ return this.buildWhere(whereItem, metadata, alias, embedPrefix);
2456
+ })
2457
+ .filter((condition) => !!condition)
2458
+ .map((condition) => "(" + condition + ")")
2459
+ .join(" OR ");
2460
+ }
2462
2461
  }
2463
2462
  else {
2464
2463
  let andConditions = [];
@@ -2640,9 +2639,11 @@ export class SelectQueryBuilder extends QueryBuilder {
2640
2639
  }
2641
2640
  }
2642
2641
  }
2643
- condition = andConditions.join(" AND ");
2642
+ condition = andConditions.length
2643
+ ? "(" + andConditions.join(") AND (") + ")"
2644
+ : andConditions.join(" AND ");
2644
2645
  }
2645
- return condition;
2646
+ return condition.length ? "(" + condition + ")" : condition;
2646
2647
  }
2647
2648
  }
2648
2649