taon-typeorm 18.0.18 → 18.0.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 (871) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/README.md +24 -24
  3. package/browser/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +1 -1
  4. package/browser/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +1 -1
  5. package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +1 -1
  6. package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +1 -1
  7. package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +1 -1
  8. package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +1 -1
  9. package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +1 -1
  10. package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +1 -1
  11. package/browser/esm2022/lib/typeorm/index.mjs +1 -3
  12. package/browser/fesm2022/taon-typeorm.mjs.map +1 -1
  13. package/client/README.md +24 -24
  14. package/client/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +1 -1
  15. package/client/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +1 -1
  16. package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +1 -1
  17. package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +1 -1
  18. package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +1 -1
  19. package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +1 -1
  20. package/client/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +1 -1
  21. package/client/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +1 -1
  22. package/client/esm2022/lib/typeorm/index.mjs +1 -3
  23. package/client/fesm2022/taon-typeorm.mjs.map +1 -1
  24. package/index.js +15 -2
  25. package/index.js.map +1 -1
  26. package/lib/build-info._auto-generated_.js.map +1 -1
  27. package/lib/index._auto-generated_.d.ts +1 -0
  28. package/lib/index._auto-generated_.js.map +1 -1
  29. package/lib/index.js +15 -2
  30. package/lib/index.js.map +1 -1
  31. package/lib/typeorm/cache/DbQueryResultCache.js +178 -231
  32. package/lib/typeorm/cache/DbQueryResultCache.js.map +1 -1
  33. package/lib/typeorm/cache/QueryResultCache.js.map +1 -1
  34. package/lib/typeorm/cache/QueryResultCacheFactory.js +11 -11
  35. package/lib/typeorm/cache/QueryResultCacheFactory.js.map +1 -1
  36. package/lib/typeorm/cache/QueryResultCacheOptions.js.map +1 -1
  37. package/lib/typeorm/cache/RedisQueryResultCache.js +121 -149
  38. package/lib/typeorm/cache/RedisQueryResultCache.js.map +1 -1
  39. package/lib/typeorm/cli-ts-node-commonjs.js.map +1 -1
  40. package/lib/typeorm/cli-ts-node-esm.js +7 -5
  41. package/lib/typeorm/cli-ts-node-esm.js.map +1 -1
  42. package/lib/typeorm/cli.d.ts +1 -1
  43. package/lib/typeorm/cli.js +15 -16
  44. package/lib/typeorm/cli.js.map +1 -1
  45. package/lib/typeorm/commands/CacheClearCommand.js +37 -65
  46. package/lib/typeorm/commands/CacheClearCommand.js.map +1 -1
  47. package/lib/typeorm/commands/CommandUtils.js +57 -112
  48. package/lib/typeorm/commands/CommandUtils.js.map +1 -1
  49. package/lib/typeorm/commands/EntityCreateCommand.js +35 -47
  50. package/lib/typeorm/commands/EntityCreateCommand.js.map +1 -1
  51. package/lib/typeorm/commands/InitCommand.js +397 -168
  52. package/lib/typeorm/commands/InitCommand.js.map +1 -1
  53. package/lib/typeorm/commands/MigrationCreateCommand.js +58 -52
  54. package/lib/typeorm/commands/MigrationCreateCommand.js.map +1 -1
  55. package/lib/typeorm/commands/MigrationGenerateCommand.js +141 -138
  56. package/lib/typeorm/commands/MigrationGenerateCommand.js.map +1 -1
  57. package/lib/typeorm/commands/MigrationRevertCommand.js +49 -77
  58. package/lib/typeorm/commands/MigrationRevertCommand.js.map +1 -1
  59. package/lib/typeorm/commands/MigrationRunCommand.js +52 -82
  60. package/lib/typeorm/commands/MigrationRunCommand.js.map +1 -1
  61. package/lib/typeorm/commands/MigrationShowCommand.js +32 -60
  62. package/lib/typeorm/commands/MigrationShowCommand.js.map +1 -1
  63. package/lib/typeorm/commands/QueryCommand.js +47 -83
  64. package/lib/typeorm/commands/QueryCommand.js.map +1 -1
  65. package/lib/typeorm/commands/SchemaDropCommand.js +33 -61
  66. package/lib/typeorm/commands/SchemaDropCommand.js.map +1 -1
  67. package/lib/typeorm/commands/SchemaLogCommand.js +57 -81
  68. package/lib/typeorm/commands/SchemaLogCommand.js.map +1 -1
  69. package/lib/typeorm/commands/SchemaSyncCommand.js +33 -61
  70. package/lib/typeorm/commands/SchemaSyncCommand.js.map +1 -1
  71. package/lib/typeorm/commands/SubscriberCreateCommand.js +35 -47
  72. package/lib/typeorm/commands/SubscriberCreateCommand.js.map +1 -1
  73. package/lib/typeorm/commands/VersionCommand.js +38 -54
  74. package/lib/typeorm/commands/VersionCommand.js.map +1 -1
  75. package/lib/typeorm/common/DeepPartial.js.map +1 -1
  76. package/lib/typeorm/common/EntityTarget.js.map +1 -1
  77. package/lib/typeorm/common/MixedList.js.map +1 -1
  78. package/lib/typeorm/common/NonNever.js.map +1 -1
  79. package/lib/typeorm/common/ObjectLiteral.js.map +1 -1
  80. package/lib/typeorm/common/ObjectType.js.map +1 -1
  81. package/lib/typeorm/common/RelationType.js.map +1 -1
  82. package/lib/typeorm/connection/BaseConnectionOptions.js.map +1 -1
  83. package/lib/typeorm/connection/Connection.js +3 -9
  84. package/lib/typeorm/connection/Connection.js.map +1 -1
  85. package/lib/typeorm/connection/ConnectionManager.js +23 -31
  86. package/lib/typeorm/connection/ConnectionManager.js.map +1 -1
  87. package/lib/typeorm/connection/ConnectionMetadataBuilder.js +48 -78
  88. package/lib/typeorm/connection/ConnectionMetadataBuilder.js.map +1 -1
  89. package/lib/typeorm/connection/ConnectionOptions.js.map +1 -1
  90. package/lib/typeorm/connection/ConnectionOptionsReader.js +146 -214
  91. package/lib/typeorm/connection/ConnectionOptionsReader.js.map +1 -1
  92. package/lib/typeorm/connection/options-reader/ConnectionOptionsEnvReader.js +50 -58
  93. package/lib/typeorm/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  94. package/lib/typeorm/connection/options-reader/ConnectionOptionsXmlReader.js +45 -58
  95. package/lib/typeorm/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
  96. package/lib/typeorm/connection/options-reader/ConnectionOptionsYmlReader.js +14 -23
  97. package/lib/typeorm/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  98. package/lib/typeorm/constants.js.map +1 -1
  99. package/lib/typeorm/container.js +9 -12
  100. package/lib/typeorm/container.js.map +1 -1
  101. package/lib/typeorm/data-source/BaseDataSourceOptions.js.map +1 -1
  102. package/lib/typeorm/data-source/DataSource.js +320 -478
  103. package/lib/typeorm/data-source/DataSource.js.map +1 -1
  104. package/lib/typeorm/data-source/DataSourceOptions.js.map +1 -1
  105. package/lib/typeorm/data-source/index.js +16 -3
  106. package/lib/typeorm/data-source/index.js.map +1 -1
  107. package/lib/typeorm/decorator/Check.js +5 -5
  108. package/lib/typeorm/decorator/Check.js.map +1 -1
  109. package/lib/typeorm/decorator/EntityRepository.js +1 -1
  110. package/lib/typeorm/decorator/EntityRepository.js.map +1 -1
  111. package/lib/typeorm/decorator/Exclusion.js +5 -5
  112. package/lib/typeorm/decorator/Exclusion.js.map +1 -1
  113. package/lib/typeorm/decorator/Generated.js +2 -3
  114. package/lib/typeorm/decorator/Generated.js.map +1 -1
  115. package/lib/typeorm/decorator/Index.js +5 -5
  116. package/lib/typeorm/decorator/Index.js.map +1 -1
  117. package/lib/typeorm/decorator/Unique.js +8 -8
  118. package/lib/typeorm/decorator/Unique.js.map +1 -1
  119. package/lib/typeorm/decorator/columns/Column.js +4 -4
  120. package/lib/typeorm/decorator/columns/Column.js.map +1 -1
  121. package/lib/typeorm/decorator/columns/CreateDateColumn.js +1 -1
  122. package/lib/typeorm/decorator/columns/CreateDateColumn.js.map +1 -1
  123. package/lib/typeorm/decorator/columns/DeleteDateColumn.js +1 -1
  124. package/lib/typeorm/decorator/columns/DeleteDateColumn.js.map +1 -1
  125. package/lib/typeorm/decorator/columns/ObjectIdColumn.js +1 -1
  126. package/lib/typeorm/decorator/columns/ObjectIdColumn.js.map +1 -1
  127. package/lib/typeorm/decorator/columns/PrimaryColumn.js +5 -5
  128. package/lib/typeorm/decorator/columns/PrimaryColumn.js.map +1 -1
  129. package/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.js +4 -4
  130. package/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  131. package/lib/typeorm/decorator/columns/UpdateDateColumn.js +1 -1
  132. package/lib/typeorm/decorator/columns/UpdateDateColumn.js.map +1 -1
  133. package/lib/typeorm/decorator/columns/VersionColumn.js +1 -1
  134. package/lib/typeorm/decorator/columns/VersionColumn.js.map +1 -1
  135. package/lib/typeorm/decorator/columns/ViewColumn.js +1 -1
  136. package/lib/typeorm/decorator/columns/ViewColumn.js.map +1 -1
  137. package/lib/typeorm/decorator/columns/VirtualColumn.js +5 -5
  138. package/lib/typeorm/decorator/columns/VirtualColumn.js.map +1 -1
  139. package/lib/typeorm/decorator/entity/ChildEntity.js +1 -1
  140. package/lib/typeorm/decorator/entity/ChildEntity.js.map +1 -1
  141. package/lib/typeorm/decorator/entity/Entity.js +4 -4
  142. package/lib/typeorm/decorator/entity/Entity.js.map +1 -1
  143. package/lib/typeorm/decorator/entity/TableInheritance.js +1 -1
  144. package/lib/typeorm/decorator/entity/TableInheritance.js.map +1 -1
  145. package/lib/typeorm/decorator/entity-view/ViewEntity.js +4 -4
  146. package/lib/typeorm/decorator/entity-view/ViewEntity.js.map +1 -1
  147. package/lib/typeorm/decorator/listeners/AfterInsert.js +2 -2
  148. package/lib/typeorm/decorator/listeners/AfterInsert.js.map +1 -1
  149. package/lib/typeorm/decorator/listeners/AfterLoad.js +2 -2
  150. package/lib/typeorm/decorator/listeners/AfterLoad.js.map +1 -1
  151. package/lib/typeorm/decorator/listeners/AfterRecover.js +2 -2
  152. package/lib/typeorm/decorator/listeners/AfterRecover.js.map +1 -1
  153. package/lib/typeorm/decorator/listeners/AfterRemove.js +2 -2
  154. package/lib/typeorm/decorator/listeners/AfterRemove.js.map +1 -1
  155. package/lib/typeorm/decorator/listeners/AfterSoftRemove.js +2 -2
  156. package/lib/typeorm/decorator/listeners/AfterSoftRemove.js.map +1 -1
  157. package/lib/typeorm/decorator/listeners/AfterUpdate.js +2 -2
  158. package/lib/typeorm/decorator/listeners/AfterUpdate.js.map +1 -1
  159. package/lib/typeorm/decorator/listeners/BeforeInsert.js +2 -2
  160. package/lib/typeorm/decorator/listeners/BeforeInsert.js.map +1 -1
  161. package/lib/typeorm/decorator/listeners/BeforeRecover.js +2 -2
  162. package/lib/typeorm/decorator/listeners/BeforeRecover.js.map +1 -1
  163. package/lib/typeorm/decorator/listeners/BeforeRemove.js +2 -2
  164. package/lib/typeorm/decorator/listeners/BeforeRemove.js.map +1 -1
  165. package/lib/typeorm/decorator/listeners/BeforeSoftRemove.js +2 -2
  166. package/lib/typeorm/decorator/listeners/BeforeSoftRemove.js.map +1 -1
  167. package/lib/typeorm/decorator/listeners/BeforeUpdate.js +2 -2
  168. package/lib/typeorm/decorator/listeners/BeforeUpdate.js.map +1 -1
  169. package/lib/typeorm/decorator/listeners/EventSubscriber.js +1 -1
  170. package/lib/typeorm/decorator/listeners/EventSubscriber.js.map +1 -1
  171. package/lib/typeorm/decorator/options/ColumnCommonOptions.js.map +1 -1
  172. package/lib/typeorm/decorator/options/ColumnEmbeddedOptions.js.map +1 -1
  173. package/lib/typeorm/decorator/options/ColumnEnumOptions.js.map +1 -1
  174. package/lib/typeorm/decorator/options/ColumnHstoreOptions.js.map +1 -1
  175. package/lib/typeorm/decorator/options/ColumnNumericOptions.js.map +1 -1
  176. package/lib/typeorm/decorator/options/ColumnOptions.js.map +1 -1
  177. package/lib/typeorm/decorator/options/ColumnWithLengthOptions.js.map +1 -1
  178. package/lib/typeorm/decorator/options/ColumnWithWidthOptions.js.map +1 -1
  179. package/lib/typeorm/decorator/options/EntityOptions.js.map +1 -1
  180. package/lib/typeorm/decorator/options/IndexOptions.js.map +1 -1
  181. package/lib/typeorm/decorator/options/JoinColumnOptions.js.map +1 -1
  182. package/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
  183. package/lib/typeorm/decorator/options/JoinTableOptions.js.map +1 -1
  184. package/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  185. package/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  186. package/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  187. package/lib/typeorm/decorator/options/RelationOptions.js.map +1 -1
  188. package/lib/typeorm/decorator/options/SpatialColumnOptions.js.map +1 -1
  189. package/lib/typeorm/decorator/options/TransactionOptions.js.map +1 -1
  190. package/lib/typeorm/decorator/options/UniqueOptions.js.map +1 -1
  191. package/lib/typeorm/decorator/options/ValueTransformer.js.map +1 -1
  192. package/lib/typeorm/decorator/options/ViewColumnOptions.js.map +1 -1
  193. package/lib/typeorm/decorator/options/ViewEntityOptions.js.map +1 -1
  194. package/lib/typeorm/decorator/options/VirtualColumnOptions.js.map +1 -1
  195. package/lib/typeorm/decorator/relations/JoinColumn.js +3 -3
  196. package/lib/typeorm/decorator/relations/JoinColumn.js.map +1 -1
  197. package/lib/typeorm/decorator/relations/JoinTable.js +1 -1
  198. package/lib/typeorm/decorator/relations/JoinTable.js.map +1 -1
  199. package/lib/typeorm/decorator/relations/ManyToMany.js +5 -5
  200. package/lib/typeorm/decorator/relations/ManyToMany.js.map +1 -1
  201. package/lib/typeorm/decorator/relations/ManyToOne.js +5 -5
  202. package/lib/typeorm/decorator/relations/ManyToOne.js.map +1 -1
  203. package/lib/typeorm/decorator/relations/OneToMany.js +3 -3
  204. package/lib/typeorm/decorator/relations/OneToMany.js.map +1 -1
  205. package/lib/typeorm/decorator/relations/OneToOne.js +5 -5
  206. package/lib/typeorm/decorator/relations/OneToOne.js.map +1 -1
  207. package/lib/typeorm/decorator/relations/RelationCount.js +1 -1
  208. package/lib/typeorm/decorator/relations/RelationCount.js.map +1 -1
  209. package/lib/typeorm/decorator/relations/RelationId.js +1 -1
  210. package/lib/typeorm/decorator/relations/RelationId.js.map +1 -1
  211. package/lib/typeorm/decorator/tree/Tree.js +1 -1
  212. package/lib/typeorm/decorator/tree/Tree.js.map +1 -1
  213. package/lib/typeorm/decorator/tree/TreeChildren.js +4 -4
  214. package/lib/typeorm/decorator/tree/TreeChildren.js.map +1 -1
  215. package/lib/typeorm/decorator/tree/TreeLevelColumn.js +1 -1
  216. package/lib/typeorm/decorator/tree/TreeLevelColumn.js.map +1 -1
  217. package/lib/typeorm/decorator/tree/TreeParent.js +4 -4
  218. package/lib/typeorm/decorator/tree/TreeParent.js.map +1 -1
  219. package/lib/typeorm/driver/Driver.js.map +1 -1
  220. package/lib/typeorm/driver/DriverFactory.js +24 -27
  221. package/lib/typeorm/driver/DriverFactory.js.map +1 -1
  222. package/lib/typeorm/driver/DriverUtils.js +78 -126
  223. package/lib/typeorm/driver/DriverUtils.js.map +1 -1
  224. package/lib/typeorm/driver/Query.js +6 -5
  225. package/lib/typeorm/driver/Query.js.map +1 -1
  226. package/lib/typeorm/driver/SqlInMemory.js +4 -7
  227. package/lib/typeorm/driver/SqlInMemory.js.map +1 -1
  228. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnection.js +9 -12
  229. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -1
  230. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
  231. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
  232. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlDriver.js +392 -399
  233. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  234. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlQueryRunner.js +1320 -2084
  235. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  236. package/lib/typeorm/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -1
  237. package/lib/typeorm/driver/aurora-postgres/AuroraPostgresDriver.js +50 -78
  238. package/lib/typeorm/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  239. package/lib/typeorm/driver/aurora-postgres/AuroraPostgresQueryRunner.js +89 -160
  240. package/lib/typeorm/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  241. package/lib/typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  242. package/lib/typeorm/driver/better-sqlite3/BetterSqlite3Driver.js +78 -152
  243. package/lib/typeorm/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  244. package/lib/typeorm/driver/better-sqlite3/BetterSqlite3QueryRunner.js +96 -155
  245. package/lib/typeorm/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  246. package/lib/typeorm/driver/capacitor/CapacitorConnectionOptions.js.map +1 -1
  247. package/lib/typeorm/driver/capacitor/CapacitorDriver.js +44 -89
  248. package/lib/typeorm/driver/capacitor/CapacitorDriver.js.map +1 -1
  249. package/lib/typeorm/driver/capacitor/CapacitorQueryRunner.js +70 -122
  250. package/lib/typeorm/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  251. package/lib/typeorm/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
  252. package/lib/typeorm/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  253. package/lib/typeorm/driver/cockroachdb/CockroachDriver.js +368 -404
  254. package/lib/typeorm/driver/cockroachdb/CockroachDriver.js.map +1 -1
  255. package/lib/typeorm/driver/cockroachdb/CockroachQueryRunner.js +1752 -2862
  256. package/lib/typeorm/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  257. package/lib/typeorm/driver/cordova/CordovaConnectionOptions.js.map +1 -1
  258. package/lib/typeorm/driver/cordova/CordovaDriver.js +36 -58
  259. package/lib/typeorm/driver/cordova/CordovaDriver.js.map +1 -1
  260. package/lib/typeorm/driver/cordova/CordovaQueryRunner.js +86 -164
  261. package/lib/typeorm/driver/cordova/CordovaQueryRunner.js.map +1 -1
  262. package/lib/typeorm/driver/expo/ExpoConnectionOptions.js.map +1 -1
  263. package/lib/typeorm/driver/expo/ExpoDriver.js +34 -44
  264. package/lib/typeorm/driver/expo/ExpoDriver.js.map +1 -1
  265. package/lib/typeorm/driver/expo/ExpoQueryRunner.js +114 -204
  266. package/lib/typeorm/driver/expo/ExpoQueryRunner.js.map +1 -1
  267. package/lib/typeorm/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  268. package/lib/typeorm/driver/mongodb/MongoDriver.js +269 -243
  269. package/lib/typeorm/driver/mongodb/MongoDriver.js.map +1 -1
  270. package/lib/typeorm/driver/mongodb/MongoQueryRunner.js +357 -793
  271. package/lib/typeorm/driver/mongodb/MongoQueryRunner.js.map +1 -1
  272. package/lib/typeorm/driver/mongodb/typings.js.map +1 -1
  273. package/lib/typeorm/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
  274. package/lib/typeorm/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  275. package/lib/typeorm/driver/mysql/MysqlDriver.js +475 -480
  276. package/lib/typeorm/driver/mysql/MysqlDriver.js.map +1 -1
  277. package/lib/typeorm/driver/mysql/MysqlQueryRunner.js +1692 -2466
  278. package/lib/typeorm/driver/mysql/MysqlQueryRunner.js.map +1 -1
  279. package/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
  280. package/lib/typeorm/driver/nativescript/NativescriptDriver.js +46 -50
  281. package/lib/typeorm/driver/nativescript/NativescriptDriver.js.map +1 -1
  282. package/lib/typeorm/driver/nativescript/NativescriptQueryRunner.js +62 -101
  283. package/lib/typeorm/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  284. package/lib/typeorm/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
  285. package/lib/typeorm/driver/oracle/OracleConnectionOptions.js.map +1 -1
  286. package/lib/typeorm/driver/oracle/OracleDriver.js +345 -377
  287. package/lib/typeorm/driver/oracle/OracleDriver.js.map +1 -1
  288. package/lib/typeorm/driver/oracle/OracleQueryRunner.js +1484 -2384
  289. package/lib/typeorm/driver/oracle/OracleQueryRunner.js.map +1 -1
  290. package/lib/typeorm/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
  291. package/lib/typeorm/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  292. package/lib/typeorm/driver/postgres/PostgresDriver.js +574 -690
  293. package/lib/typeorm/driver/postgres/PostgresDriver.js.map +1 -1
  294. package/lib/typeorm/driver/postgres/PostgresQueryRunner.js +2153 -3379
  295. package/lib/typeorm/driver/postgres/PostgresQueryRunner.js.map +1 -1
  296. package/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  297. package/lib/typeorm/driver/react-native/ReactNativeDriver.js +34 -44
  298. package/lib/typeorm/driver/react-native/ReactNativeDriver.js.map +1 -1
  299. package/lib/typeorm/driver/react-native/ReactNativeQueryRunner.js +60 -94
  300. package/lib/typeorm/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  301. package/lib/typeorm/driver/sap/SapConnectionCredentialsOptions.js.map +1 -1
  302. package/lib/typeorm/driver/sap/SapConnectionOptions.js.map +1 -1
  303. package/lib/typeorm/driver/sap/SapDriver.js +310 -305
  304. package/lib/typeorm/driver/sap/SapDriver.js.map +1 -1
  305. package/lib/typeorm/driver/sap/SapQueryRunner.js +1635 -2561
  306. package/lib/typeorm/driver/sap/SapQueryRunner.js.map +1 -1
  307. package/lib/typeorm/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
  308. package/lib/typeorm/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  309. package/lib/typeorm/driver/spanner/SpannerDriver.js +250 -236
  310. package/lib/typeorm/driver/spanner/SpannerDriver.js.map +1 -1
  311. package/lib/typeorm/driver/spanner/SpannerQueryRunner.js +1136 -2168
  312. package/lib/typeorm/driver/spanner/SpannerQueryRunner.js.map +1 -1
  313. package/lib/typeorm/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  314. package/lib/typeorm/driver/sqlite/SqliteDriver.js +82 -169
  315. package/lib/typeorm/driver/sqlite/SqliteDriver.js.map +1 -1
  316. package/lib/typeorm/driver/sqlite/SqliteQueryRunner.js +78 -122
  317. package/lib/typeorm/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  318. package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.js +280 -268
  319. package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  320. package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +1158 -1990
  321. package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  322. package/lib/typeorm/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
  323. package/lib/typeorm/driver/sqljs/SqljsDriver.js +187 -253
  324. package/lib/typeorm/driver/sqljs/SqljsDriver.js.map +1 -1
  325. package/lib/typeorm/driver/sqljs/SqljsQueryRunner.js +88 -147
  326. package/lib/typeorm/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  327. package/lib/typeorm/driver/sqlserver/MssqlParameter.js +10 -13
  328. package/lib/typeorm/driver/sqlserver/MssqlParameter.js.map +1 -1
  329. package/lib/typeorm/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  330. package/lib/typeorm/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  331. package/lib/typeorm/driver/sqlserver/SqlServerDriver.js +352 -372
  332. package/lib/typeorm/driver/sqlserver/SqlServerDriver.js.map +1 -1
  333. package/lib/typeorm/driver/sqlserver/SqlServerQueryRunner.js +1979 -3068
  334. package/lib/typeorm/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  335. package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
  336. package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
  337. package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
  338. package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
  339. package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -1
  340. package/lib/typeorm/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -1
  341. package/lib/typeorm/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -1
  342. package/lib/typeorm/driver/types/ColumnTypes.js.map +1 -1
  343. package/lib/typeorm/driver/types/CteCapabilities.js.map +1 -1
  344. package/lib/typeorm/driver/types/DataTypeDefaults.js.map +1 -1
  345. package/lib/typeorm/driver/types/DatabaseType.js.map +1 -1
  346. package/lib/typeorm/driver/types/IsolationLevel.js.map +1 -1
  347. package/lib/typeorm/driver/types/MappedColumnTypes.js.map +1 -1
  348. package/lib/typeorm/driver/types/MetadataTableType.js.map +1 -1
  349. package/lib/typeorm/driver/types/ReplicationMode.js.map +1 -1
  350. package/lib/typeorm/driver/types/UpsertType.js.map +1 -1
  351. package/lib/typeorm/entity-manager/EntityManager.js +351 -469
  352. package/lib/typeorm/entity-manager/EntityManager.js.map +1 -1
  353. package/lib/typeorm/entity-manager/EntityManagerFactory.js +7 -10
  354. package/lib/typeorm/entity-manager/EntityManagerFactory.js.map +1 -1
  355. package/lib/typeorm/entity-manager/MongoEntityManager.js +371 -487
  356. package/lib/typeorm/entity-manager/MongoEntityManager.js.map +1 -1
  357. package/lib/typeorm/entity-manager/SqljsEntityManager.js +16 -37
  358. package/lib/typeorm/entity-manager/SqljsEntityManager.js.map +1 -1
  359. package/lib/typeorm/entity-schema/EntitySchema.js +5 -5
  360. package/lib/typeorm/entity-schema/EntitySchema.js.map +1 -1
  361. package/lib/typeorm/entity-schema/EntitySchemaCheckOptions.js.map +1 -1
  362. package/lib/typeorm/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  363. package/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.js +17 -5
  364. package/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
  365. package/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.js +11 -14
  366. package/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
  367. package/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
  368. package/lib/typeorm/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  369. package/lib/typeorm/entity-schema/EntitySchemaOptions.js +82 -5
  370. package/lib/typeorm/entity-schema/EntitySchemaOptions.js.map +1 -1
  371. package/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.js.map +1 -1
  372. package/lib/typeorm/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  373. package/lib/typeorm/entity-schema/EntitySchemaTransformer.js +51 -68
  374. package/lib/typeorm/entity-schema/EntitySchemaTransformer.js.map +1 -1
  375. package/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  376. package/lib/typeorm/error/AlreadyHasActiveConnectionError.js +6 -9
  377. package/lib/typeorm/error/AlreadyHasActiveConnectionError.js.map +1 -1
  378. package/lib/typeorm/error/CannotAttachTreeChildrenEntityError.js +6 -9
  379. package/lib/typeorm/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  380. package/lib/typeorm/error/CannotConnectAlreadyConnectedError.js +5 -8
  381. package/lib/typeorm/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  382. package/lib/typeorm/error/CannotCreateEntityIdMapError.js +7 -11
  383. package/lib/typeorm/error/CannotCreateEntityIdMapError.js.map +1 -1
  384. package/lib/typeorm/error/CannotDetermineEntityError.js +6 -9
  385. package/lib/typeorm/error/CannotDetermineEntityError.js.map +1 -1
  386. package/lib/typeorm/error/CannotExecuteNotConnectedError.js +5 -8
  387. package/lib/typeorm/error/CannotExecuteNotConnectedError.js.map +1 -1
  388. package/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.js +5 -8
  389. package/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  390. package/lib/typeorm/error/CannotReflectMethodParameterTypeError.js +7 -10
  391. package/lib/typeorm/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  392. package/lib/typeorm/error/CircularRelationsError.js +6 -9
  393. package/lib/typeorm/error/CircularRelationsError.js.map +1 -1
  394. package/lib/typeorm/error/ColumnTypeUndefinedError.js +8 -11
  395. package/lib/typeorm/error/ColumnTypeUndefinedError.js.map +1 -1
  396. package/lib/typeorm/error/ConnectionIsNotSetError.js +5 -8
  397. package/lib/typeorm/error/ConnectionIsNotSetError.js.map +1 -1
  398. package/lib/typeorm/error/ConnectionNotFoundError.js +5 -8
  399. package/lib/typeorm/error/ConnectionNotFoundError.js.map +1 -1
  400. package/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.js +7 -10
  401. package/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  402. package/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.js +7 -10
  403. package/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  404. package/lib/typeorm/error/CustomRepositoryNotFoundError.js +7 -10
  405. package/lib/typeorm/error/CustomRepositoryNotFoundError.js.map +1 -1
  406. package/lib/typeorm/error/DataTypeNotSupportedError.js +7 -11
  407. package/lib/typeorm/error/DataTypeNotSupportedError.js.map +1 -1
  408. package/lib/typeorm/error/DriverOptionNotSetError.js +6 -9
  409. package/lib/typeorm/error/DriverOptionNotSetError.js.map +1 -1
  410. package/lib/typeorm/error/DriverPackageNotInstalledError.js +6 -9
  411. package/lib/typeorm/error/DriverPackageNotInstalledError.js.map +1 -1
  412. package/lib/typeorm/error/EntityMetadataNotFoundError.js +10 -14
  413. package/lib/typeorm/error/EntityMetadataNotFoundError.js.map +1 -1
  414. package/lib/typeorm/error/EntityNotFoundError.js +13 -17
  415. package/lib/typeorm/error/EntityNotFoundError.js.map +1 -1
  416. package/lib/typeorm/error/EntityPropertyNotFoundError.js +7 -11
  417. package/lib/typeorm/error/EntityPropertyNotFoundError.js.map +1 -1
  418. package/lib/typeorm/error/FindRelationsNotFoundError.js +9 -13
  419. package/lib/typeorm/error/FindRelationsNotFoundError.js.map +1 -1
  420. package/lib/typeorm/error/ForbiddenTransactionModeOverrideError.js +6 -9
  421. package/lib/typeorm/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
  422. package/lib/typeorm/error/InitializedRelationError.js +7 -10
  423. package/lib/typeorm/error/InitializedRelationError.js.map +1 -1
  424. package/lib/typeorm/error/InsertValuesMissingError.js +6 -9
  425. package/lib/typeorm/error/InsertValuesMissingError.js.map +1 -1
  426. package/lib/typeorm/error/LimitOnUpdateNotSupportedError.js +5 -8
  427. package/lib/typeorm/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  428. package/lib/typeorm/error/LockNotSupportedOnGivenDriverError.js +5 -8
  429. package/lib/typeorm/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  430. package/lib/typeorm/error/MetadataAlreadyExistsError.js +6 -9
  431. package/lib/typeorm/error/MetadataAlreadyExistsError.js.map +1 -1
  432. package/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.js +6 -9
  433. package/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  434. package/lib/typeorm/error/MissingDeleteDateColumnError.js +5 -8
  435. package/lib/typeorm/error/MissingDeleteDateColumnError.js.map +1 -1
  436. package/lib/typeorm/error/MissingDriverError.js +6 -10
  437. package/lib/typeorm/error/MissingDriverError.js.map +1 -1
  438. package/lib/typeorm/error/MissingJoinColumnError.js +12 -16
  439. package/lib/typeorm/error/MissingJoinColumnError.js.map +1 -1
  440. package/lib/typeorm/error/MissingJoinTableError.js +12 -16
  441. package/lib/typeorm/error/MissingJoinTableError.js.map +1 -1
  442. package/lib/typeorm/error/MissingPrimaryColumnError.js +6 -9
  443. package/lib/typeorm/error/MissingPrimaryColumnError.js.map +1 -1
  444. package/lib/typeorm/error/MustBeEntityError.js +5 -8
  445. package/lib/typeorm/error/MustBeEntityError.js.map +1 -1
  446. package/lib/typeorm/error/NamingStrategyNotFoundError.js +9 -13
  447. package/lib/typeorm/error/NamingStrategyNotFoundError.js.map +1 -1
  448. package/lib/typeorm/error/NestedSetMultipleRootError.js +5 -8
  449. package/lib/typeorm/error/NestedSetMultipleRootError.js.map +1 -1
  450. package/lib/typeorm/error/NoConnectionForRepositoryError.js +6 -9
  451. package/lib/typeorm/error/NoConnectionForRepositoryError.js.map +1 -1
  452. package/lib/typeorm/error/NoConnectionOptionError.js +6 -9
  453. package/lib/typeorm/error/NoConnectionOptionError.js.map +1 -1
  454. package/lib/typeorm/error/NoNeedToReleaseEntityManagerError.js +7 -10
  455. package/lib/typeorm/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  456. package/lib/typeorm/error/NoVersionOrUpdateDateColumnError.js +5 -8
  457. package/lib/typeorm/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  458. package/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.js +7 -10
  459. package/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  460. package/lib/typeorm/error/OptimisticLockCanNotBeUsedError.js +5 -8
  461. package/lib/typeorm/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  462. package/lib/typeorm/error/OptimisticLockVersionMismatchError.js +5 -8
  463. package/lib/typeorm/error/OptimisticLockVersionMismatchError.js.map +1 -1
  464. package/lib/typeorm/error/PersistedEntityNotFoundError.js +5 -8
  465. package/lib/typeorm/error/PersistedEntityNotFoundError.js.map +1 -1
  466. package/lib/typeorm/error/PessimisticLockTransactionRequiredError.js +5 -8
  467. package/lib/typeorm/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  468. package/lib/typeorm/error/PrimaryColumnCannotBeNullableError.js +6 -9
  469. package/lib/typeorm/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  470. package/lib/typeorm/error/QueryFailedError.js +18 -17
  471. package/lib/typeorm/error/QueryFailedError.js.map +1 -1
  472. package/lib/typeorm/error/QueryRunnerAlreadyReleasedError.js +5 -8
  473. package/lib/typeorm/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  474. package/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.js +6 -9
  475. package/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  476. package/lib/typeorm/error/RepositoryNotTreeError.js +9 -13
  477. package/lib/typeorm/error/RepositoryNotTreeError.js.map +1 -1
  478. package/lib/typeorm/error/ReturningStatementNotSupportedError.js +5 -8
  479. package/lib/typeorm/error/ReturningStatementNotSupportedError.js.map +1 -1
  480. package/lib/typeorm/error/SubjectRemovedAndUpdatedError.js +6 -9
  481. package/lib/typeorm/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  482. package/lib/typeorm/error/SubjectWithoutIdentifierError.js +5 -8
  483. package/lib/typeorm/error/SubjectWithoutIdentifierError.js.map +1 -1
  484. package/lib/typeorm/error/TransactionAlreadyStartedError.js +5 -8
  485. package/lib/typeorm/error/TransactionAlreadyStartedError.js.map +1 -1
  486. package/lib/typeorm/error/TransactionNotStartedError.js +5 -8
  487. package/lib/typeorm/error/TransactionNotStartedError.js.map +1 -1
  488. package/lib/typeorm/error/TreeRepositoryNotSupportedError.js +5 -8
  489. package/lib/typeorm/error/TreeRepositoryNotSupportedError.js.map +1 -1
  490. package/lib/typeorm/error/TypeORMError.js +9 -18
  491. package/lib/typeorm/error/TypeORMError.js.map +1 -1
  492. package/lib/typeorm/error/UpdateValuesMissingError.js +5 -8
  493. package/lib/typeorm/error/UpdateValuesMissingError.js.map +1 -1
  494. package/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.js +6 -9
  495. package/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  496. package/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +7 -10
  497. package/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  498. package/lib/typeorm/error/UsingJoinTableIsNotAllowedError.js +7 -10
  499. package/lib/typeorm/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  500. package/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.js +7 -10
  501. package/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  502. package/lib/typeorm/error/index.js +75 -62
  503. package/lib/typeorm/error/index.js.map +1 -1
  504. package/lib/typeorm/find-options/EqualOperator.js +6 -10
  505. package/lib/typeorm/find-options/EqualOperator.js.map +1 -1
  506. package/lib/typeorm/find-options/FindManyOptions.js.map +1 -1
  507. package/lib/typeorm/find-options/FindOneOptions.js.map +1 -1
  508. package/lib/typeorm/find-options/FindOperator.js +90 -94
  509. package/lib/typeorm/find-options/FindOperator.js.map +1 -1
  510. package/lib/typeorm/find-options/FindOperatorType.js.map +1 -1
  511. package/lib/typeorm/find-options/FindOptionsOrder.js.map +1 -1
  512. package/lib/typeorm/find-options/FindOptionsRelations.js.map +1 -1
  513. package/lib/typeorm/find-options/FindOptionsSelect.js.map +1 -1
  514. package/lib/typeorm/find-options/FindOptionsUtils.js +56 -87
  515. package/lib/typeorm/find-options/FindOptionsUtils.js.map +1 -1
  516. package/lib/typeorm/find-options/FindOptionsWhere.js.map +1 -1
  517. package/lib/typeorm/find-options/FindTreeOptions.js.map +1 -1
  518. package/lib/typeorm/find-options/JoinOptions.js.map +1 -1
  519. package/lib/typeorm/find-options/OrderByCondition.js.map +1 -1
  520. package/lib/typeorm/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
  521. package/lib/typeorm/find-options/mongodb/MongoFindOneOptions.js.map +1 -1
  522. package/lib/typeorm/find-options/operator/And.js +2 -6
  523. package/lib/typeorm/find-options/operator/And.js.map +1 -1
  524. package/lib/typeorm/find-options/operator/Any.js +1 -1
  525. package/lib/typeorm/find-options/operator/Any.js.map +1 -1
  526. package/lib/typeorm/find-options/operator/ArrayContainedBy.js +1 -1
  527. package/lib/typeorm/find-options/operator/ArrayContainedBy.js.map +1 -1
  528. package/lib/typeorm/find-options/operator/ArrayContains.js +1 -1
  529. package/lib/typeorm/find-options/operator/ArrayContains.js.map +1 -1
  530. package/lib/typeorm/find-options/operator/ArrayOverlap.js +1 -1
  531. package/lib/typeorm/find-options/operator/ArrayOverlap.js.map +1 -1
  532. package/lib/typeorm/find-options/operator/Between.js +1 -1
  533. package/lib/typeorm/find-options/operator/Between.js.map +1 -1
  534. package/lib/typeorm/find-options/operator/Equal.js +1 -1
  535. package/lib/typeorm/find-options/operator/Equal.js.map +1 -1
  536. package/lib/typeorm/find-options/operator/ILike.js +1 -1
  537. package/lib/typeorm/find-options/operator/ILike.js.map +1 -1
  538. package/lib/typeorm/find-options/operator/In.js +1 -1
  539. package/lib/typeorm/find-options/operator/In.js.map +1 -1
  540. package/lib/typeorm/find-options/operator/IsNull.js +1 -1
  541. package/lib/typeorm/find-options/operator/IsNull.js.map +1 -1
  542. package/lib/typeorm/find-options/operator/LessThan.js +1 -1
  543. package/lib/typeorm/find-options/operator/LessThan.js.map +1 -1
  544. package/lib/typeorm/find-options/operator/LessThanOrEqual.js +1 -1
  545. package/lib/typeorm/find-options/operator/LessThanOrEqual.js.map +1 -1
  546. package/lib/typeorm/find-options/operator/Like.js +1 -1
  547. package/lib/typeorm/find-options/operator/Like.js.map +1 -1
  548. package/lib/typeorm/find-options/operator/MoreThan.js +1 -1
  549. package/lib/typeorm/find-options/operator/MoreThan.js.map +1 -1
  550. package/lib/typeorm/find-options/operator/MoreThanOrEqual.js +1 -1
  551. package/lib/typeorm/find-options/operator/MoreThanOrEqual.js.map +1 -1
  552. package/lib/typeorm/find-options/operator/Not.js +1 -1
  553. package/lib/typeorm/find-options/operator/Not.js.map +1 -1
  554. package/lib/typeorm/find-options/operator/Raw.js +1 -1
  555. package/lib/typeorm/find-options/operator/Raw.js.map +1 -1
  556. package/lib/typeorm/globals.js +33 -99
  557. package/lib/typeorm/globals.js.map +1 -1
  558. package/lib/typeorm/index.d.ts +0 -1
  559. package/lib/typeorm/index.js +136 -126
  560. package/lib/typeorm/index.js.map +1 -1
  561. package/lib/typeorm/logger/AdvancedConsoleLogger.js +26 -26
  562. package/lib/typeorm/logger/AdvancedConsoleLogger.js.map +1 -1
  563. package/lib/typeorm/logger/DebugLogger.js +24 -27
  564. package/lib/typeorm/logger/DebugLogger.js.map +1 -1
  565. package/lib/typeorm/logger/FileLogger.js +31 -30
  566. package/lib/typeorm/logger/FileLogger.js.map +1 -1
  567. package/lib/typeorm/logger/Logger.js.map +1 -1
  568. package/lib/typeorm/logger/LoggerFactory.js +9 -12
  569. package/lib/typeorm/logger/LoggerFactory.js.map +1 -1
  570. package/lib/typeorm/logger/LoggerOptions.js.map +1 -1
  571. package/lib/typeorm/logger/SimpleConsoleLogger.js +25 -25
  572. package/lib/typeorm/logger/SimpleConsoleLogger.js.map +1 -1
  573. package/lib/typeorm/metadata/CheckMetadata.js +30 -6
  574. package/lib/typeorm/metadata/CheckMetadata.js.map +1 -1
  575. package/lib/typeorm/metadata/ColumnMetadata.js +343 -199
  576. package/lib/typeorm/metadata/ColumnMetadata.js.map +1 -1
  577. package/lib/typeorm/metadata/EmbeddedMetadata.js +174 -153
  578. package/lib/typeorm/metadata/EmbeddedMetadata.js.map +1 -1
  579. package/lib/typeorm/metadata/EntityListenerMetadata.js +35 -15
  580. package/lib/typeorm/metadata/EntityListenerMetadata.js.map +1 -1
  581. package/lib/typeorm/metadata/EntityMetadata.js +516 -372
  582. package/lib/typeorm/metadata/EntityMetadata.js.map +1 -1
  583. package/lib/typeorm/metadata/ExclusionMetadata.js +30 -6
  584. package/lib/typeorm/metadata/ExclusionMetadata.js.map +1 -1
  585. package/lib/typeorm/metadata/ForeignKeyMetadata.js +60 -24
  586. package/lib/typeorm/metadata/ForeignKeyMetadata.js.map +1 -1
  587. package/lib/typeorm/metadata/IndexMetadata.js +119 -73
  588. package/lib/typeorm/metadata/IndexMetadata.js.map +1 -1
  589. package/lib/typeorm/metadata/RelationCountMetadata.js +40 -10
  590. package/lib/typeorm/metadata/RelationCountMetadata.js.map +1 -1
  591. package/lib/typeorm/metadata/RelationIdMetadata.js +47 -18
  592. package/lib/typeorm/metadata/RelationIdMetadata.js.map +1 -1
  593. package/lib/typeorm/metadata/RelationMetadata.js +270 -187
  594. package/lib/typeorm/metadata/RelationMetadata.js.map +1 -1
  595. package/lib/typeorm/metadata/UniqueMetadata.js +72 -47
  596. package/lib/typeorm/metadata/UniqueMetadata.js.map +1 -1
  597. package/lib/typeorm/metadata/types/ClosureTreeOptions.js.map +1 -1
  598. package/lib/typeorm/metadata/types/DeferrableType.js.map +1 -1
  599. package/lib/typeorm/metadata/types/EventListenerTypes.js +13 -16
  600. package/lib/typeorm/metadata/types/EventListenerTypes.js.map +1 -1
  601. package/lib/typeorm/metadata/types/OnDeleteType.js.map +1 -1
  602. package/lib/typeorm/metadata/types/OnUpdateType.js.map +1 -1
  603. package/lib/typeorm/metadata/types/PropertyTypeInFunction.js.map +1 -1
  604. package/lib/typeorm/metadata/types/RelationTypeInFunction.js.map +1 -1
  605. package/lib/typeorm/metadata/types/RelationTypes.js.map +1 -1
  606. package/lib/typeorm/metadata/types/TableTypes.js.map +1 -1
  607. package/lib/typeorm/metadata/types/TreeTypes.js.map +1 -1
  608. package/lib/typeorm/metadata-args/CheckMetadataArgs.js.map +1 -1
  609. package/lib/typeorm/metadata-args/ColumnMetadataArgs.js.map +1 -1
  610. package/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.js.map +1 -1
  611. package/lib/typeorm/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
  612. package/lib/typeorm/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
  613. package/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.js.map +1 -1
  614. package/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.js.map +1 -1
  615. package/lib/typeorm/metadata-args/ExclusionMetadataArgs.js.map +1 -1
  616. package/lib/typeorm/metadata-args/GeneratedMetadataArgs.js.map +1 -1
  617. package/lib/typeorm/metadata-args/IndexMetadataArgs.js.map +1 -1
  618. package/lib/typeorm/metadata-args/InheritanceMetadataArgs.js.map +1 -1
  619. package/lib/typeorm/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  620. package/lib/typeorm/metadata-args/JoinTableMetadataArgs.js.map +1 -1
  621. package/lib/typeorm/metadata-args/MetadataArgsStorage.js +108 -113
  622. package/lib/typeorm/metadata-args/MetadataArgsStorage.js.map +1 -1
  623. package/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.js.map +1 -1
  624. package/lib/typeorm/metadata-args/RelationCountMetadataArgs.js.map +1 -1
  625. package/lib/typeorm/metadata-args/RelationIdMetadataArgs.js.map +1 -1
  626. package/lib/typeorm/metadata-args/RelationMetadataArgs.js.map +1 -1
  627. package/lib/typeorm/metadata-args/TableMetadataArgs.js.map +1 -1
  628. package/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.js.map +1 -1
  629. package/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.js.map +1 -1
  630. package/lib/typeorm/metadata-args/TreeMetadataArgs.js.map +1 -1
  631. package/lib/typeorm/metadata-args/UniqueMetadataArgs.js.map +1 -1
  632. package/lib/typeorm/metadata-args/types/ColumnMode.js.map +1 -1
  633. package/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +14 -15
  634. package/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  635. package/lib/typeorm/metadata-builder/EntityMetadataBuilder.js +291 -347
  636. package/lib/typeorm/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  637. package/lib/typeorm/metadata-builder/EntityMetadataValidator.js +63 -77
  638. package/lib/typeorm/metadata-builder/EntityMetadataValidator.js.map +1 -1
  639. package/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.js +64 -69
  640. package/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  641. package/lib/typeorm/metadata-builder/MetadataUtils.js +12 -15
  642. package/lib/typeorm/metadata-builder/MetadataUtils.js.map +1 -1
  643. package/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.js +43 -49
  644. package/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  645. package/lib/typeorm/migration/Migration.js +23 -4
  646. package/lib/typeorm/migration/Migration.js.map +1 -1
  647. package/lib/typeorm/migration/MigrationExecutor.js +432 -691
  648. package/lib/typeorm/migration/MigrationExecutor.js.map +1 -1
  649. package/lib/typeorm/migration/MigrationInterface.js.map +1 -1
  650. package/lib/typeorm/naming-strategy/DefaultNamingStrategy.js +80 -84
  651. package/lib/typeorm/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  652. package/lib/typeorm/naming-strategy/NamingStrategyInterface.js.map +1 -1
  653. package/lib/typeorm/persistence/EntityPersistExecutor.js +154 -212
  654. package/lib/typeorm/persistence/EntityPersistExecutor.js.map +1 -1
  655. package/lib/typeorm/persistence/Subject.js +162 -149
  656. package/lib/typeorm/persistence/Subject.js.map +1 -1
  657. package/lib/typeorm/persistence/SubjectChangeMap.js.map +1 -1
  658. package/lib/typeorm/persistence/SubjectChangedColumnsComputer.js +29 -35
  659. package/lib/typeorm/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  660. package/lib/typeorm/persistence/SubjectDatabaseEntityLoader.js +99 -130
  661. package/lib/typeorm/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  662. package/lib/typeorm/persistence/SubjectExecutor.js +635 -879
  663. package/lib/typeorm/persistence/SubjectExecutor.js.map +1 -1
  664. package/lib/typeorm/persistence/SubjectTopoligicalSorter.js +62 -58
  665. package/lib/typeorm/persistence/SubjectTopoligicalSorter.js.map +1 -1
  666. package/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.js +16 -19
  667. package/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  668. package/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.js +50 -53
  669. package/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  670. package/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.js +28 -33
  671. package/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  672. package/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +19 -20
  673. package/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  674. package/lib/typeorm/persistence/tree/ClosureSubjectExecutor.js +202 -271
  675. package/lib/typeorm/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  676. package/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.js +79 -121
  677. package/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  678. package/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.js +220 -353
  679. package/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  680. package/lib/typeorm/platform/PlatformTools.js +66 -78
  681. package/lib/typeorm/platform/PlatformTools.js.map +1 -1
  682. package/lib/typeorm/query-builder/Alias.js +31 -32
  683. package/lib/typeorm/query-builder/Alias.js.map +1 -1
  684. package/lib/typeorm/query-builder/Brackets.js +8 -5
  685. package/lib/typeorm/query-builder/Brackets.js.map +1 -1
  686. package/lib/typeorm/query-builder/DeleteQueryBuilder.js +96 -120
  687. package/lib/typeorm/query-builder/DeleteQueryBuilder.js.map +1 -1
  688. package/lib/typeorm/query-builder/InsertOrUpdateOptions.js.map +1 -1
  689. package/lib/typeorm/query-builder/InsertQueryBuilder.js +321 -367
  690. package/lib/typeorm/query-builder/InsertQueryBuilder.js.map +1 -1
  691. package/lib/typeorm/query-builder/JoinAttribute.js +175 -206
  692. package/lib/typeorm/query-builder/JoinAttribute.js.map +1 -1
  693. package/lib/typeorm/query-builder/JoinOptions.js.map +1 -1
  694. package/lib/typeorm/query-builder/NotBrackets.js +4 -11
  695. package/lib/typeorm/query-builder/NotBrackets.js.map +1 -1
  696. package/lib/typeorm/query-builder/QueryBuilder.js +400 -646
  697. package/lib/typeorm/query-builder/QueryBuilder.js.map +1 -1
  698. package/lib/typeorm/query-builder/QueryBuilderCte.js.map +1 -1
  699. package/lib/typeorm/query-builder/QueryBuilderUtils.js +5 -9
  700. package/lib/typeorm/query-builder/QueryBuilderUtils.js.map +1 -1
  701. package/lib/typeorm/query-builder/QueryExpressionMap.js +304 -233
  702. package/lib/typeorm/query-builder/QueryExpressionMap.js.map +1 -1
  703. package/lib/typeorm/query-builder/QueryPartialEntity.js.map +1 -1
  704. package/lib/typeorm/query-builder/RelationIdLoader.js +166 -189
  705. package/lib/typeorm/query-builder/RelationIdLoader.js.map +1 -1
  706. package/lib/typeorm/query-builder/RelationLoader.js +81 -94
  707. package/lib/typeorm/query-builder/RelationLoader.js.map +1 -1
  708. package/lib/typeorm/query-builder/RelationQueryBuilder.js +91 -127
  709. package/lib/typeorm/query-builder/RelationQueryBuilder.js.map +1 -1
  710. package/lib/typeorm/query-builder/RelationRemover.js +121 -124
  711. package/lib/typeorm/query-builder/RelationRemover.js.map +1 -1
  712. package/lib/typeorm/query-builder/RelationUpdater.js +130 -148
  713. package/lib/typeorm/query-builder/RelationUpdater.js.map +1 -1
  714. package/lib/typeorm/query-builder/ReturningResultsEntityUpdator.js +131 -159
  715. package/lib/typeorm/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  716. package/lib/typeorm/query-builder/SelectQuery.js.map +1 -1
  717. package/lib/typeorm/query-builder/SelectQueryBuilder.js +955 -1211
  718. package/lib/typeorm/query-builder/SelectQueryBuilder.js.map +1 -1
  719. package/lib/typeorm/query-builder/SelectQueryBuilderOption.js.map +1 -1
  720. package/lib/typeorm/query-builder/SoftDeleteQueryBuilder.js +155 -194
  721. package/lib/typeorm/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  722. package/lib/typeorm/query-builder/UpdateQueryBuilder.js +204 -246
  723. package/lib/typeorm/query-builder/UpdateQueryBuilder.js.map +1 -1
  724. package/lib/typeorm/query-builder/WhereClause.js.map +1 -1
  725. package/lib/typeorm/query-builder/WhereExpressionBuilder.js.map +1 -1
  726. package/lib/typeorm/query-builder/relation-count/RelationCountAttribute.js +85 -98
  727. package/lib/typeorm/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  728. package/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.js.map +1 -1
  729. package/lib/typeorm/query-builder/relation-count/RelationCountLoader.js +153 -172
  730. package/lib/typeorm/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  731. package/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +16 -17
  732. package/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  733. package/lib/typeorm/query-builder/relation-id/RelationIdAttribute.js +93 -107
  734. package/lib/typeorm/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  735. package/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
  736. package/lib/typeorm/query-builder/relation-id/RelationIdLoader.js +259 -267
  737. package/lib/typeorm/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  738. package/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +16 -17
  739. package/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  740. package/lib/typeorm/query-builder/result/DeleteResult.js +14 -8
  741. package/lib/typeorm/query-builder/result/DeleteResult.js.map +1 -1
  742. package/lib/typeorm/query-builder/result/InsertResult.js +19 -18
  743. package/lib/typeorm/query-builder/result/InsertResult.js.map +1 -1
  744. package/lib/typeorm/query-builder/result/UpdateResult.js +24 -18
  745. package/lib/typeorm/query-builder/result/UpdateResult.js.map +1 -1
  746. package/lib/typeorm/query-builder/transformer/DocumentToEntityTransformer.js +24 -26
  747. package/lib/typeorm/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  748. package/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +77 -112
  749. package/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  750. package/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.js +16 -22
  751. package/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  752. package/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.js +117 -132
  753. package/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  754. package/lib/typeorm/query-runner/BaseQueryRunner.js +227 -393
  755. package/lib/typeorm/query-runner/BaseQueryRunner.js.map +1 -1
  756. package/lib/typeorm/query-runner/QueryLock.js +19 -32
  757. package/lib/typeorm/query-runner/QueryLock.js.map +1 -1
  758. package/lib/typeorm/query-runner/QueryResult.js +14 -9
  759. package/lib/typeorm/query-runner/QueryResult.js.map +1 -1
  760. package/lib/typeorm/query-runner/QueryRunner.js.map +1 -1
  761. package/lib/typeorm/repository/AbstractRepository.js +46 -50
  762. package/lib/typeorm/repository/AbstractRepository.js.map +1 -1
  763. package/lib/typeorm/repository/BaseEntity.js +106 -123
  764. package/lib/typeorm/repository/BaseEntity.js.map +1 -1
  765. package/lib/typeorm/repository/EntityId.js.map +1 -1
  766. package/lib/typeorm/repository/FindTreesOptions.js.map +1 -1
  767. package/lib/typeorm/repository/MongoRepository.js +109 -135
  768. package/lib/typeorm/repository/MongoRepository.js.map +1 -1
  769. package/lib/typeorm/repository/RemoveOptions.js.map +1 -1
  770. package/lib/typeorm/repository/Repository.js +108 -140
  771. package/lib/typeorm/repository/Repository.js.map +1 -1
  772. package/lib/typeorm/repository/SaveOptions.js.map +1 -1
  773. package/lib/typeorm/repository/TreeRepository.js +107 -154
  774. package/lib/typeorm/repository/TreeRepository.js.map +1 -1
  775. package/lib/typeorm/repository/UpsertOptions.js.map +1 -1
  776. package/lib/typeorm/schema-builder/MongoSchemaBuilder.js +30 -42
  777. package/lib/typeorm/schema-builder/MongoSchemaBuilder.js.map +1 -1
  778. package/lib/typeorm/schema-builder/RdbmsSchemaBuilder.js +727 -1938
  779. package/lib/typeorm/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  780. package/lib/typeorm/schema-builder/SchemaBuilder.js.map +1 -1
  781. package/lib/typeorm/schema-builder/options/TableCheckOptions.js.map +1 -1
  782. package/lib/typeorm/schema-builder/options/TableColumnOptions.js.map +1 -1
  783. package/lib/typeorm/schema-builder/options/TableExclusionOptions.js.map +1 -1
  784. package/lib/typeorm/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  785. package/lib/typeorm/schema-builder/options/TableIndexOptions.js.map +1 -1
  786. package/lib/typeorm/schema-builder/options/TableOptions.js.map +1 -1
  787. package/lib/typeorm/schema-builder/options/TableUniqueOptions.js.map +1 -1
  788. package/lib/typeorm/schema-builder/options/ViewOptions.js.map +1 -1
  789. package/lib/typeorm/schema-builder/table/Table.js +160 -157
  790. package/lib/typeorm/schema-builder/table/Table.js.map +1 -1
  791. package/lib/typeorm/schema-builder/table/TableCheck.js +24 -15
  792. package/lib/typeorm/schema-builder/table/TableCheck.js.map +1 -1
  793. package/lib/typeorm/schema-builder/table/TableColumn.js +123 -41
  794. package/lib/typeorm/schema-builder/table/TableColumn.js.map +1 -1
  795. package/lib/typeorm/schema-builder/table/TableExclusion.js +19 -9
  796. package/lib/typeorm/schema-builder/table/TableExclusion.js.map +1 -1
  797. package/lib/typeorm/schema-builder/table/TableForeignKey.js +52 -20
  798. package/lib/typeorm/schema-builder/table/TableForeignKey.js.map +1 -1
  799. package/lib/typeorm/schema-builder/table/TableIndex.js +52 -16
  800. package/lib/typeorm/schema-builder/table/TableIndex.js.map +1 -1
  801. package/lib/typeorm/schema-builder/table/TableUnique.js +26 -16
  802. package/lib/typeorm/schema-builder/table/TableUnique.js.map +1 -1
  803. package/lib/typeorm/schema-builder/util/TableUtils.js +5 -8
  804. package/lib/typeorm/schema-builder/util/TableUtils.js.map +1 -1
  805. package/lib/typeorm/schema-builder/util/ViewUtils.js +4 -7
  806. package/lib/typeorm/schema-builder/util/ViewUtils.js.map +1 -1
  807. package/lib/typeorm/schema-builder/view/View.js +32 -10
  808. package/lib/typeorm/schema-builder/view/View.js.map +1 -1
  809. package/lib/typeorm/subscriber/Broadcaster.js +180 -216
  810. package/lib/typeorm/subscriber/Broadcaster.js.map +1 -1
  811. package/lib/typeorm/subscriber/BroadcasterResult.js +16 -29
  812. package/lib/typeorm/subscriber/BroadcasterResult.js.map +1 -1
  813. package/lib/typeorm/subscriber/EntitySubscriberInterface.js.map +1 -1
  814. package/lib/typeorm/subscriber/event/InsertEvent.js.map +1 -1
  815. package/lib/typeorm/subscriber/event/LoadEvent.js.map +1 -1
  816. package/lib/typeorm/subscriber/event/RecoverEvent.js.map +1 -1
  817. package/lib/typeorm/subscriber/event/RemoveEvent.js.map +1 -1
  818. package/lib/typeorm/subscriber/event/SoftRemoveEvent.js.map +1 -1
  819. package/lib/typeorm/subscriber/event/TransactionCommitEvent.js.map +1 -1
  820. package/lib/typeorm/subscriber/event/TransactionRollbackEvent.js.map +1 -1
  821. package/lib/typeorm/subscriber/event/TransactionStartEvent.js.map +1 -1
  822. package/lib/typeorm/subscriber/event/UpdateEvent.js.map +1 -1
  823. package/lib/typeorm/util/ApplyValueTransformers.js +9 -12
  824. package/lib/typeorm/util/ApplyValueTransformers.js.map +1 -1
  825. package/lib/typeorm/util/DateUtils.js +44 -53
  826. package/lib/typeorm/util/DateUtils.js.map +1 -1
  827. package/lib/typeorm/util/DepGraph.js +50 -53
  828. package/lib/typeorm/util/DepGraph.js.map +1 -1
  829. package/lib/typeorm/util/DirectoryExportedClassesLoader.js +48 -70
  830. package/lib/typeorm/util/DirectoryExportedClassesLoader.js.map +1 -1
  831. package/lib/typeorm/util/ImportUtils.js +43 -65
  832. package/lib/typeorm/util/ImportUtils.js.map +1 -1
  833. package/lib/typeorm/util/InstanceChecker.js +64 -67
  834. package/lib/typeorm/util/InstanceChecker.js.map +1 -1
  835. package/lib/typeorm/util/ObjectUtils.js +13 -42
  836. package/lib/typeorm/util/ObjectUtils.js.map +1 -1
  837. package/lib/typeorm/util/OrmUtils.js +91 -158
  838. package/lib/typeorm/util/OrmUtils.js.map +1 -1
  839. package/lib/typeorm/util/PathUtils.js +8 -8
  840. package/lib/typeorm/util/PathUtils.js.map +1 -1
  841. package/lib/typeorm/util/RandomGenerator.js +22 -25
  842. package/lib/typeorm/util/RandomGenerator.js.map +1 -1
  843. package/lib/typeorm/util/StringUtils.js +17 -21
  844. package/lib/typeorm/util/StringUtils.js.map +1 -1
  845. package/lib/typeorm/util/TreeRepositoryUtils.js +27 -30
  846. package/lib/typeorm/util/TreeRepositoryUtils.js.map +1 -1
  847. package/lib/typeorm/util/VersionUtils.js +9 -13
  848. package/lib/typeorm/util/VersionUtils.js.map +1 -1
  849. package/lib/typeorm/util/escapeRegExp.js +2 -2
  850. package/lib/typeorm/util/escapeRegExp.js.map +1 -1
  851. package/migrations/index.js +15 -2
  852. package/migrations/index.js.map +1 -1
  853. package/migrations/migrations_index._auto-generated_.d.ts +1 -0
  854. package/migrations/migrations_index._auto-generated_.js.map +1 -1
  855. package/package.json +8 -44
  856. package/src.d.ts +1 -1
  857. package/taon.jsonc +7 -34
  858. package/tmp-environment.json +8 -370
  859. package/websql/README.md +24 -24
  860. package/websql/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +1 -1
  861. package/websql/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +1 -1
  862. package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +1 -1
  863. package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +1 -1
  864. package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +1 -1
  865. package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +1 -1
  866. package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +1 -1
  867. package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +1 -1
  868. package/websql/esm2022/lib/typeorm/index.mjs +1 -3
  869. package/websql/fesm2022/taon-typeorm.mjs.map +1 -1
  870. package/browser/package.json +0 -25
  871. package/websql/package.json +0 -25
@@ -1,54 +1,68 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SubjectExecutor = void 0;
4
- var tslib_1 = require("tslib");
5
- var SubjectTopoligicalSorter_1 = require("./SubjectTopoligicalSorter");
6
- var SubjectChangedColumnsComputer_1 = require("./SubjectChangedColumnsComputer");
7
- var SubjectWithoutIdentifierError_1 = require("../error/SubjectWithoutIdentifierError");
8
- var SubjectRemovedAndUpdatedError_1 = require("../error/SubjectRemovedAndUpdatedError");
9
- var BroadcasterResult_1 = require("../subscriber/BroadcasterResult");
10
- var NestedSetSubjectExecutor_1 = require("./tree/NestedSetSubjectExecutor");
11
- var ClosureSubjectExecutor_1 = require("./tree/ClosureSubjectExecutor");
12
- var MaterializedPathSubjectExecutor_1 = require("./tree/MaterializedPathSubjectExecutor");
13
- var OrmUtils_1 = require("../util/OrmUtils");
14
- var ObjectUtils_1 = require("../util/ObjectUtils");
15
- var InstanceChecker_1 = require("../util/InstanceChecker");
4
+ const SubjectTopoligicalSorter_1 = require("./SubjectTopoligicalSorter");
5
+ const SubjectChangedColumnsComputer_1 = require("./SubjectChangedColumnsComputer");
6
+ const SubjectWithoutIdentifierError_1 = require("../error/SubjectWithoutIdentifierError");
7
+ const SubjectRemovedAndUpdatedError_1 = require("../error/SubjectRemovedAndUpdatedError");
8
+ const BroadcasterResult_1 = require("../subscriber/BroadcasterResult");
9
+ const NestedSetSubjectExecutor_1 = require("./tree/NestedSetSubjectExecutor");
10
+ const ClosureSubjectExecutor_1 = require("./tree/ClosureSubjectExecutor");
11
+ const MaterializedPathSubjectExecutor_1 = require("./tree/MaterializedPathSubjectExecutor");
12
+ const OrmUtils_1 = require("../util/OrmUtils");
13
+ const ObjectUtils_1 = require("../util/ObjectUtils");
14
+ const InstanceChecker_1 = require("../util/InstanceChecker");
16
15
  /**
17
16
  * Executes all database operations (inserts, updated, deletes) that must be executed
18
17
  * with given persistence subjects.
19
18
  */
20
- var SubjectExecutor = /** @class */ (function () {
19
+ class SubjectExecutor {
20
+ // -------------------------------------------------------------------------
21
+ // Public Properties
22
+ // -------------------------------------------------------------------------
23
+ /**
24
+ * Indicates if executor has any operations to execute (e.g. has insert / update / delete operations to be executed).
25
+ */
26
+ hasExecutableOperations = false;
27
+ // -------------------------------------------------------------------------
28
+ // Protected Properties
29
+ // -------------------------------------------------------------------------
30
+ /**
31
+ * QueryRunner used to execute all queries with a given subjects.
32
+ */
33
+ queryRunner;
34
+ /**
35
+ * Persistence options.
36
+ */
37
+ options;
38
+ /**
39
+ * All subjects that needs to be operated.
40
+ */
41
+ allSubjects;
42
+ /**
43
+ * Subjects that must be inserted.
44
+ */
45
+ insertSubjects = [];
46
+ /**
47
+ * Subjects that must be updated.
48
+ */
49
+ updateSubjects = [];
50
+ /**
51
+ * Subjects that must be removed.
52
+ */
53
+ removeSubjects = [];
54
+ /**
55
+ * Subjects that must be soft-removed.
56
+ */
57
+ softRemoveSubjects = [];
58
+ /**
59
+ * Subjects that must be recovered.
60
+ */
61
+ recoverSubjects = [];
21
62
  // -------------------------------------------------------------------------
22
63
  // Constructor
23
64
  // -------------------------------------------------------------------------
24
- function SubjectExecutor(queryRunner, subjects, options) {
25
- // -------------------------------------------------------------------------
26
- // Public Properties
27
- // -------------------------------------------------------------------------
28
- /**
29
- * Indicates if executor has any operations to execute (e.g. has insert / update / delete operations to be executed).
30
- */
31
- this.hasExecutableOperations = false;
32
- /**
33
- * Subjects that must be inserted.
34
- */
35
- this.insertSubjects = [];
36
- /**
37
- * Subjects that must be updated.
38
- */
39
- this.updateSubjects = [];
40
- /**
41
- * Subjects that must be removed.
42
- */
43
- this.removeSubjects = [];
44
- /**
45
- * Subjects that must be soft-removed.
46
- */
47
- this.softRemoveSubjects = [];
48
- /**
49
- * Subjects that must be recovered.
50
- */
51
- this.recoverSubjects = [];
65
+ constructor(queryRunner, subjects, options) {
52
66
  this.queryRunner = queryRunner;
53
67
  this.allSubjects = subjects;
54
68
  this.options = options;
@@ -62,892 +76,636 @@ var SubjectExecutor = /** @class */ (function () {
62
76
  * Executes all operations over given array of subjects.
63
77
  * Executes queries using given query runner.
64
78
  */
65
- SubjectExecutor.prototype.execute = function () {
66
- return tslib_1.__awaiter(this, void 0, void 0, function () {
67
- var broadcasterResult;
68
- return tslib_1.__generator(this, function (_a) {
69
- switch (_a.label) {
70
- case 0:
71
- broadcasterResult = undefined;
72
- if (!(!this.options || this.options.listeners !== false)) return [3 /*break*/, 2];
73
- // console.time(".broadcastBeforeEventsForAll");
74
- broadcasterResult = this.broadcastBeforeEventsForAll();
75
- if (!(broadcasterResult.promises.length > 0)) return [3 /*break*/, 2];
76
- return [4 /*yield*/, Promise.all(broadcasterResult.promises)
77
- // console.timeEnd(".broadcastBeforeEventsForAll");
78
- ];
79
- case 1:
80
- _a.sent();
81
- _a.label = 2;
82
- case 2:
83
- // since event listeners and subscribers can call save methods and/or trigger entity changes we need to recompute operational subjects
84
- // recompute only in the case if any listener or subscriber was really executed
85
- if (broadcasterResult && broadcasterResult.count > 0) {
86
- // console.time(".recompute");
87
- this.insertSubjects.forEach(function (subject) { return subject.recompute(); });
88
- this.updateSubjects.forEach(function (subject) { return subject.recompute(); });
89
- this.removeSubjects.forEach(function (subject) { return subject.recompute(); });
90
- this.softRemoveSubjects.forEach(function (subject) { return subject.recompute(); });
91
- this.recoverSubjects.forEach(function (subject) { return subject.recompute(); });
92
- this.recompute();
93
- // console.timeEnd(".recompute");
94
- }
95
- // make sure our insert subjects are sorted (using topological sorting) to make cascade inserts work properly
96
- // console.timeEnd("prepare");
97
- // execute all insert operations
98
- // console.time(".insertion");
99
- this.insertSubjects = new SubjectTopoligicalSorter_1.SubjectTopoligicalSorter(this.insertSubjects).sort("insert");
100
- return [4 /*yield*/, this.executeInsertOperations()
101
- // console.timeEnd(".insertion");
102
- // recompute update operations since insertion can create updation operations for the
103
- // properties it wasn't able to handle on its own (referenced columns)
104
- ];
105
- case 3:
106
- _a.sent();
107
- // console.timeEnd(".insertion");
108
- // recompute update operations since insertion can create updation operations for the
109
- // properties it wasn't able to handle on its own (referenced columns)
110
- this.updateSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeUpdated; });
111
- // execute update operations
112
- // console.time(".updation");
113
- return [4 /*yield*/, this.executeUpdateOperations()
114
- // console.timeEnd(".updation");
115
- // make sure our remove subjects are sorted (using topological sorting) when multiple entities are passed for the removal
116
- // console.time(".removal");
117
- ];
118
- case 4:
119
- // execute update operations
120
- // console.time(".updation");
121
- _a.sent();
122
- // console.timeEnd(".updation");
123
- // make sure our remove subjects are sorted (using topological sorting) when multiple entities are passed for the removal
124
- // console.time(".removal");
125
- this.removeSubjects = new SubjectTopoligicalSorter_1.SubjectTopoligicalSorter(this.removeSubjects).sort("delete");
126
- return [4 /*yield*/, this.executeRemoveOperations()
127
- // console.timeEnd(".removal");
128
- // recompute soft-remove operations
129
- ];
130
- case 5:
131
- _a.sent();
132
- // console.timeEnd(".removal");
133
- // recompute soft-remove operations
134
- this.softRemoveSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeSoftRemoved; });
135
- // execute soft-remove operations
136
- return [4 /*yield*/, this.executeSoftRemoveOperations()
137
- // recompute recover operations
138
- ];
139
- case 6:
140
- // execute soft-remove operations
141
- _a.sent();
142
- // recompute recover operations
143
- this.recoverSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeRecovered; });
144
- // execute recover operations
145
- return [4 /*yield*/, this.executeRecoverOperations()
146
- // update all special columns in persisted entities, like inserted id or remove ids from the removed entities
147
- // console.time(".updateSpecialColumnsInPersistedEntities");
148
- ];
149
- case 7:
150
- // execute recover operations
151
- _a.sent();
152
- // update all special columns in persisted entities, like inserted id or remove ids from the removed entities
153
- // console.time(".updateSpecialColumnsInPersistedEntities");
154
- return [4 /*yield*/, this.updateSpecialColumnsInPersistedEntities()
155
- // console.timeEnd(".updateSpecialColumnsInPersistedEntities");
156
- // finally broadcast "after" events after we finish insert / update / remove operations
157
- ];
158
- case 8:
159
- // update all special columns in persisted entities, like inserted id or remove ids from the removed entities
160
- // console.time(".updateSpecialColumnsInPersistedEntities");
161
- _a.sent();
162
- if (!(!this.options || this.options.listeners !== false)) return [3 /*break*/, 10];
163
- // console.time(".broadcastAfterEventsForAll");
164
- broadcasterResult = this.broadcastAfterEventsForAll();
165
- if (!(broadcasterResult.promises.length > 0)) return [3 /*break*/, 10];
166
- return [4 /*yield*/, Promise.all(broadcasterResult.promises)
167
- // console.timeEnd(".broadcastAfterEventsForAll");
168
- ];
169
- case 9:
170
- _a.sent();
171
- _a.label = 10;
172
- case 10: return [2 /*return*/];
173
- }
174
- });
175
- });
176
- };
79
+ async execute() {
80
+ // console.time("SubjectExecutor.execute");
81
+ // broadcast "before" events before we start insert / update / remove operations
82
+ let broadcasterResult = undefined;
83
+ if (!this.options || this.options.listeners !== false) {
84
+ // console.time(".broadcastBeforeEventsForAll");
85
+ broadcasterResult = this.broadcastBeforeEventsForAll();
86
+ if (broadcasterResult.promises.length > 0)
87
+ await Promise.all(broadcasterResult.promises);
88
+ // console.timeEnd(".broadcastBeforeEventsForAll");
89
+ }
90
+ // since event listeners and subscribers can call save methods and/or trigger entity changes we need to recompute operational subjects
91
+ // recompute only in the case if any listener or subscriber was really executed
92
+ if (broadcasterResult && broadcasterResult.count > 0) {
93
+ // console.time(".recompute");
94
+ this.insertSubjects.forEach((subject) => subject.recompute());
95
+ this.updateSubjects.forEach((subject) => subject.recompute());
96
+ this.removeSubjects.forEach((subject) => subject.recompute());
97
+ this.softRemoveSubjects.forEach((subject) => subject.recompute());
98
+ this.recoverSubjects.forEach((subject) => subject.recompute());
99
+ this.recompute();
100
+ // console.timeEnd(".recompute");
101
+ }
102
+ // make sure our insert subjects are sorted (using topological sorting) to make cascade inserts work properly
103
+ // console.timeEnd("prepare");
104
+ // execute all insert operations
105
+ // console.time(".insertion");
106
+ this.insertSubjects = new SubjectTopoligicalSorter_1.SubjectTopoligicalSorter(this.insertSubjects).sort("insert");
107
+ await this.executeInsertOperations();
108
+ // console.timeEnd(".insertion");
109
+ // recompute update operations since insertion can create updation operations for the
110
+ // properties it wasn't able to handle on its own (referenced columns)
111
+ this.updateSubjects = this.allSubjects.filter((subject) => subject.mustBeUpdated);
112
+ // execute update operations
113
+ // console.time(".updation");
114
+ await this.executeUpdateOperations();
115
+ // console.timeEnd(".updation");
116
+ // make sure our remove subjects are sorted (using topological sorting) when multiple entities are passed for the removal
117
+ // console.time(".removal");
118
+ this.removeSubjects = new SubjectTopoligicalSorter_1.SubjectTopoligicalSorter(this.removeSubjects).sort("delete");
119
+ await this.executeRemoveOperations();
120
+ // console.timeEnd(".removal");
121
+ // recompute soft-remove operations
122
+ this.softRemoveSubjects = this.allSubjects.filter((subject) => subject.mustBeSoftRemoved);
123
+ // execute soft-remove operations
124
+ await this.executeSoftRemoveOperations();
125
+ // recompute recover operations
126
+ this.recoverSubjects = this.allSubjects.filter((subject) => subject.mustBeRecovered);
127
+ // execute recover operations
128
+ await this.executeRecoverOperations();
129
+ // update all special columns in persisted entities, like inserted id or remove ids from the removed entities
130
+ // console.time(".updateSpecialColumnsInPersistedEntities");
131
+ await this.updateSpecialColumnsInPersistedEntities();
132
+ // console.timeEnd(".updateSpecialColumnsInPersistedEntities");
133
+ // finally broadcast "after" events after we finish insert / update / remove operations
134
+ if (!this.options || this.options.listeners !== false) {
135
+ // console.time(".broadcastAfterEventsForAll");
136
+ broadcasterResult = this.broadcastAfterEventsForAll();
137
+ if (broadcasterResult.promises.length > 0)
138
+ await Promise.all(broadcasterResult.promises);
139
+ // console.timeEnd(".broadcastAfterEventsForAll");
140
+ }
141
+ // console.timeEnd("SubjectExecutor.execute");
142
+ }
177
143
  // -------------------------------------------------------------------------
178
144
  // Protected Methods
179
145
  // -------------------------------------------------------------------------
180
146
  /**
181
147
  * Validates all given subjects.
182
148
  */
183
- SubjectExecutor.prototype.validate = function () {
184
- this.allSubjects.forEach(function (subject) {
149
+ validate() {
150
+ this.allSubjects.forEach((subject) => {
185
151
  if (subject.mustBeUpdated && subject.mustBeRemoved)
186
152
  throw new SubjectRemovedAndUpdatedError_1.SubjectRemovedAndUpdatedError(subject);
187
153
  });
188
- };
154
+ }
189
155
  /**
190
156
  * Performs entity re-computations - finds changed columns, re-builds insert/update/remove subjects.
191
157
  */
192
- SubjectExecutor.prototype.recompute = function () {
158
+ recompute() {
193
159
  new SubjectChangedColumnsComputer_1.SubjectChangedColumnsComputer().compute(this.allSubjects);
194
- this.insertSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeInserted; });
195
- this.updateSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeUpdated; });
196
- this.removeSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeRemoved; });
197
- this.softRemoveSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeSoftRemoved; });
198
- this.recoverSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeRecovered; });
160
+ this.insertSubjects = this.allSubjects.filter((subject) => subject.mustBeInserted);
161
+ this.updateSubjects = this.allSubjects.filter((subject) => subject.mustBeUpdated);
162
+ this.removeSubjects = this.allSubjects.filter((subject) => subject.mustBeRemoved);
163
+ this.softRemoveSubjects = this.allSubjects.filter((subject) => subject.mustBeSoftRemoved);
164
+ this.recoverSubjects = this.allSubjects.filter((subject) => subject.mustBeRecovered);
199
165
  this.hasExecutableOperations =
200
166
  this.insertSubjects.length > 0 ||
201
167
  this.updateSubjects.length > 0 ||
202
168
  this.removeSubjects.length > 0 ||
203
169
  this.softRemoveSubjects.length > 0 ||
204
170
  this.recoverSubjects.length > 0;
205
- };
171
+ }
206
172
  /**
207
173
  * Broadcasts "BEFORE_INSERT", "BEFORE_UPDATE", "BEFORE_REMOVE", "BEFORE_SOFT_REMOVE", "BEFORE_RECOVER" events for all given subjects.
208
174
  */
209
- SubjectExecutor.prototype.broadcastBeforeEventsForAll = function () {
210
- var _this = this;
211
- var result = new BroadcasterResult_1.BroadcasterResult();
175
+ broadcastBeforeEventsForAll() {
176
+ const result = new BroadcasterResult_1.BroadcasterResult();
212
177
  if (this.insertSubjects.length)
213
- this.insertSubjects.forEach(function (subject) {
214
- return _this.queryRunner.broadcaster.broadcastBeforeInsertEvent(result, subject.metadata, subject.entity);
215
- });
178
+ this.insertSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastBeforeInsertEvent(result, subject.metadata, subject.entity));
216
179
  if (this.updateSubjects.length)
217
- this.updateSubjects.forEach(function (subject) {
218
- return _this.queryRunner.broadcaster.broadcastBeforeUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations);
219
- });
180
+ this.updateSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastBeforeUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations));
220
181
  if (this.removeSubjects.length)
221
- this.removeSubjects.forEach(function (subject) {
222
- return _this.queryRunner.broadcaster.broadcastBeforeRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity);
223
- });
182
+ this.removeSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastBeforeRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
224
183
  if (this.softRemoveSubjects.length)
225
- this.softRemoveSubjects.forEach(function (subject) {
226
- return _this.queryRunner.broadcaster.broadcastBeforeSoftRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity);
227
- });
184
+ this.softRemoveSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastBeforeSoftRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
228
185
  if (this.recoverSubjects.length)
229
- this.recoverSubjects.forEach(function (subject) {
230
- return _this.queryRunner.broadcaster.broadcastBeforeRecoverEvent(result, subject.metadata, subject.entity, subject.databaseEntity);
231
- });
186
+ this.recoverSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastBeforeRecoverEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
232
187
  return result;
233
- };
188
+ }
234
189
  /**
235
190
  * Broadcasts "AFTER_INSERT", "AFTER_UPDATE", "AFTER_REMOVE", "AFTER_SOFT_REMOVE", "AFTER_RECOVER" events for all given subjects.
236
191
  * Returns void if there wasn't any listener or subscriber executed.
237
192
  * Note: this method has a performance-optimized code organization.
238
193
  */
239
- SubjectExecutor.prototype.broadcastAfterEventsForAll = function () {
240
- var _this = this;
241
- var result = new BroadcasterResult_1.BroadcasterResult();
194
+ broadcastAfterEventsForAll() {
195
+ const result = new BroadcasterResult_1.BroadcasterResult();
242
196
  if (this.insertSubjects.length)
243
- this.insertSubjects.forEach(function (subject) {
244
- return _this.queryRunner.broadcaster.broadcastAfterInsertEvent(result, subject.metadata, subject.entity);
245
- });
197
+ this.insertSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastAfterInsertEvent(result, subject.metadata, subject.entity));
246
198
  if (this.updateSubjects.length)
247
- this.updateSubjects.forEach(function (subject) {
248
- return _this.queryRunner.broadcaster.broadcastAfterUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations);
249
- });
199
+ this.updateSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastAfterUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations));
250
200
  if (this.removeSubjects.length)
251
- this.removeSubjects.forEach(function (subject) {
252
- return _this.queryRunner.broadcaster.broadcastAfterRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity);
253
- });
201
+ this.removeSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastAfterRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
254
202
  if (this.softRemoveSubjects.length)
255
- this.softRemoveSubjects.forEach(function (subject) {
256
- return _this.queryRunner.broadcaster.broadcastAfterSoftRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity);
257
- });
203
+ this.softRemoveSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastAfterSoftRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
258
204
  if (this.recoverSubjects.length)
259
- this.recoverSubjects.forEach(function (subject) {
260
- return _this.queryRunner.broadcaster.broadcastAfterRecoverEvent(result, subject.metadata, subject.entity, subject.databaseEntity);
261
- });
205
+ this.recoverSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastAfterRecoverEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
262
206
  return result;
263
- };
207
+ }
264
208
  /**
265
209
  * Executes insert operations.
266
210
  */
267
- SubjectExecutor.prototype.executeInsertOperations = function () {
268
- return tslib_1.__awaiter(this, void 0, void 0, function () {
269
- var _a, groupedInsertSubjects, groupedInsertSubjectKeys, _loop_1, this_1, groupedInsertSubjectKeys_1, groupedInsertSubjectKeys_1_1, groupName, e_1_1;
270
- var e_1, _b;
271
- var _this = this;
272
- return tslib_1.__generator(this, function (_c) {
273
- switch (_c.label) {
274
- case 0:
275
- _a = tslib_1.__read(this.groupBulkSubjects(this.insertSubjects, "insert"), 2), groupedInsertSubjects = _a[0], groupedInsertSubjectKeys = _a[1];
276
- _loop_1 = function (groupName) {
277
- var subjects, bulkInsertMaps, bulkInsertSubjects, singleInsertSubjects, insertResult_1, insertResult_2, _loop_2, singleInsertSubjects_1, singleInsertSubjects_1_1, subject, e_2_1;
278
- var e_2, _d;
279
- return tslib_1.__generator(this, function (_e) {
280
- switch (_e.label) {
281
- case 0:
282
- subjects = groupedInsertSubjects[groupName];
283
- bulkInsertMaps = [];
284
- bulkInsertSubjects = [];
285
- singleInsertSubjects = [];
286
- if (this_1.queryRunner.connection.driver.options.type === "mongodb") {
287
- subjects.forEach(function (subject) {
288
- if (subject.metadata.createDateColumn && subject.entity) {
289
- subject.entity[subject.metadata.createDateColumn.databaseName] = new Date();
290
- }
291
- if (subject.metadata.updateDateColumn && subject.entity) {
292
- subject.entity[subject.metadata.updateDateColumn.databaseName] = new Date();
293
- }
294
- subject.createValueSetAndPopChangeMap();
295
- bulkInsertSubjects.push(subject);
296
- bulkInsertMaps.push(subject.entity);
297
- });
298
- }
299
- else if (this_1.queryRunner.connection.driver.options.type === "oracle") {
300
- subjects.forEach(function (subject) {
301
- singleInsertSubjects.push(subject);
302
- });
303
- }
304
- else {
305
- subjects.forEach(function (subject) {
306
- // we do not insert in bulk in following cases:
307
- // - when there is no values in insert (only defaults are inserted), since we cannot use DEFAULT VALUES expression for multiple inserted rows
308
- // - when entity is a tree table, since tree tables require extra operation per each inserted row
309
- // - when oracle is used, since oracle's bulk insertion is very bad
310
- if (subject.changeMaps.length === 0 ||
311
- subject.metadata.treeType ||
312
- _this.queryRunner.connection.driver.options.type ===
313
- "oracle" ||
314
- _this.queryRunner.connection.driver.options.type ===
315
- "sap") {
316
- singleInsertSubjects.push(subject);
317
- }
318
- else {
319
- bulkInsertSubjects.push(subject);
320
- bulkInsertMaps.push(subject.createValueSetAndPopChangeMap());
321
- }
322
- });
323
- }
324
- if (!
325
- //#region @backend
326
- InstanceChecker_1.InstanceChecker.isMongoEntityManager(this_1.queryRunner.manager))
327
- //#region @backend
328
- return [3 /*break*/, 2];
329
- return [4 /*yield*/, this_1.queryRunner.manager.insert(subjects[0].metadata.target, bulkInsertMaps)];
330
- case 1:
331
- insertResult_1 = _e.sent();
332
- subjects.forEach(function (subject, index) {
333
- subject.identifier = insertResult_1.identifiers[index];
334
- subject.generatedMap = insertResult_1.generatedMaps[index];
335
- subject.insertedValueSet = bulkInsertMaps[index];
336
- });
337
- return [3 /*break*/, 12];
338
- case 2:
339
- if (!(bulkInsertMaps.length > 0)) return [3 /*break*/, 4];
340
- return [4 /*yield*/, this_1.queryRunner.manager
341
- .createQueryBuilder()
342
- .insert()
343
- .into(subjects[0].metadata.target)
344
- .values(bulkInsertMaps)
345
- .updateEntity(this_1.options && this_1.options.reload === false
346
- ? false
347
- : true)
348
- .callListeners(false)
349
- .execute()];
350
- case 3:
351
- insertResult_2 = _e.sent();
352
- bulkInsertSubjects.forEach(function (subject, index) {
353
- subject.identifier = insertResult_2.identifiers[index];
354
- subject.generatedMap = insertResult_2.generatedMaps[index];
355
- subject.insertedValueSet = bulkInsertMaps[index];
356
- });
357
- _e.label = 4;
358
- case 4:
359
- if (!(singleInsertSubjects.length > 0)) return [3 /*break*/, 12];
360
- _loop_2 = function (subject) {
361
- return tslib_1.__generator(this, function (_f) {
362
- switch (_f.label) {
363
- case 0:
364
- subject.insertedValueSet =
365
- subject.createValueSetAndPopChangeMap(); // important to have because query builder sets inserted values into it
366
- if (!(subject.metadata.treeType === "nested-set")) return [3 /*break*/, 2];
367
- return [4 /*yield*/, new NestedSetSubjectExecutor_1.NestedSetSubjectExecutor(this_1.queryRunner).insert(subject)];
368
- case 1:
369
- _f.sent();
370
- _f.label = 2;
371
- case 2: return [4 /*yield*/, this_1.queryRunner.manager
372
- .createQueryBuilder()
373
- .insert()
374
- .into(subject.metadata.target)
375
- .values(subject.insertedValueSet)
376
- .updateEntity(this_1.options && this_1.options.reload === false
377
- ? false
378
- : true)
379
- .callListeners(false)
380
- .execute()
381
- .then(function (insertResult) {
382
- subject.identifier = insertResult.identifiers[0];
383
- subject.generatedMap =
384
- insertResult.generatedMaps[0];
385
- })
386
- // for tree tables we execute additional queries
387
- ];
388
- case 3:
389
- _f.sent();
390
- if (!(subject.metadata.treeType === "closure-table")) return [3 /*break*/, 5];
391
- return [4 /*yield*/, new ClosureSubjectExecutor_1.ClosureSubjectExecutor(this_1.queryRunner).insert(subject)];
392
- case 4:
393
- _f.sent();
394
- return [3 /*break*/, 7];
395
- case 5:
396
- if (!(subject.metadata.treeType === "materialized-path")) return [3 /*break*/, 7];
397
- return [4 /*yield*/, new MaterializedPathSubjectExecutor_1.MaterializedPathSubjectExecutor(this_1.queryRunner).insert(subject)];
398
- case 6:
399
- _f.sent();
400
- _f.label = 7;
401
- case 7: return [2 /*return*/];
402
- }
403
- });
404
- };
405
- _e.label = 5;
406
- case 5:
407
- _e.trys.push([5, 10, 11, 12]);
408
- singleInsertSubjects_1 = (e_2 = void 0, tslib_1.__values(singleInsertSubjects)), singleInsertSubjects_1_1 = singleInsertSubjects_1.next();
409
- _e.label = 6;
410
- case 6:
411
- if (!!singleInsertSubjects_1_1.done) return [3 /*break*/, 9];
412
- subject = singleInsertSubjects_1_1.value;
413
- return [5 /*yield**/, _loop_2(subject)];
414
- case 7:
415
- _e.sent();
416
- _e.label = 8;
417
- case 8:
418
- singleInsertSubjects_1_1 = singleInsertSubjects_1.next();
419
- return [3 /*break*/, 6];
420
- case 9: return [3 /*break*/, 12];
421
- case 10:
422
- e_2_1 = _e.sent();
423
- e_2 = { error: e_2_1 };
424
- return [3 /*break*/, 12];
425
- case 11:
426
- try {
427
- if (singleInsertSubjects_1_1 && !singleInsertSubjects_1_1.done && (_d = singleInsertSubjects_1.return)) _d.call(singleInsertSubjects_1);
428
- }
429
- finally { if (e_2) throw e_2.error; }
430
- return [7 /*endfinally*/];
431
- case 12:
432
- subjects.forEach(function (subject) {
433
- if (subject.generatedMap) {
434
- subject.metadata.columns.forEach(function (column) {
435
- var value = column.getEntityValue(subject.generatedMap);
436
- if (value !== undefined && value !== null) {
437
- var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column);
438
- column.setEntityValue(subject.generatedMap, preparedValue);
439
- }
440
- });
441
- }
442
- });
443
- return [2 /*return*/];
444
- }
445
- });
446
- };
447
- this_1 = this;
448
- _c.label = 1;
449
- case 1:
450
- _c.trys.push([1, 6, 7, 8]);
451
- groupedInsertSubjectKeys_1 = tslib_1.__values(groupedInsertSubjectKeys), groupedInsertSubjectKeys_1_1 = groupedInsertSubjectKeys_1.next();
452
- _c.label = 2;
453
- case 2:
454
- if (!!groupedInsertSubjectKeys_1_1.done) return [3 /*break*/, 5];
455
- groupName = groupedInsertSubjectKeys_1_1.value;
456
- return [5 /*yield**/, _loop_1(groupName)];
457
- case 3:
458
- _c.sent();
459
- _c.label = 4;
460
- case 4:
461
- groupedInsertSubjectKeys_1_1 = groupedInsertSubjectKeys_1.next();
462
- return [3 /*break*/, 2];
463
- case 5: return [3 /*break*/, 8];
464
- case 6:
465
- e_1_1 = _c.sent();
466
- e_1 = { error: e_1_1 };
467
- return [3 /*break*/, 8];
468
- case 7:
469
- try {
470
- if (groupedInsertSubjectKeys_1_1 && !groupedInsertSubjectKeys_1_1.done && (_b = groupedInsertSubjectKeys_1.return)) _b.call(groupedInsertSubjectKeys_1);
211
+ async executeInsertOperations() {
212
+ // group insertion subjects to make bulk insertions
213
+ const [groupedInsertSubjects, groupedInsertSubjectKeys] = this.groupBulkSubjects(this.insertSubjects, "insert");
214
+ // then we run insertion in the sequential order which is important since we have an ordered subjects
215
+ for (const groupName of groupedInsertSubjectKeys) {
216
+ const subjects = groupedInsertSubjects[groupName];
217
+ // we must separately insert entities which does not have any values to insert
218
+ // because its not possible to insert multiple entities with only default values in bulk
219
+ const bulkInsertMaps = [];
220
+ const bulkInsertSubjects = [];
221
+ const singleInsertSubjects = [];
222
+ if (this.queryRunner.connection.driver.options.type === "mongodb") {
223
+ subjects.forEach((subject) => {
224
+ if (subject.metadata.createDateColumn && subject.entity) {
225
+ subject.entity[subject.metadata.createDateColumn.databaseName] = new Date();
226
+ }
227
+ if (subject.metadata.updateDateColumn && subject.entity) {
228
+ subject.entity[subject.metadata.updateDateColumn.databaseName] = new Date();
229
+ }
230
+ subject.createValueSetAndPopChangeMap();
231
+ bulkInsertSubjects.push(subject);
232
+ bulkInsertMaps.push(subject.entity);
233
+ });
234
+ }
235
+ else if (this.queryRunner.connection.driver.options.type === "oracle") {
236
+ subjects.forEach((subject) => {
237
+ singleInsertSubjects.push(subject);
238
+ });
239
+ }
240
+ else {
241
+ subjects.forEach((subject) => {
242
+ // we do not insert in bulk in following cases:
243
+ // - when there is no values in insert (only defaults are inserted), since we cannot use DEFAULT VALUES expression for multiple inserted rows
244
+ // - when entity is a tree table, since tree tables require extra operation per each inserted row
245
+ // - when oracle is used, since oracle's bulk insertion is very bad
246
+ if (subject.changeMaps.length === 0 ||
247
+ subject.metadata.treeType ||
248
+ this.queryRunner.connection.driver.options.type ===
249
+ "oracle" ||
250
+ this.queryRunner.connection.driver.options.type ===
251
+ "sap") {
252
+ singleInsertSubjects.push(subject);
253
+ }
254
+ else {
255
+ bulkInsertSubjects.push(subject);
256
+ bulkInsertMaps.push(subject.createValueSetAndPopChangeMap());
257
+ }
258
+ });
259
+ }
260
+ // for mongodb we have a bit different insertion logic
261
+ if (
262
+ //#region @backend
263
+ InstanceChecker_1.InstanceChecker.isMongoEntityManager(this.queryRunner.manager)
264
+ //#endregion
265
+ /* */
266
+ /* */
267
+ /* */
268
+ /* */
269
+ /* */
270
+ ) {
271
+ //#region @backend
272
+ const insertResult = await this.queryRunner.manager.insert(subjects[0].metadata.target, bulkInsertMaps);
273
+ subjects.forEach((subject, index) => {
274
+ subject.identifier = insertResult.identifiers[index];
275
+ subject.generatedMap = insertResult.generatedMaps[index];
276
+ subject.insertedValueSet = bulkInsertMaps[index];
277
+ });
278
+ //#endregion
279
+ }
280
+ else {
281
+ // here we execute our insertion query
282
+ // we need to enable entity updation because we DO need to have updated insertedMap
283
+ // which is not same object as our entity that's why we don't need to worry about our entity to get dirty
284
+ // also, we disable listeners because we call them on our own in persistence layer
285
+ if (bulkInsertMaps.length > 0) {
286
+ const insertResult = await this.queryRunner.manager
287
+ .createQueryBuilder()
288
+ .insert()
289
+ .into(subjects[0].metadata.target)
290
+ .values(bulkInsertMaps)
291
+ .updateEntity(this.options && this.options.reload === false
292
+ ? false
293
+ : true)
294
+ .callListeners(false)
295
+ .execute();
296
+ bulkInsertSubjects.forEach((subject, index) => {
297
+ subject.identifier = insertResult.identifiers[index];
298
+ subject.generatedMap = insertResult.generatedMaps[index];
299
+ subject.insertedValueSet = bulkInsertMaps[index];
300
+ });
301
+ }
302
+ // insert subjects which must be inserted in separate requests (all default values)
303
+ if (singleInsertSubjects.length > 0) {
304
+ for (const subject of singleInsertSubjects) {
305
+ subject.insertedValueSet =
306
+ subject.createValueSetAndPopChangeMap(); // important to have because query builder sets inserted values into it
307
+ // for nested set we execute additional queries
308
+ if (subject.metadata.treeType === "nested-set")
309
+ await new NestedSetSubjectExecutor_1.NestedSetSubjectExecutor(this.queryRunner).insert(subject);
310
+ await this.queryRunner.manager
311
+ .createQueryBuilder()
312
+ .insert()
313
+ .into(subject.metadata.target)
314
+ .values(subject.insertedValueSet)
315
+ .updateEntity(this.options && this.options.reload === false
316
+ ? false
317
+ : true)
318
+ .callListeners(false)
319
+ .execute()
320
+ .then((insertResult) => {
321
+ subject.identifier = insertResult.identifiers[0];
322
+ subject.generatedMap =
323
+ insertResult.generatedMaps[0];
324
+ });
325
+ // for tree tables we execute additional queries
326
+ if (subject.metadata.treeType === "closure-table") {
327
+ await new ClosureSubjectExecutor_1.ClosureSubjectExecutor(this.queryRunner).insert(subject);
328
+ }
329
+ else if (subject.metadata.treeType === "materialized-path") {
330
+ await new MaterializedPathSubjectExecutor_1.MaterializedPathSubjectExecutor(this.queryRunner).insert(subject);
331
+ }
332
+ }
333
+ }
334
+ }
335
+ subjects.forEach((subject) => {
336
+ if (subject.generatedMap) {
337
+ subject.metadata.columns.forEach((column) => {
338
+ const value = column.getEntityValue(subject.generatedMap);
339
+ if (value !== undefined && value !== null) {
340
+ const preparedValue = this.queryRunner.connection.driver.prepareHydratedValue(value, column);
341
+ column.setEntityValue(subject.generatedMap, preparedValue);
471
342
  }
472
- finally { if (e_1) throw e_1.error; }
473
- return [7 /*endfinally*/];
474
- case 8: return [2 /*return*/];
343
+ });
475
344
  }
476
345
  });
477
- });
478
- };
346
+ }
347
+ }
479
348
  /**
480
349
  * Updates all given subjects in the database.
481
350
  */
482
- SubjectExecutor.prototype.executeUpdateOperations = function () {
483
- return tslib_1.__awaiter(this, void 0, void 0, function () {
484
- var updateSubject, nestedSetSubjects, remainingSubjects, _a, _b, subject, nestedSetPromise;
485
- var e_3, _c;
486
- var _this = this;
487
- return tslib_1.__generator(this, function (_d) {
488
- switch (_d.label) {
489
- case 0:
490
- updateSubject = function (subject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
491
- var partialEntity, manager, updateMap, _a, updateQueryBuilder, updateResult, updateGeneratedMap_1;
492
- var _this = this;
493
- return tslib_1.__generator(this, function (_b) {
494
- switch (_b.label) {
495
- case 0:
496
- if (!subject.identifier)
497
- throw new SubjectWithoutIdentifierError_1.SubjectWithoutIdentifierError(subject);
498
- if (!
499
- //#region @backend
500
- InstanceChecker_1.InstanceChecker.isMongoEntityManager(this.queryRunner.manager))
501
- //#region @backend
502
- return [3 /*break*/, 2];
503
- partialEntity = this.cloneMongoSubjectEntity(subject);
504
- if (subject.metadata.objectIdColumn &&
505
- subject.metadata.objectIdColumn.propertyName) {
506
- delete partialEntity[subject.metadata.objectIdColumn.propertyName];
507
- }
508
- if (subject.metadata.createDateColumn &&
509
- subject.metadata.createDateColumn.propertyName) {
510
- delete partialEntity[subject.metadata.createDateColumn.propertyName];
511
- }
512
- if (subject.metadata.updateDateColumn &&
513
- subject.metadata.updateDateColumn.propertyName) {
514
- partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();
515
- }
516
- manager = this.queryRunner.manager;
517
- return [4 /*yield*/, manager.update(subject.metadata.target, subject.identifier, partialEntity)
518
- //#endregion
519
- ];
520
- case 1:
521
- _b.sent();
522
- return [3 /*break*/, 11];
523
- case 2:
524
- updateMap = subject.createValueSetAndPopChangeMap();
525
- _a = subject.metadata.treeType;
526
- switch (_a) {
527
- case "nested-set": return [3 /*break*/, 3];
528
- case "closure-table": return [3 /*break*/, 5];
529
- case "materialized-path": return [3 /*break*/, 7];
530
- }
531
- return [3 /*break*/, 9];
532
- case 3: return [4 /*yield*/, new NestedSetSubjectExecutor_1.NestedSetSubjectExecutor(this.queryRunner).update(subject)];
533
- case 4:
534
- _b.sent();
535
- return [3 /*break*/, 9];
536
- case 5: return [4 /*yield*/, new ClosureSubjectExecutor_1.ClosureSubjectExecutor(this.queryRunner).update(subject)];
537
- case 6:
538
- _b.sent();
539
- return [3 /*break*/, 9];
540
- case 7: return [4 /*yield*/, new MaterializedPathSubjectExecutor_1.MaterializedPathSubjectExecutor(this.queryRunner).update(subject)];
541
- case 8:
542
- _b.sent();
543
- return [3 /*break*/, 9];
544
- case 9:
545
- updateQueryBuilder = this.queryRunner.manager
546
- .createQueryBuilder()
547
- .update(subject.metadata.target)
548
- .set(updateMap)
549
- .updateEntity(this.options && this.options.reload === false
550
- ? false
551
- : true)
552
- .callListeners(false);
553
- if (subject.entity) {
554
- updateQueryBuilder.whereEntity(subject.identifier);
555
- }
556
- else {
557
- // in this case identifier is just conditions object to update by
558
- updateQueryBuilder.where(subject.identifier);
559
- }
560
- return [4 /*yield*/, updateQueryBuilder.execute()];
561
- case 10:
562
- updateResult = _b.sent();
563
- updateGeneratedMap_1 = updateResult.generatedMaps[0];
564
- if (updateGeneratedMap_1) {
565
- subject.metadata.columns.forEach(function (column) {
566
- var value = column.getEntityValue(updateGeneratedMap_1);
567
- if (value !== undefined && value !== null) {
568
- var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column);
569
- column.setEntityValue(updateGeneratedMap_1, preparedValue);
570
- }
571
- });
572
- if (!subject.generatedMap) {
573
- subject.generatedMap = {};
574
- }
575
- Object.assign(subject.generatedMap, updateGeneratedMap_1);
576
- }
577
- _b.label = 11;
578
- case 11: return [2 /*return*/];
579
- }
580
- });
581
- }); };
582
- nestedSetSubjects = [];
583
- remainingSubjects = [];
584
- try {
585
- for (_a = tslib_1.__values(this.updateSubjects), _b = _a.next(); !_b.done; _b = _a.next()) {
586
- subject = _b.value;
587
- if (subject.metadata.treeType === "nested-set") {
588
- nestedSetSubjects.push(subject);
589
- }
590
- else {
591
- remainingSubjects.push(subject);
592
- }
593
- }
594
- }
595
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
596
- finally {
597
- try {
598
- if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
599
- }
600
- finally { if (e_3) throw e_3.error; }
351
+ async executeUpdateOperations() {
352
+ const updateSubject = async (subject) => {
353
+ if (!subject.identifier)
354
+ throw new SubjectWithoutIdentifierError_1.SubjectWithoutIdentifierError(subject);
355
+ // for mongodb we have a bit different updation logic
356
+ if (
357
+ //#region @backend
358
+ InstanceChecker_1.InstanceChecker.isMongoEntityManager(this.queryRunner.manager)
359
+ //#endregion
360
+ /* */
361
+ /* */
362
+ /* */
363
+ /* */
364
+ /* */
365
+ ) {
366
+ //#region @backend
367
+ const partialEntity = this.cloneMongoSubjectEntity(subject);
368
+ if (subject.metadata.objectIdColumn &&
369
+ subject.metadata.objectIdColumn.propertyName) {
370
+ delete partialEntity[subject.metadata.objectIdColumn.propertyName];
371
+ }
372
+ if (subject.metadata.createDateColumn &&
373
+ subject.metadata.createDateColumn.propertyName) {
374
+ delete partialEntity[subject.metadata.createDateColumn.propertyName];
375
+ }
376
+ if (subject.metadata.updateDateColumn &&
377
+ subject.metadata.updateDateColumn.propertyName) {
378
+ partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();
379
+ }
380
+ const manager = this.queryRunner.manager;
381
+ await manager.update(subject.metadata.target, subject.identifier, partialEntity);
382
+ //#endregion
383
+ }
384
+ else {
385
+ const updateMap = subject.createValueSetAndPopChangeMap();
386
+ // for tree tables we execute additional queries
387
+ switch (subject.metadata.treeType) {
388
+ case "nested-set":
389
+ await new NestedSetSubjectExecutor_1.NestedSetSubjectExecutor(this.queryRunner).update(subject);
390
+ break;
391
+ case "closure-table":
392
+ await new ClosureSubjectExecutor_1.ClosureSubjectExecutor(this.queryRunner).update(subject);
393
+ break;
394
+ case "materialized-path":
395
+ await new MaterializedPathSubjectExecutor_1.MaterializedPathSubjectExecutor(this.queryRunner).update(subject);
396
+ break;
397
+ }
398
+ // here we execute our updation query
399
+ // we need to enable entity updation because we update a subject identifier
400
+ // which is not same object as our entity that's why we don't need to worry about our entity to get dirty
401
+ // also, we disable listeners because we call them on our own in persistence layer
402
+ const updateQueryBuilder = this.queryRunner.manager
403
+ .createQueryBuilder()
404
+ .update(subject.metadata.target)
405
+ .set(updateMap)
406
+ .updateEntity(this.options && this.options.reload === false
407
+ ? false
408
+ : true)
409
+ .callListeners(false);
410
+ if (subject.entity) {
411
+ updateQueryBuilder.whereEntity(subject.identifier);
412
+ }
413
+ else {
414
+ // in this case identifier is just conditions object to update by
415
+ updateQueryBuilder.where(subject.identifier);
416
+ }
417
+ const updateResult = await updateQueryBuilder.execute();
418
+ let updateGeneratedMap = updateResult.generatedMaps[0];
419
+ if (updateGeneratedMap) {
420
+ subject.metadata.columns.forEach((column) => {
421
+ const value = column.getEntityValue(updateGeneratedMap);
422
+ if (value !== undefined && value !== null) {
423
+ const preparedValue = this.queryRunner.connection.driver.prepareHydratedValue(value, column);
424
+ column.setEntityValue(updateGeneratedMap, preparedValue);
601
425
  }
602
- nestedSetPromise = new Promise(function (ok, fail) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
603
- var nestedSetSubjects_1, nestedSetSubjects_1_1, subject, error_1, e_4_1;
604
- var e_4, _a;
605
- return tslib_1.__generator(this, function (_b) {
606
- switch (_b.label) {
607
- case 0:
608
- _b.trys.push([0, 7, 8, 9]);
609
- nestedSetSubjects_1 = tslib_1.__values(nestedSetSubjects), nestedSetSubjects_1_1 = nestedSetSubjects_1.next();
610
- _b.label = 1;
611
- case 1:
612
- if (!!nestedSetSubjects_1_1.done) return [3 /*break*/, 6];
613
- subject = nestedSetSubjects_1_1.value;
614
- _b.label = 2;
615
- case 2:
616
- _b.trys.push([2, 4, , 5]);
617
- return [4 /*yield*/, updateSubject(subject)];
618
- case 3:
619
- _b.sent();
620
- return [3 /*break*/, 5];
621
- case 4:
622
- error_1 = _b.sent();
623
- fail(error_1);
624
- return [3 /*break*/, 5];
625
- case 5:
626
- nestedSetSubjects_1_1 = nestedSetSubjects_1.next();
627
- return [3 /*break*/, 1];
628
- case 6: return [3 /*break*/, 9];
629
- case 7:
630
- e_4_1 = _b.sent();
631
- e_4 = { error: e_4_1 };
632
- return [3 /*break*/, 9];
633
- case 8:
634
- try {
635
- if (nestedSetSubjects_1_1 && !nestedSetSubjects_1_1.done && (_a = nestedSetSubjects_1.return)) _a.call(nestedSetSubjects_1);
636
- }
637
- finally { if (e_4) throw e_4.error; }
638
- return [7 /*endfinally*/];
639
- case 9:
640
- ok();
641
- return [2 /*return*/];
642
- }
643
- });
644
- }); });
645
- // Run all remaining subjects in parallel
646
- return [4 /*yield*/, Promise.all(tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(remainingSubjects.map(updateSubject)), false), [
647
- nestedSetPromise,
648
- ], false))];
649
- case 1:
650
- // Run all remaining subjects in parallel
651
- _d.sent();
652
- return [2 /*return*/];
426
+ });
427
+ if (!subject.generatedMap) {
428
+ subject.generatedMap = {};
429
+ }
430
+ Object.assign(subject.generatedMap, updateGeneratedMap);
653
431
  }
654
- });
432
+ }
433
+ };
434
+ // Nested sets need to be updated one by one
435
+ // Split array in two, one with nested set subjects and the other with the remaining subjects
436
+ const nestedSetSubjects = [];
437
+ const remainingSubjects = [];
438
+ for (const subject of this.updateSubjects) {
439
+ if (subject.metadata.treeType === "nested-set") {
440
+ nestedSetSubjects.push(subject);
441
+ }
442
+ else {
443
+ remainingSubjects.push(subject);
444
+ }
445
+ }
446
+ // Run nested set updates one by one
447
+ const nestedSetPromise = new Promise(async (ok, fail) => {
448
+ for (const subject of nestedSetSubjects) {
449
+ try {
450
+ await updateSubject(subject);
451
+ }
452
+ catch (error) {
453
+ fail(error);
454
+ }
455
+ }
456
+ ok();
655
457
  });
656
- };
458
+ // Run all remaining subjects in parallel
459
+ await Promise.all([
460
+ ...remainingSubjects.map(updateSubject),
461
+ nestedSetPromise,
462
+ ]);
463
+ }
657
464
  /**
658
465
  * Removes all given subjects from the database.
659
466
  *
660
467
  * todo: we need to apply topological sort here as well
661
468
  */
662
- SubjectExecutor.prototype.executeRemoveOperations = function () {
663
- return tslib_1.__awaiter(this, void 0, void 0, function () {
664
- var _a, groupedRemoveSubjects, groupedRemoveSubjectKeys, groupedRemoveSubjectKeys_1, groupedRemoveSubjectKeys_1_1, groupName, subjects, deleteMaps, manager, _b, e_5_1;
665
- var e_5, _c;
666
- return tslib_1.__generator(this, function (_d) {
667
- switch (_d.label) {
668
- case 0:
669
- _a = tslib_1.__read(this.groupBulkSubjects(this.removeSubjects, "delete"), 2), groupedRemoveSubjects = _a[0], groupedRemoveSubjectKeys = _a[1];
670
- _d.label = 1;
671
- case 1:
672
- _d.trys.push([1, 13, 14, 15]);
673
- groupedRemoveSubjectKeys_1 = tslib_1.__values(groupedRemoveSubjectKeys), groupedRemoveSubjectKeys_1_1 = groupedRemoveSubjectKeys_1.next();
674
- _d.label = 2;
675
- case 2:
676
- if (!!groupedRemoveSubjectKeys_1_1.done) return [3 /*break*/, 12];
677
- groupName = groupedRemoveSubjectKeys_1_1.value;
678
- subjects = groupedRemoveSubjects[groupName];
679
- deleteMaps = subjects.map(function (subject) {
680
- if (!subject.identifier)
681
- throw new SubjectWithoutIdentifierError_1.SubjectWithoutIdentifierError(subject);
682
- return subject.identifier;
683
- });
684
- if (!
685
- //#region @backend
686
- InstanceChecker_1.InstanceChecker.isMongoEntityManager(this.queryRunner.manager))
687
- //#region @backend
688
- return [3 /*break*/, 4];
689
- manager = this.queryRunner.manager;
690
- return [4 /*yield*/, manager.delete(subjects[0].metadata.target, deleteMaps)
691
- //#endregion
692
- ];
693
- case 3:
694
- _d.sent();
695
- return [3 /*break*/, 11];
696
- case 4:
697
- _b = subjects[0].metadata.treeType;
698
- switch (_b) {
699
- case "nested-set": return [3 /*break*/, 5];
700
- case "closure-table": return [3 /*break*/, 7];
701
- }
702
- return [3 /*break*/, 9];
703
- case 5: return [4 /*yield*/, new NestedSetSubjectExecutor_1.NestedSetSubjectExecutor(this.queryRunner).remove(subjects)];
704
- case 6:
705
- _d.sent();
706
- return [3 /*break*/, 9];
707
- case 7: return [4 /*yield*/, new ClosureSubjectExecutor_1.ClosureSubjectExecutor(this.queryRunner).remove(subjects)];
708
- case 8:
709
- _d.sent();
710
- return [3 /*break*/, 9];
711
- case 9:
712
- // here we execute our deletion query
713
- // we don't need to specify entities and set update entity to true since the only thing query builder
714
- // will do for use is a primary keys deletion which is handled by us later once persistence is finished
715
- // also, we disable listeners because we call them on our own in persistence layer
716
- return [4 /*yield*/, this.queryRunner.manager
717
- .createQueryBuilder()
718
- .delete()
719
- .from(subjects[0].metadata.target)
720
- .where(deleteMaps)
721
- .callListeners(false)
722
- .execute()];
723
- case 10:
724
- // here we execute our deletion query
725
- // we don't need to specify entities and set update entity to true since the only thing query builder
726
- // will do for use is a primary keys deletion which is handled by us later once persistence is finished
727
- // also, we disable listeners because we call them on our own in persistence layer
728
- _d.sent();
729
- _d.label = 11;
730
- case 11:
731
- groupedRemoveSubjectKeys_1_1 = groupedRemoveSubjectKeys_1.next();
732
- return [3 /*break*/, 2];
733
- case 12: return [3 /*break*/, 15];
734
- case 13:
735
- e_5_1 = _d.sent();
736
- e_5 = { error: e_5_1 };
737
- return [3 /*break*/, 15];
738
- case 14:
739
- try {
740
- if (groupedRemoveSubjectKeys_1_1 && !groupedRemoveSubjectKeys_1_1.done && (_c = groupedRemoveSubjectKeys_1.return)) _c.call(groupedRemoveSubjectKeys_1);
741
- }
742
- finally { if (e_5) throw e_5.error; }
743
- return [7 /*endfinally*/];
744
- case 15: return [2 /*return*/];
745
- }
469
+ async executeRemoveOperations() {
470
+ // group insertion subjects to make bulk insertions
471
+ const [groupedRemoveSubjects, groupedRemoveSubjectKeys] = this.groupBulkSubjects(this.removeSubjects, "delete");
472
+ for (const groupName of groupedRemoveSubjectKeys) {
473
+ const subjects = groupedRemoveSubjects[groupName];
474
+ const deleteMaps = subjects.map((subject) => {
475
+ if (!subject.identifier)
476
+ throw new SubjectWithoutIdentifierError_1.SubjectWithoutIdentifierError(subject);
477
+ return subject.identifier;
746
478
  });
747
- });
748
- };
749
- SubjectExecutor.prototype.cloneMongoSubjectEntity = function (subject) {
750
- var e_6, _a;
751
- var target = {};
752
- if (subject.entity) {
753
- try {
754
- for (var _b = tslib_1.__values(subject.metadata.columns), _c = _b.next(); !_c.done; _c = _b.next()) {
755
- var column = _c.value;
756
- OrmUtils_1.OrmUtils.mergeDeep(target, column.getEntityValueMap(subject.entity));
757
- }
479
+ // for mongodb we have a bit different updation logic
480
+ if (
481
+ //#region @backend
482
+ InstanceChecker_1.InstanceChecker.isMongoEntityManager(this.queryRunner.manager)
483
+ //#endregion
484
+ /* */
485
+ /* */
486
+ /* */
487
+ /* */
488
+ /* */
489
+ ) {
490
+ //#region @backend
491
+ const manager = this.queryRunner.manager;
492
+ await manager.delete(subjects[0].metadata.target, deleteMaps);
493
+ //#endregion
758
494
  }
759
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
760
- finally {
761
- try {
762
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
495
+ else {
496
+ // for tree tables we execute additional queries
497
+ switch (subjects[0].metadata.treeType) {
498
+ case "nested-set":
499
+ await new NestedSetSubjectExecutor_1.NestedSetSubjectExecutor(this.queryRunner).remove(subjects);
500
+ break;
501
+ case "closure-table":
502
+ await new ClosureSubjectExecutor_1.ClosureSubjectExecutor(this.queryRunner).remove(subjects);
503
+ break;
763
504
  }
764
- finally { if (e_6) throw e_6.error; }
505
+ // here we execute our deletion query
506
+ // we don't need to specify entities and set update entity to true since the only thing query builder
507
+ // will do for use is a primary keys deletion which is handled by us later once persistence is finished
508
+ // also, we disable listeners because we call them on our own in persistence layer
509
+ await this.queryRunner.manager
510
+ .createQueryBuilder()
511
+ .delete()
512
+ .from(subjects[0].metadata.target)
513
+ .where(deleteMaps)
514
+ .callListeners(false)
515
+ .execute();
516
+ }
517
+ }
518
+ }
519
+ cloneMongoSubjectEntity(subject) {
520
+ const target = {};
521
+ if (subject.entity) {
522
+ for (const column of subject.metadata.columns) {
523
+ OrmUtils_1.OrmUtils.mergeDeep(target, column.getEntityValueMap(subject.entity));
765
524
  }
766
525
  }
767
526
  return target;
768
- };
527
+ }
769
528
  /**
770
529
  * Soft-removes all given subjects in the database.
771
530
  */
772
- SubjectExecutor.prototype.executeSoftRemoveOperations = function () {
773
- return tslib_1.__awaiter(this, void 0, void 0, function () {
774
- var _this = this;
775
- return tslib_1.__generator(this, function (_a) {
776
- switch (_a.label) {
777
- case 0: return [4 /*yield*/, Promise.all(this.softRemoveSubjects.map(function (subject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
778
- var updateResult, partialEntity, manager, softDeleteQueryBuilder;
779
- var _this = this;
780
- return tslib_1.__generator(this, function (_a) {
781
- switch (_a.label) {
782
- case 0:
783
- if (!subject.identifier)
784
- throw new SubjectWithoutIdentifierError_1.SubjectWithoutIdentifierError(subject);
785
- if (!
786
- //#region @backend
787
- InstanceChecker_1.InstanceChecker.isMongoEntityManager(this.queryRunner.manager))
788
- //#region @backend
789
- return [3 /*break*/, 2];
790
- partialEntity = this.cloneMongoSubjectEntity(subject);
791
- if (subject.metadata.objectIdColumn &&
792
- subject.metadata.objectIdColumn.propertyName) {
793
- delete partialEntity[subject.metadata.objectIdColumn.propertyName];
794
- }
795
- if (subject.metadata.createDateColumn &&
796
- subject.metadata.createDateColumn.propertyName) {
797
- delete partialEntity[subject.metadata.createDateColumn.propertyName];
798
- }
799
- if (subject.metadata.updateDateColumn &&
800
- subject.metadata.updateDateColumn.propertyName) {
801
- partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();
802
- }
803
- if (subject.metadata.deleteDateColumn &&
804
- subject.metadata.deleteDateColumn.propertyName) {
805
- partialEntity[subject.metadata.deleteDateColumn.propertyName] = new Date();
806
- }
807
- manager = this.queryRunner.manager;
808
- return [4 /*yield*/, manager.update(subject.metadata.target, subject.identifier, partialEntity)];
809
- case 1:
810
- //#endregion
811
- /* */
812
- /* */
813
- updateResult = _a.sent();
814
- return [3 /*break*/, 4];
815
- case 2:
816
- softDeleteQueryBuilder = this.queryRunner.manager
817
- .createQueryBuilder()
818
- .softDelete()
819
- .from(subject.metadata.target)
820
- .updateEntity(this.options && this.options.reload === false
821
- ? false
822
- : true)
823
- .callListeners(false);
824
- if (subject.entity) {
825
- softDeleteQueryBuilder.whereEntity(subject.identifier);
826
- }
827
- else {
828
- // in this case identifier is just conditions object to update by
829
- softDeleteQueryBuilder.where(subject.identifier);
830
- }
831
- return [4 /*yield*/, softDeleteQueryBuilder.execute()];
832
- case 3:
833
- updateResult = _a.sent();
834
- _a.label = 4;
835
- case 4:
836
- subject.generatedMap = updateResult.generatedMaps[0];
837
- if (subject.generatedMap) {
838
- subject.metadata.columns.forEach(function (column) {
839
- var value = column.getEntityValue(subject.generatedMap);
840
- if (value !== undefined && value !== null) {
841
- var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column);
842
- column.setEntityValue(subject.generatedMap, preparedValue);
843
- }
844
- });
845
- }
846
- return [2 /*return*/];
847
- }
848
- });
849
- }); }))];
850
- case 1:
851
- _a.sent();
852
- return [2 /*return*/];
531
+ async executeSoftRemoveOperations() {
532
+ await Promise.all(this.softRemoveSubjects.map(async (subject) => {
533
+ if (!subject.identifier)
534
+ throw new SubjectWithoutIdentifierError_1.SubjectWithoutIdentifierError(subject);
535
+ let updateResult;
536
+ // for mongodb we have a bit different updation logic
537
+ if (
538
+ //#region @backend
539
+ InstanceChecker_1.InstanceChecker.isMongoEntityManager(this.queryRunner.manager)
540
+ //#endregion
541
+ /* */
542
+ /* */
543
+ /* */
544
+ /* */
545
+ /* */
546
+ ) {
547
+ const partialEntity = this.cloneMongoSubjectEntity(subject);
548
+ if (subject.metadata.objectIdColumn &&
549
+ subject.metadata.objectIdColumn.propertyName) {
550
+ delete partialEntity[subject.metadata.objectIdColumn.propertyName];
853
551
  }
854
- });
855
- });
856
- };
552
+ if (subject.metadata.createDateColumn &&
553
+ subject.metadata.createDateColumn.propertyName) {
554
+ delete partialEntity[subject.metadata.createDateColumn.propertyName];
555
+ }
556
+ if (subject.metadata.updateDateColumn &&
557
+ subject.metadata.updateDateColumn.propertyName) {
558
+ partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();
559
+ }
560
+ if (subject.metadata.deleteDateColumn &&
561
+ subject.metadata.deleteDateColumn.propertyName) {
562
+ partialEntity[subject.metadata.deleteDateColumn.propertyName] = new Date();
563
+ }
564
+ let manager
565
+ //#region @backend
566
+ = this.queryRunner.manager;
567
+ //#endregion
568
+ /* */
569
+ /* */
570
+ updateResult = await manager.update(subject.metadata.target, subject.identifier, partialEntity);
571
+ }
572
+ else {
573
+ // here we execute our soft-deletion query
574
+ // we need to enable entity soft-deletion because we update a subject identifier
575
+ // which is not same object as our entity that's why we don't need to worry about our entity to get dirty
576
+ // also, we disable listeners because we call them on our own in persistence layer
577
+ const softDeleteQueryBuilder = this.queryRunner.manager
578
+ .createQueryBuilder()
579
+ .softDelete()
580
+ .from(subject.metadata.target)
581
+ .updateEntity(this.options && this.options.reload === false
582
+ ? false
583
+ : true)
584
+ .callListeners(false);
585
+ if (subject.entity) {
586
+ softDeleteQueryBuilder.whereEntity(subject.identifier);
587
+ }
588
+ else {
589
+ // in this case identifier is just conditions object to update by
590
+ softDeleteQueryBuilder.where(subject.identifier);
591
+ }
592
+ updateResult = await softDeleteQueryBuilder.execute();
593
+ }
594
+ subject.generatedMap = updateResult.generatedMaps[0];
595
+ if (subject.generatedMap) {
596
+ subject.metadata.columns.forEach((column) => {
597
+ const value = column.getEntityValue(subject.generatedMap);
598
+ if (value !== undefined && value !== null) {
599
+ const preparedValue = this.queryRunner.connection.driver.prepareHydratedValue(value, column);
600
+ column.setEntityValue(subject.generatedMap, preparedValue);
601
+ }
602
+ });
603
+ }
604
+ // experiments, remove probably, need to implement tree tables children removal
605
+ // if (subject.updatedRelationMaps.length > 0) {
606
+ // await Promise.all(subject.updatedRelationMaps.map(async updatedRelation => {
607
+ // if (!updatedRelation.relation.isTreeParent) return;
608
+ // if (!updatedRelation.value !== null) return;
609
+ //
610
+ // if (subject.metadata.treeType === "closure-table") {
611
+ // await new ClosureSubjectExecutor(this.queryRunner).deleteChildrenOf(subject);
612
+ // }
613
+ // }));
614
+ // }
615
+ }));
616
+ }
857
617
  /**
858
618
  * Recovers all given subjects in the database.
859
619
  */
860
- SubjectExecutor.prototype.executeRecoverOperations = function () {
861
- return tslib_1.__awaiter(this, void 0, void 0, function () {
862
- var _this = this;
863
- return tslib_1.__generator(this, function (_a) {
864
- switch (_a.label) {
865
- case 0: return [4 /*yield*/, Promise.all(this.recoverSubjects.map(function (subject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
866
- var updateResult, partialEntity, manager, softDeleteQueryBuilder;
867
- var _this = this;
868
- return tslib_1.__generator(this, function (_a) {
869
- switch (_a.label) {
870
- case 0:
871
- if (!subject.identifier)
872
- throw new SubjectWithoutIdentifierError_1.SubjectWithoutIdentifierError(subject);
873
- if (!
874
- //#region @backend
875
- InstanceChecker_1.InstanceChecker.isMongoEntityManager(this.queryRunner.manager))
876
- //#region @backend
877
- return [3 /*break*/, 2];
878
- partialEntity = this.cloneMongoSubjectEntity(subject);
879
- if (subject.metadata.objectIdColumn &&
880
- subject.metadata.objectIdColumn.propertyName) {
881
- delete partialEntity[subject.metadata.objectIdColumn.propertyName];
882
- }
883
- if (subject.metadata.createDateColumn &&
884
- subject.metadata.createDateColumn.propertyName) {
885
- delete partialEntity[subject.metadata.createDateColumn.propertyName];
886
- }
887
- if (subject.metadata.updateDateColumn &&
888
- subject.metadata.updateDateColumn.propertyName) {
889
- partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();
890
- }
891
- if (subject.metadata.deleteDateColumn &&
892
- subject.metadata.deleteDateColumn.propertyName) {
893
- partialEntity[subject.metadata.deleteDateColumn.propertyName] = null;
894
- }
895
- manager = this.queryRunner
896
- .manager;
897
- return [4 /*yield*/, manager.update(subject.metadata.target, subject.identifier, partialEntity)
898
- //#endregion
899
- ];
900
- case 1:
901
- updateResult = _a.sent();
902
- return [3 /*break*/, 4];
903
- case 2:
904
- softDeleteQueryBuilder = this.queryRunner.manager
905
- .createQueryBuilder()
906
- .restore()
907
- .from(subject.metadata.target)
908
- .updateEntity(this.options && this.options.reload === false
909
- ? false
910
- : true)
911
- .callListeners(false);
912
- if (subject.entity) {
913
- softDeleteQueryBuilder.whereEntity(subject.identifier);
914
- }
915
- else {
916
- // in this case identifier is just conditions object to update by
917
- softDeleteQueryBuilder.where(subject.identifier);
918
- }
919
- return [4 /*yield*/, softDeleteQueryBuilder.execute()];
920
- case 3:
921
- updateResult = _a.sent();
922
- _a.label = 4;
923
- case 4:
924
- subject.generatedMap = updateResult.generatedMaps[0];
925
- if (subject.generatedMap) {
926
- subject.metadata.columns.forEach(function (column) {
927
- var value = column.getEntityValue(subject.generatedMap);
928
- if (value !== undefined && value !== null) {
929
- var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column);
930
- column.setEntityValue(subject.generatedMap, preparedValue);
931
- }
932
- });
933
- }
934
- return [2 /*return*/];
935
- }
936
- });
937
- }); }))];
938
- case 1:
939
- _a.sent();
940
- return [2 /*return*/];
620
+ async executeRecoverOperations() {
621
+ await Promise.all(this.recoverSubjects.map(async (subject) => {
622
+ if (!subject.identifier)
623
+ throw new SubjectWithoutIdentifierError_1.SubjectWithoutIdentifierError(subject);
624
+ let updateResult;
625
+ // for mongodb we have a bit different updation logic
626
+ if (
627
+ //#region @backend
628
+ InstanceChecker_1.InstanceChecker.isMongoEntityManager(this.queryRunner.manager)
629
+ //#endregion
630
+ /* */
631
+ /* */
632
+ /* */
633
+ /* */
634
+ /* */
635
+ ) {
636
+ //#region @backend
637
+ const partialEntity = this.cloneMongoSubjectEntity(subject);
638
+ if (subject.metadata.objectIdColumn &&
639
+ subject.metadata.objectIdColumn.propertyName) {
640
+ delete partialEntity[subject.metadata.objectIdColumn.propertyName];
941
641
  }
942
- });
943
- });
944
- };
642
+ if (subject.metadata.createDateColumn &&
643
+ subject.metadata.createDateColumn.propertyName) {
644
+ delete partialEntity[subject.metadata.createDateColumn.propertyName];
645
+ }
646
+ if (subject.metadata.updateDateColumn &&
647
+ subject.metadata.updateDateColumn.propertyName) {
648
+ partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();
649
+ }
650
+ if (subject.metadata.deleteDateColumn &&
651
+ subject.metadata.deleteDateColumn.propertyName) {
652
+ partialEntity[subject.metadata.deleteDateColumn.propertyName] = null;
653
+ }
654
+ const manager = this.queryRunner
655
+ .manager;
656
+ updateResult = await manager.update(subject.metadata.target, subject.identifier, partialEntity);
657
+ //#endregion
658
+ }
659
+ else {
660
+ // here we execute our restory query
661
+ // we need to enable entity restory because we update a subject identifier
662
+ // which is not same object as our entity that's why we don't need to worry about our entity to get dirty
663
+ // also, we disable listeners because we call them on our own in persistence layer
664
+ const softDeleteQueryBuilder = this.queryRunner.manager
665
+ .createQueryBuilder()
666
+ .restore()
667
+ .from(subject.metadata.target)
668
+ .updateEntity(this.options && this.options.reload === false
669
+ ? false
670
+ : true)
671
+ .callListeners(false);
672
+ if (subject.entity) {
673
+ softDeleteQueryBuilder.whereEntity(subject.identifier);
674
+ }
675
+ else {
676
+ // in this case identifier is just conditions object to update by
677
+ softDeleteQueryBuilder.where(subject.identifier);
678
+ }
679
+ updateResult = await softDeleteQueryBuilder.execute();
680
+ }
681
+ subject.generatedMap = updateResult.generatedMaps[0];
682
+ if (subject.generatedMap) {
683
+ subject.metadata.columns.forEach((column) => {
684
+ const value = column.getEntityValue(subject.generatedMap);
685
+ if (value !== undefined && value !== null) {
686
+ const preparedValue = this.queryRunner.connection.driver.prepareHydratedValue(value, column);
687
+ column.setEntityValue(subject.generatedMap, preparedValue);
688
+ }
689
+ });
690
+ }
691
+ // experiments, remove probably, need to implement tree tables children removal
692
+ // if (subject.updatedRelationMaps.length > 0) {
693
+ // await Promise.all(subject.updatedRelationMaps.map(async updatedRelation => {
694
+ // if (!updatedRelation.relation.isTreeParent) return;
695
+ // if (!updatedRelation.value !== null) return;
696
+ //
697
+ // if (subject.metadata.treeType === "closure-table") {
698
+ // await new ClosureSubjectExecutor(this.queryRunner).deleteChildrenOf(subject);
699
+ // }
700
+ // }));
701
+ // }
702
+ }));
703
+ }
945
704
  /**
946
705
  * Updates all special columns of the saving entities (create date, update date, version, etc.).
947
706
  * Also updates nullable columns and columns with default values.
948
707
  */
949
- SubjectExecutor.prototype.updateSpecialColumnsInPersistedEntities = function () {
950
- var _this = this;
708
+ updateSpecialColumnsInPersistedEntities() {
951
709
  // update inserted entity properties
952
710
  if (this.insertSubjects.length)
953
711
  this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.insertSubjects);
@@ -962,24 +720,24 @@ var SubjectExecutor = /** @class */ (function () {
962
720
  this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.recoverSubjects);
963
721
  // remove ids from the entities that were removed
964
722
  if (this.removeSubjects.length) {
965
- this.removeSubjects.forEach(function (subject) {
723
+ this.removeSubjects.forEach((subject) => {
966
724
  if (!subject.entity)
967
725
  return;
968
- subject.metadata.primaryColumns.forEach(function (primaryColumn) {
726
+ subject.metadata.primaryColumns.forEach((primaryColumn) => {
969
727
  primaryColumn.setEntityValue(subject.entity, undefined);
970
728
  });
971
729
  });
972
730
  }
973
731
  // other post-persist updations
974
- this.allSubjects.forEach(function (subject) {
732
+ this.allSubjects.forEach((subject) => {
975
733
  if (!subject.entity)
976
734
  return;
977
- subject.metadata.relationIds.forEach(function (relationId) {
735
+ subject.metadata.relationIds.forEach((relationId) => {
978
736
  relationId.setValue(subject.entity);
979
737
  });
980
738
  //#region @backend
981
739
  // mongo _id remove
982
- if (InstanceChecker_1.InstanceChecker.isMongoEntityManager(_this.queryRunner.manager)) {
740
+ if (InstanceChecker_1.InstanceChecker.isMongoEntityManager(this.queryRunner.manager)) {
983
741
  if (subject.metadata.objectIdColumn &&
984
742
  subject.metadata.objectIdColumn.databaseName &&
985
743
  subject.metadata.objectIdColumn.databaseName !==
@@ -989,22 +747,21 @@ var SubjectExecutor = /** @class */ (function () {
989
747
  }
990
748
  //#endregion
991
749
  });
992
- };
750
+ }
993
751
  /**
994
752
  * Updates all special columns of the saving entities (create date, update date, version, etc.).
995
753
  * Also updates nullable columns and columns with default values.
996
754
  */
997
- SubjectExecutor.prototype.updateSpecialColumnsInInsertedAndUpdatedEntities = function (subjects) {
998
- var _this = this;
999
- subjects.forEach(function (subject) {
755
+ updateSpecialColumnsInInsertedAndUpdatedEntities(subjects) {
756
+ subjects.forEach((subject) => {
1000
757
  if (!subject.entity)
1001
758
  return;
1002
759
  // set values to "null" for nullable columns that did not have values
1003
- subject.metadata.columns.forEach(function (column) {
760
+ subject.metadata.columns.forEach((column) => {
1004
761
  // if table inheritance is used make sure this column is not child's column
1005
762
  if (subject.metadata.childEntityMetadatas.length > 0 &&
1006
763
  subject.metadata.childEntityMetadatas
1007
- .map(function (metadata) { return metadata.target; })
764
+ .map((metadata) => metadata.target)
1008
765
  .indexOf(column.target) !== -1)
1009
766
  return;
1010
767
  // entities does not have virtual columns
@@ -1012,14 +769,14 @@ var SubjectExecutor = /** @class */ (function () {
1012
769
  return;
1013
770
  // update nullable columns
1014
771
  if (column.isNullable) {
1015
- var columnValue = column.getEntityValue(subject.entity);
772
+ const columnValue = column.getEntityValue(subject.entity);
1016
773
  if (columnValue === undefined)
1017
774
  column.setEntityValue(subject.entity, null);
1018
775
  }
1019
776
  // update relational columns
1020
777
  if (subject.updatedRelationMaps.length > 0) {
1021
- subject.updatedRelationMaps.forEach(function (updatedRelationMap) {
1022
- updatedRelationMap.relation.joinColumns.forEach(function (column) {
778
+ subject.updatedRelationMaps.forEach((updatedRelationMap) => {
779
+ updatedRelationMap.relation.joinColumns.forEach((column) => {
1023
780
  if (column.isVirtual === true)
1024
781
  return;
1025
782
  column.setEntityValue(subject.entity, ObjectUtils_1.ObjectUtils.isObject(updatedRelationMap.value)
@@ -1031,9 +788,9 @@ var SubjectExecutor = /** @class */ (function () {
1031
788
  });
1032
789
  // merge into entity all generated values returned by a database
1033
790
  if (subject.generatedMap)
1034
- _this.queryRunner.manager.merge(subject.metadata.target, subject.entity, subject.generatedMap);
791
+ this.queryRunner.manager.merge(subject.metadata.target, subject.entity, subject.generatedMap);
1035
792
  });
1036
- };
793
+ }
1037
794
  /**
1038
795
  * Groups subjects by metadata names (by tables) to make bulk insertions and deletions possible.
1039
796
  * However there are some limitations with bulk insertions of data into tables with generated (increment) columns
@@ -1045,17 +802,17 @@ var SubjectExecutor = /** @class */ (function () {
1045
802
  * Other drivers like postgres and sql server support RETURNING / OUTPUT statement which allows to return generated
1046
803
  * id for each inserted row, that's why bulk insertion is not limited to junction tables in there.
1047
804
  */
1048
- SubjectExecutor.prototype.groupBulkSubjects = function (subjects, type) {
1049
- var group = {};
1050
- var keys = [];
1051
- var hasReturningDependColumns = subjects.some(function (subject) {
805
+ groupBulkSubjects(subjects, type) {
806
+ const group = {};
807
+ const keys = [];
808
+ const hasReturningDependColumns = subjects.some((subject) => {
1052
809
  return subject.metadata.getInsertionReturningColumns().length > 0;
1053
810
  });
1054
- var groupingAllowed = type === "delete" ||
811
+ const groupingAllowed = type === "delete" ||
1055
812
  this.queryRunner.connection.driver.isReturningSqlSupported("insert") ||
1056
813
  hasReturningDependColumns === false;
1057
- subjects.forEach(function (subject, index) {
1058
- var key = groupingAllowed || subject.metadata.isJunction
814
+ subjects.forEach((subject, index) => {
815
+ const key = groupingAllowed || subject.metadata.isJunction
1059
816
  ? subject.metadata.name
1060
817
  : subject.metadata.name + "_" + index;
1061
818
  if (!group[key]) {
@@ -1067,8 +824,7 @@ var SubjectExecutor = /** @class */ (function () {
1067
824
  }
1068
825
  });
1069
826
  return [group, keys];
1070
- };
1071
- return SubjectExecutor;
1072
- }());
827
+ }
828
+ }
1073
829
  exports.SubjectExecutor = SubjectExecutor;
1074
830
  //# sourceMappingURL=SubjectExecutor.js.map