typeorm 0.2.38 → 0.2.39-dev.1649882

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 (695) hide show
  1. package/README.md +60 -59
  2. package/browser/connection/ConnectionMetadataBuilder.js +4 -4
  3. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  4. package/browser/connection/ConnectionOptionsReader.js +2 -1
  5. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  6. package/browser/connection/options-reader/ConnectionOptionsYmlReader.js +1 -1
  7. package/browser/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  8. package/browser/decorator/entity-view/ViewEntity.js +1 -0
  9. package/browser/decorator/entity-view/ViewEntity.js.map +1 -1
  10. package/browser/decorator/options/ViewEntityOptions.d.ts +5 -0
  11. package/browser/decorator/options/ViewEntityOptions.js.map +1 -1
  12. package/browser/decorator/transaction/Transaction.js +3 -3
  13. package/browser/decorator/transaction/Transaction.js.map +1 -1
  14. package/browser/driver/DriverUtils.js +1 -1
  15. package/browser/driver/DriverUtils.js.map +1 -1
  16. package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.d.ts +5 -0
  17. package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.js.map +1 -1
  18. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js +6 -5
  19. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  20. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +19 -48
  21. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  22. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.d.ts +5 -0
  23. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.js.map +1 -1
  24. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +2 -1
  25. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
  26. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +17 -46
  27. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  28. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +5 -0
  29. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  30. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +4 -3
  31. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  32. package/browser/driver/cockroachdb/CockroachConnectionOptions.d.ts +10 -0
  33. package/browser/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  34. package/browser/driver/cockroachdb/CockroachDriver.js +28 -18
  35. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  36. package/browser/driver/cockroachdb/CockroachQueryRunner.js +109 -146
  37. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  38. package/browser/driver/cordova/CordovaConnectionOptions.d.ts +5 -0
  39. package/browser/driver/cordova/CordovaConnectionOptions.js.map +1 -1
  40. package/browser/driver/cordova/CordovaDriver.d.ts +1 -1
  41. package/browser/driver/cordova/CordovaDriver.js +27 -19
  42. package/browser/driver/cordova/CordovaDriver.js.map +1 -1
  43. package/browser/driver/cordova/CordovaQueryRunner.js +50 -43
  44. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  45. package/browser/driver/expo/ExpoQueryRunner.js +12 -43
  46. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  47. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +5 -0
  48. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  49. package/browser/driver/mongodb/MongoDriver.js +2 -1
  50. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  51. package/browser/driver/mysql/MysqlConnectionOptions.d.ts +6 -0
  52. package/browser/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  53. package/browser/driver/mysql/MysqlDriver.js +4 -2
  54. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  55. package/browser/driver/mysql/MysqlQueryRunner.js +24 -54
  56. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  57. package/browser/driver/nativescript/NativescriptQueryRunner.js +45 -37
  58. package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  59. package/browser/driver/oracle/OracleConnectionOptions.d.ts +5 -0
  60. package/browser/driver/oracle/OracleConnectionOptions.js.map +1 -1
  61. package/browser/driver/oracle/OracleDriver.js +5 -4
  62. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  63. package/browser/driver/oracle/OracleQueryRunner.js +20 -48
  64. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  65. package/browser/driver/postgres/PostgresConnectionOptions.d.ts +10 -0
  66. package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  67. package/browser/driver/postgres/PostgresDriver.d.ts +2 -2
  68. package/browser/driver/postgres/PostgresDriver.js +37 -45
  69. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  70. package/browser/driver/postgres/PostgresQueryRunner.js +28 -66
  71. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  72. package/browser/driver/react-native/ReactNativeConnectionOptions.d.ts +5 -0
  73. package/browser/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  74. package/browser/driver/react-native/ReactNativeDriver.js +2 -1
  75. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  76. package/browser/driver/sap/SapConnectionOptions.d.ts +16 -6
  77. package/browser/driver/sap/SapConnectionOptions.js.map +1 -1
  78. package/browser/driver/sap/SapDriver.js +6 -3
  79. package/browser/driver/sap/SapDriver.js.map +1 -1
  80. package/browser/driver/sap/SapQueryRunner.js +30 -78
  81. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  82. package/browser/driver/sqlite/SqliteConnectionOptions.d.ts +5 -0
  83. package/browser/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  84. package/browser/driver/sqlite/SqliteDriver.js +4 -3
  85. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  86. package/browser/driver/sqlite/SqliteQueryRunner.js +16 -8
  87. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  88. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +19 -49
  89. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  90. package/browser/driver/sqljs/SqljsConnectionOptions.d.ts +5 -0
  91. package/browser/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
  92. package/browser/driver/sqljs/SqljsDriver.js +9 -24
  93. package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
  94. package/browser/driver/sqljs/SqljsQueryRunner.js +9 -10
  95. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  96. package/browser/driver/sqlserver/SqlServerConnectionOptions.d.ts +5 -0
  97. package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  98. package/browser/driver/sqlserver/SqlServerDriver.js +7 -6
  99. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  100. package/browser/driver/sqlserver/SqlServerQueryRunner.js +84 -116
  101. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  102. package/browser/entity-manager/MongoEntityManager.js +8 -13
  103. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  104. package/browser/find-options/FindOptionsUtils.js +1 -1
  105. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  106. package/browser/metadata/ColumnMetadata.js +4 -4
  107. package/browser/metadata/ColumnMetadata.js.map +1 -1
  108. package/browser/metadata/EmbeddedMetadata.js +1 -1
  109. package/browser/metadata/EmbeddedMetadata.js.map +1 -1
  110. package/browser/metadata/EntityMetadata.d.ts +5 -0
  111. package/browser/metadata/EntityMetadata.js +2 -1
  112. package/browser/metadata/EntityMetadata.js.map +1 -1
  113. package/browser/metadata/RelationMetadata.js +4 -4
  114. package/browser/metadata/RelationMetadata.js.map +1 -1
  115. package/browser/metadata-args/TableMetadataArgs.d.ts +4 -0
  116. package/browser/metadata-args/TableMetadataArgs.js.map +1 -1
  117. package/browser/metadata-builder/EntityMetadataBuilder.js +5 -5
  118. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  119. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +1 -1
  120. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  121. package/browser/migration/MigrationExecutor.d.ts +1 -1
  122. package/browser/migration/MigrationExecutor.js +6 -14
  123. package/browser/migration/MigrationExecutor.js.map +1 -1
  124. package/browser/naming-strategy/DefaultNamingStrategy.js +5 -5
  125. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  126. package/browser/persistence/Subject.js +1 -1
  127. package/browser/persistence/Subject.js.map +1 -1
  128. package/browser/persistence/SubjectDatabaseEntityLoader.js +1 -1
  129. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  130. package/browser/persistence/SubjectExecutor.js +4 -4
  131. package/browser/persistence/SubjectExecutor.js.map +1 -1
  132. package/browser/persistence/SubjectTopoligicalSorter.js +5 -5
  133. package/browser/persistence/SubjectTopoligicalSorter.js.map +1 -1
  134. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +10 -4
  135. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  136. package/browser/persistence/tree/ClosureSubjectExecutor.js +4 -4
  137. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  138. package/browser/query-builder/DeleteQueryBuilder.js +3 -10
  139. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  140. package/browser/query-builder/InsertQueryBuilder.js +4 -6
  141. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  142. package/browser/query-builder/QueryBuilder.js +9 -9
  143. package/browser/query-builder/QueryBuilder.js.map +1 -1
  144. package/browser/query-builder/RelationLoader.js +2 -2
  145. package/browser/query-builder/RelationLoader.js.map +1 -1
  146. package/browser/query-builder/RelationRemover.js +6 -6
  147. package/browser/query-builder/RelationRemover.js.map +1 -1
  148. package/browser/query-builder/SelectQueryBuilder.d.ts +1 -1
  149. package/browser/query-builder/SelectQueryBuilder.js +33 -17
  150. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  151. package/browser/query-builder/SoftDeleteQueryBuilder.js +3 -10
  152. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  153. package/browser/query-builder/UpdateQueryBuilder.js +5 -12
  154. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  155. package/browser/query-builder/relation-id/RelationIdLoader.js +1 -1
  156. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  157. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +4 -10
  158. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  159. package/browser/query-runner/BaseQueryRunner.js +5 -4
  160. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  161. package/browser/query-runner/QueryLock.js +1 -1
  162. package/browser/query-runner/QueryLock.js.map +1 -1
  163. package/browser/repository/BaseEntity.js +1 -1
  164. package/browser/repository/BaseEntity.js.map +1 -1
  165. package/browser/repository/Repository.js +1 -1
  166. package/browser/repository/Repository.js.map +1 -1
  167. package/browser/repository/TreeRepository.js +2 -2
  168. package/browser/repository/TreeRepository.js.map +1 -1
  169. package/browser/schema-builder/RdbmsSchemaBuilder.js +223 -148
  170. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  171. package/browser/schema-builder/table/TableCheck.js +1 -1
  172. package/browser/schema-builder/table/TableCheck.js.map +1 -1
  173. package/browser/schema-builder/table/TableForeignKey.js +2 -2
  174. package/browser/schema-builder/table/TableForeignKey.js.map +1 -1
  175. package/browser/schema-builder/table/TableIndex.js +1 -1
  176. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  177. package/browser/schema-builder/table/TableUnique.js +1 -1
  178. package/browser/schema-builder/table/TableUnique.js.map +1 -1
  179. package/browser/schema-builder/util/ViewUtils.d.ts +7 -0
  180. package/browser/schema-builder/util/ViewUtils.js +25 -0
  181. package/browser/schema-builder/util/ViewUtils.js.map +1 -0
  182. package/browser/subscriber/Broadcaster.d.ts +23 -2
  183. package/browser/subscriber/Broadcaster.js +35 -2
  184. package/browser/subscriber/Broadcaster.js.map +1 -1
  185. package/browser/subscriber/BroadcasterResult.d.ts +4 -0
  186. package/browser/subscriber/BroadcasterResult.js +19 -0
  187. package/browser/subscriber/BroadcasterResult.js.map +1 -1
  188. package/cache/DbQueryResultCache.js +12 -12
  189. package/cache/RedisQueryResultCache.js +12 -12
  190. package/cli.js +1 -6
  191. package/cli.js.map +1 -1
  192. package/commands/CacheClearCommand.js +4 -4
  193. package/commands/CacheClearCommand.js.map +1 -1
  194. package/commands/CommandUtils.js +10 -10
  195. package/commands/CommandUtils.js.map +1 -1
  196. package/commands/EntityCreateCommand.js +3 -3
  197. package/commands/EntityCreateCommand.js.map +1 -1
  198. package/commands/InitCommand.js +5 -5
  199. package/commands/InitCommand.js.map +1 -1
  200. package/commands/MigrationCreateCommand.js +5 -5
  201. package/commands/MigrationCreateCommand.js.map +1 -1
  202. package/commands/MigrationGenerateCommand.js +7 -7
  203. package/commands/MigrationGenerateCommand.js.map +1 -1
  204. package/commands/MigrationRevertCommand.js +4 -4
  205. package/commands/MigrationRevertCommand.js.map +1 -1
  206. package/commands/MigrationRunCommand.js +5 -5
  207. package/commands/MigrationRunCommand.js.map +1 -1
  208. package/commands/MigrationShowCommand.js +5 -5
  209. package/commands/MigrationShowCommand.js.map +1 -1
  210. package/commands/QueryCommand.js +4 -4
  211. package/commands/QueryCommand.js.map +1 -1
  212. package/commands/SchemaDropCommand.js +4 -4
  213. package/commands/SchemaDropCommand.js.map +1 -1
  214. package/commands/SchemaLogCommand.js +5 -5
  215. package/commands/SchemaLogCommand.js.map +1 -1
  216. package/commands/SchemaSyncCommand.js +4 -4
  217. package/commands/SchemaSyncCommand.js.map +1 -1
  218. package/commands/SubscriberCreateCommand.js +3 -3
  219. package/commands/SubscriberCreateCommand.js.map +1 -1
  220. package/commands/VersionCommand.js +3 -3
  221. package/commands/VersionCommand.js.map +1 -1
  222. package/connection/Connection.js +19 -19
  223. package/connection/Connection.js.map +1 -1
  224. package/connection/ConnectionMetadataBuilder.js +11 -11
  225. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  226. package/connection/ConnectionOptionsReader.js +11 -10
  227. package/connection/ConnectionOptionsReader.js.map +1 -1
  228. package/connection/options-reader/ConnectionOptionsEnvReader.js +2 -2
  229. package/connection/options-reader/ConnectionOptionsXmlReader.js +3 -3
  230. package/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
  231. package/connection/options-reader/ConnectionOptionsYmlReader.js +4 -4
  232. package/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  233. package/decorator/Check.js +1 -1
  234. package/decorator/Check.js.map +1 -1
  235. package/decorator/EntityRepository.js +1 -1
  236. package/decorator/EntityRepository.js.map +1 -1
  237. package/decorator/Exclusion.js +1 -1
  238. package/decorator/Exclusion.js.map +1 -1
  239. package/decorator/Generated.js +1 -1
  240. package/decorator/Generated.js.map +1 -1
  241. package/decorator/Index.js +1 -1
  242. package/decorator/Index.js.map +1 -1
  243. package/decorator/Unique.js +1 -1
  244. package/decorator/Unique.js.map +1 -1
  245. package/decorator/columns/Column.js +4 -4
  246. package/decorator/columns/Column.js.map +1 -1
  247. package/decorator/columns/CreateDateColumn.js +1 -1
  248. package/decorator/columns/CreateDateColumn.js.map +1 -1
  249. package/decorator/columns/DeleteDateColumn.js +1 -1
  250. package/decorator/columns/DeleteDateColumn.js.map +1 -1
  251. package/decorator/columns/ObjectIdColumn.js +1 -1
  252. package/decorator/columns/ObjectIdColumn.js.map +1 -1
  253. package/decorator/columns/PrimaryColumn.js +2 -2
  254. package/decorator/columns/PrimaryColumn.js.map +1 -1
  255. package/decorator/columns/PrimaryGeneratedColumn.js +2 -2
  256. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  257. package/decorator/columns/UpdateDateColumn.js +1 -1
  258. package/decorator/columns/UpdateDateColumn.js.map +1 -1
  259. package/decorator/columns/VersionColumn.js +1 -1
  260. package/decorator/columns/VersionColumn.js.map +1 -1
  261. package/decorator/columns/ViewColumn.js +1 -1
  262. package/decorator/columns/ViewColumn.js.map +1 -1
  263. package/decorator/entity/ChildEntity.js +2 -2
  264. package/decorator/entity/ChildEntity.js.map +1 -1
  265. package/decorator/entity/Entity.js +1 -1
  266. package/decorator/entity/Entity.js.map +1 -1
  267. package/decorator/entity/TableInheritance.js +1 -1
  268. package/decorator/entity/TableInheritance.js.map +1 -1
  269. package/decorator/entity-view/ViewEntity.js +2 -1
  270. package/decorator/entity-view/ViewEntity.js.map +1 -1
  271. package/decorator/listeners/AfterInsert.js +1 -1
  272. package/decorator/listeners/AfterInsert.js.map +1 -1
  273. package/decorator/listeners/AfterLoad.js +1 -1
  274. package/decorator/listeners/AfterLoad.js.map +1 -1
  275. package/decorator/listeners/AfterRemove.js +1 -1
  276. package/decorator/listeners/AfterRemove.js.map +1 -1
  277. package/decorator/listeners/AfterUpdate.js +1 -1
  278. package/decorator/listeners/AfterUpdate.js.map +1 -1
  279. package/decorator/listeners/BeforeInsert.js +1 -1
  280. package/decorator/listeners/BeforeInsert.js.map +1 -1
  281. package/decorator/listeners/BeforeRemove.js +1 -1
  282. package/decorator/listeners/BeforeRemove.js.map +1 -1
  283. package/decorator/listeners/BeforeUpdate.js +1 -1
  284. package/decorator/listeners/BeforeUpdate.js.map +1 -1
  285. package/decorator/listeners/EventSubscriber.js +1 -1
  286. package/decorator/listeners/EventSubscriber.js.map +1 -1
  287. package/decorator/options/ViewEntityOptions.d.ts +5 -0
  288. package/decorator/options/ViewEntityOptions.js.map +1 -1
  289. package/decorator/relations/JoinColumn.js +1 -1
  290. package/decorator/relations/JoinColumn.js.map +1 -1
  291. package/decorator/relations/JoinTable.js +1 -1
  292. package/decorator/relations/JoinTable.js.map +1 -1
  293. package/decorator/relations/ManyToMany.js +1 -1
  294. package/decorator/relations/ManyToMany.js.map +1 -1
  295. package/decorator/relations/ManyToOne.js +1 -1
  296. package/decorator/relations/ManyToOne.js.map +1 -1
  297. package/decorator/relations/OneToMany.js +1 -1
  298. package/decorator/relations/OneToMany.js.map +1 -1
  299. package/decorator/relations/OneToOne.js +1 -1
  300. package/decorator/relations/OneToOne.js.map +1 -1
  301. package/decorator/relations/RelationCount.js +1 -1
  302. package/decorator/relations/RelationCount.js.map +1 -1
  303. package/decorator/relations/RelationId.js +1 -1
  304. package/decorator/relations/RelationId.js.map +1 -1
  305. package/decorator/transaction/Transaction.js +7 -7
  306. package/decorator/transaction/Transaction.js.map +1 -1
  307. package/decorator/transaction/TransactionManager.js +1 -1
  308. package/decorator/transaction/TransactionManager.js.map +1 -1
  309. package/decorator/transaction/TransactionRepository.js +1 -1
  310. package/decorator/transaction/TransactionRepository.js.map +1 -1
  311. package/decorator/tree/Tree.js +1 -1
  312. package/decorator/tree/Tree.js.map +1 -1
  313. package/decorator/tree/TreeChildren.js +1 -1
  314. package/decorator/tree/TreeChildren.js.map +1 -1
  315. package/decorator/tree/TreeLevelColumn.js +1 -1
  316. package/decorator/tree/TreeLevelColumn.js.map +1 -1
  317. package/decorator/tree/TreeParent.js +1 -1
  318. package/decorator/tree/TreeParent.js.map +1 -1
  319. package/driver/DriverUtils.js +9 -9
  320. package/driver/DriverUtils.js.map +1 -1
  321. package/driver/aurora-data-api/AuroraDataApiConnection.js +1 -1
  322. package/driver/aurora-data-api/AuroraDataApiConnection.js.map +1 -1
  323. package/driver/aurora-data-api/AuroraDataApiConnectionOptions.d.ts +5 -0
  324. package/driver/aurora-data-api/AuroraDataApiConnectionOptions.js.map +1 -1
  325. package/driver/aurora-data-api/AuroraDataApiDriver.js +12 -11
  326. package/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  327. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +146 -175
  328. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  329. package/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.d.ts +5 -0
  330. package/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.js.map +1 -1
  331. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +10 -9
  332. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
  333. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +29 -58
  334. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  335. package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +5 -0
  336. package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  337. package/driver/better-sqlite3/BetterSqlite3Driver.js +12 -11
  338. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  339. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +5 -5
  340. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  341. package/driver/capacitor/CapacitorDriver.js +7 -7
  342. package/driver/capacitor/CapacitorDriver.js.map +1 -1
  343. package/driver/capacitor/CapacitorQueryRunner.js +5 -5
  344. package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  345. package/driver/cockroachdb/CockroachConnectionOptions.d.ts +10 -0
  346. package/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  347. package/driver/cockroachdb/CockroachDriver.js +38 -28
  348. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  349. package/driver/cockroachdb/CockroachQueryRunner.js +241 -278
  350. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  351. package/driver/cordova/CordovaConnectionOptions.d.ts +5 -0
  352. package/driver/cordova/CordovaConnectionOptions.js.map +1 -1
  353. package/driver/cordova/CordovaDriver.d.ts +1 -1
  354. package/driver/cordova/CordovaDriver.js +30 -22
  355. package/driver/cordova/CordovaDriver.js.map +1 -1
  356. package/driver/cordova/CordovaQueryRunner.js +61 -54
  357. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  358. package/driver/expo/ExpoDriver.js +3 -3
  359. package/driver/expo/ExpoDriver.js.map +1 -1
  360. package/driver/expo/ExpoQueryRunner.js +23 -54
  361. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  362. package/driver/mongodb/MongoConnectionOptions.d.ts +5 -0
  363. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  364. package/driver/mongodb/MongoDriver.js +4 -3
  365. package/driver/mongodb/MongoDriver.js.map +1 -1
  366. package/driver/mongodb/MongoQueryRunner.js +178 -178
  367. package/driver/mysql/MysqlConnectionOptions.d.ts +6 -0
  368. package/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  369. package/driver/mysql/MysqlDriver.js +9 -7
  370. package/driver/mysql/MysqlDriver.js.map +1 -1
  371. package/driver/mysql/MysqlQueryRunner.js +152 -182
  372. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  373. package/driver/nativescript/NativescriptDriver.js +3 -3
  374. package/driver/nativescript/NativescriptDriver.js.map +1 -1
  375. package/driver/nativescript/NativescriptQueryRunner.js +48 -40
  376. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  377. package/driver/oracle/OracleConnectionOptions.d.ts +5 -0
  378. package/driver/oracle/OracleConnectionOptions.js.map +1 -1
  379. package/driver/oracle/OracleDriver.js +13 -12
  380. package/driver/oracle/OracleDriver.js.map +1 -1
  381. package/driver/oracle/OracleQueryRunner.js +143 -171
  382. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  383. package/driver/postgres/PostgresConnectionOptions.d.ts +10 -0
  384. package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  385. package/driver/postgres/PostgresDriver.d.ts +2 -2
  386. package/driver/postgres/PostgresDriver.js +52 -60
  387. package/driver/postgres/PostgresDriver.js.map +1 -1
  388. package/driver/postgres/PostgresQueryRunner.js +175 -213
  389. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  390. package/driver/react-native/ReactNativeConnectionOptions.d.ts +5 -0
  391. package/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  392. package/driver/react-native/ReactNativeDriver.js +5 -4
  393. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  394. package/driver/react-native/ReactNativeQueryRunner.js +3 -3
  395. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  396. package/driver/sap/SapConnectionOptions.d.ts +16 -6
  397. package/driver/sap/SapConnectionOptions.js.map +1 -1
  398. package/driver/sap/SapDriver.js +11 -8
  399. package/driver/sap/SapDriver.js.map +1 -1
  400. package/driver/sap/SapQueryRunner.js +159 -207
  401. package/driver/sap/SapQueryRunner.js.map +1 -1
  402. package/driver/sqlite/SqliteConnectionOptions.d.ts +5 -0
  403. package/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  404. package/driver/sqlite/SqliteDriver.js +12 -11
  405. package/driver/sqlite/SqliteDriver.js.map +1 -1
  406. package/driver/sqlite/SqliteQueryRunner.js +21 -13
  407. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  408. package/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -4
  409. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +138 -168
  410. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  411. package/driver/sqljs/SqljsConnectionOptions.d.ts +5 -0
  412. package/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
  413. package/driver/sqljs/SqljsDriver.js +22 -37
  414. package/driver/sqljs/SqljsDriver.js.map +1 -1
  415. package/driver/sqljs/SqljsQueryRunner.js +17 -18
  416. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  417. package/driver/sqlserver/SqlServerConnectionOptions.d.ts +5 -0
  418. package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  419. package/driver/sqlserver/SqlServerDriver.js +13 -12
  420. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  421. package/driver/sqlserver/SqlServerQueryRunner.js +220 -252
  422. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  423. package/entity-manager/EntityManager.js +30 -30
  424. package/entity-manager/EntityManager.js.map +1 -1
  425. package/entity-manager/MongoEntityManager.js +23 -28
  426. package/entity-manager/MongoEntityManager.js.map +1 -1
  427. package/entity-manager/SqljsEntityManager.js +5 -5
  428. package/entity-manager/SqljsEntityManager.js.map +1 -1
  429. package/entity-schema/EntitySchemaTransformer.js +1 -1
  430. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  431. package/error/AlreadyHasActiveConnectionError.js +1 -1
  432. package/error/AlreadyHasActiveConnectionError.js.map +1 -1
  433. package/error/CannotAttachTreeChildrenEntityError.js +1 -1
  434. package/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  435. package/error/CannotConnectAlreadyConnectedError.js +1 -1
  436. package/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  437. package/error/CannotCreateEntityIdMapError.js +1 -1
  438. package/error/CannotCreateEntityIdMapError.js.map +1 -1
  439. package/error/CannotDetermineEntityError.js +1 -1
  440. package/error/CannotDetermineEntityError.js.map +1 -1
  441. package/error/CannotExecuteNotConnectedError.js +1 -1
  442. package/error/CannotExecuteNotConnectedError.js.map +1 -1
  443. package/error/CannotGetEntityManagerNotConnectedError.js +1 -1
  444. package/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  445. package/error/CannotReflectMethodParameterTypeError.js +1 -1
  446. package/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  447. package/error/CircularRelationsError.js +1 -1
  448. package/error/CircularRelationsError.js.map +1 -1
  449. package/error/ColumnTypeUndefinedError.js +1 -1
  450. package/error/ColumnTypeUndefinedError.js.map +1 -1
  451. package/error/ConnectionIsNotSetError.js +1 -1
  452. package/error/ConnectionIsNotSetError.js.map +1 -1
  453. package/error/ConnectionNotFoundError.js +1 -1
  454. package/error/ConnectionNotFoundError.js.map +1 -1
  455. package/error/CustomRepositoryCannotInheritRepositoryError.js +1 -1
  456. package/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  457. package/error/CustomRepositoryDoesNotHaveEntityError.js +1 -1
  458. package/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  459. package/error/CustomRepositoryNotFoundError.js +1 -1
  460. package/error/CustomRepositoryNotFoundError.js.map +1 -1
  461. package/error/DataTypeNotSupportedError.js +1 -1
  462. package/error/DataTypeNotSupportedError.js.map +1 -1
  463. package/error/DriverOptionNotSetError.js +1 -1
  464. package/error/DriverOptionNotSetError.js.map +1 -1
  465. package/error/DriverPackageNotInstalledError.js +1 -1
  466. package/error/DriverPackageNotInstalledError.js.map +1 -1
  467. package/error/EntityColumnNotFound.js +1 -1
  468. package/error/EntityColumnNotFound.js.map +1 -1
  469. package/error/EntityMetadataNotFoundError.js +1 -1
  470. package/error/EntityMetadataNotFoundError.js.map +1 -1
  471. package/error/EntityNotFoundError.js +1 -1
  472. package/error/EntityNotFoundError.js.map +1 -1
  473. package/error/FindRelationsNotFoundError.js +1 -1
  474. package/error/FindRelationsNotFoundError.js.map +1 -1
  475. package/error/InitializedRelationError.js +1 -1
  476. package/error/InitializedRelationError.js.map +1 -1
  477. package/error/InsertValuesMissingError.js +1 -1
  478. package/error/InsertValuesMissingError.js.map +1 -1
  479. package/error/LimitOnUpdateNotSupportedError.js +1 -1
  480. package/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  481. package/error/LockNotSupportedOnGivenDriverError.js +1 -1
  482. package/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  483. package/error/MetadataAlreadyExistsError.js +1 -1
  484. package/error/MetadataAlreadyExistsError.js.map +1 -1
  485. package/error/MetadataWithSuchNameAlreadyExistsError.js +1 -1
  486. package/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  487. package/error/MissingDeleteDateColumnError.js +1 -1
  488. package/error/MissingDeleteDateColumnError.js.map +1 -1
  489. package/error/MissingDriverError.js +1 -1
  490. package/error/MissingDriverError.js.map +1 -1
  491. package/error/MissingJoinColumnError.js +1 -1
  492. package/error/MissingJoinColumnError.js.map +1 -1
  493. package/error/MissingJoinTableError.js +1 -1
  494. package/error/MissingJoinTableError.js.map +1 -1
  495. package/error/MissingPrimaryColumnError.js +1 -1
  496. package/error/MissingPrimaryColumnError.js.map +1 -1
  497. package/error/MustBeEntityError.js +1 -1
  498. package/error/MustBeEntityError.js.map +1 -1
  499. package/error/NamingStrategyNotFoundError.js +1 -1
  500. package/error/NamingStrategyNotFoundError.js.map +1 -1
  501. package/error/NestedSetMultipleRootError.js +1 -1
  502. package/error/NestedSetMultipleRootError.js.map +1 -1
  503. package/error/NoConnectionForRepositoryError.js +1 -1
  504. package/error/NoConnectionForRepositoryError.js.map +1 -1
  505. package/error/NoConnectionOptionError.js +1 -1
  506. package/error/NoConnectionOptionError.js.map +1 -1
  507. package/error/NoNeedToReleaseEntityManagerError.js +1 -1
  508. package/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  509. package/error/NoVersionOrUpdateDateColumnError.js +1 -1
  510. package/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  511. package/error/OffsetWithoutLimitNotSupportedError.js +1 -1
  512. package/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  513. package/error/OptimisticLockCanNotBeUsedError.js +1 -1
  514. package/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  515. package/error/OptimisticLockVersionMismatchError.js +1 -1
  516. package/error/OptimisticLockVersionMismatchError.js.map +1 -1
  517. package/error/PersistedEntityNotFoundError.js +1 -1
  518. package/error/PersistedEntityNotFoundError.js.map +1 -1
  519. package/error/PessimisticLockTransactionRequiredError.js +1 -1
  520. package/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  521. package/error/PrimaryColumnCannotBeNullableError.js +1 -1
  522. package/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  523. package/error/QueryFailedError.js +3 -3
  524. package/error/QueryFailedError.js.map +1 -1
  525. package/error/QueryRunnerAlreadyReleasedError.js +1 -1
  526. package/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  527. package/error/QueryRunnerProviderAlreadyReleasedError.js +1 -1
  528. package/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  529. package/error/RepositoryNotFoundError.js +1 -1
  530. package/error/RepositoryNotFoundError.js.map +1 -1
  531. package/error/RepositoryNotTreeError.js +1 -1
  532. package/error/RepositoryNotTreeError.js.map +1 -1
  533. package/error/ReturningStatementNotSupportedError.js +1 -1
  534. package/error/ReturningStatementNotSupportedError.js.map +1 -1
  535. package/error/SubjectRemovedAndUpdatedError.js +1 -1
  536. package/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  537. package/error/SubjectWithoutIdentifierError.js +1 -1
  538. package/error/SubjectWithoutIdentifierError.js.map +1 -1
  539. package/error/TransactionAlreadyStartedError.js +1 -1
  540. package/error/TransactionAlreadyStartedError.js.map +1 -1
  541. package/error/TransactionNotStartedError.js +1 -1
  542. package/error/TransactionNotStartedError.js.map +1 -1
  543. package/error/TreeRepositoryNotSupportedError.js +1 -1
  544. package/error/TreeRepositoryNotSupportedError.js.map +1 -1
  545. package/error/TypeORMError.js +1 -1
  546. package/error/TypeORMError.js.map +1 -1
  547. package/error/UpdateValuesMissingError.js +1 -1
  548. package/error/UpdateValuesMissingError.js.map +1 -1
  549. package/error/UsingJoinColumnIsNotAllowedError.js +1 -1
  550. package/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  551. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +1 -1
  552. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  553. package/error/UsingJoinTableIsNotAllowedError.js +1 -1
  554. package/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  555. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js +1 -1
  556. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  557. package/error/index.js +62 -62
  558. package/error/index.js.map +1 -1
  559. package/find-options/FindOptionsUtils.js +4 -4
  560. package/find-options/FindOptionsUtils.js.map +1 -1
  561. package/globals.js +7 -7
  562. package/globals.js.map +1 -1
  563. package/index.js +102 -102
  564. package/index.js.map +1 -1
  565. package/logger/DebugLogger.js +9 -9
  566. package/logger/DebugLogger.js.map +1 -1
  567. package/logger/FileLogger.js +1 -1
  568. package/logger/FileLogger.js.map +1 -1
  569. package/metadata/ColumnMetadata.js +4 -4
  570. package/metadata/ColumnMetadata.js.map +1 -1
  571. package/metadata/EmbeddedMetadata.js +1 -1
  572. package/metadata/EmbeddedMetadata.js.map +1 -1
  573. package/metadata/EntityMetadata.d.ts +5 -0
  574. package/metadata/EntityMetadata.js +3 -2
  575. package/metadata/EntityMetadata.js.map +1 -1
  576. package/metadata/RelationMetadata.js +4 -4
  577. package/metadata/RelationMetadata.js.map +1 -1
  578. package/metadata-args/TableMetadataArgs.d.ts +4 -0
  579. package/metadata-args/TableMetadataArgs.js.map +1 -1
  580. package/metadata-builder/EntityMetadataBuilder.js +5 -5
  581. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  582. package/metadata-builder/JunctionEntityMetadataBuilder.js +1 -1
  583. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  584. package/migration/MigrationExecutor.d.ts +1 -1
  585. package/migration/MigrationExecutor.js +39 -47
  586. package/migration/MigrationExecutor.js.map +1 -1
  587. package/naming-strategy/DefaultNamingStrategy.js +10 -10
  588. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  589. package/package.json +1 -239
  590. package/persistence/EntityPersistExecutor.js +5 -5
  591. package/persistence/EntityPersistExecutor.js.map +1 -1
  592. package/persistence/Subject.js +1 -1
  593. package/persistence/Subject.js.map +1 -1
  594. package/persistence/SubjectDatabaseEntityLoader.js +6 -6
  595. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  596. package/persistence/SubjectExecutor.js +33 -33
  597. package/persistence/SubjectExecutor.js.map +1 -1
  598. package/persistence/SubjectTopoligicalSorter.js +5 -5
  599. package/persistence/SubjectTopoligicalSorter.js.map +1 -1
  600. package/persistence/subject-builder/CascadesSubjectBuilder.js +1 -1
  601. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  602. package/persistence/subject-builder/OneToManySubjectBuilder.js +10 -4
  603. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  604. package/persistence/tree/ClosureSubjectExecutor.js +13 -13
  605. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  606. package/persistence/tree/MaterializedPathSubjectExecutor.js +5 -5
  607. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  608. package/persistence/tree/NestedSetSubjectExecutor.js +14 -14
  609. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  610. package/platform/PlatformTools.js +8 -8
  611. package/platform/PlatformTools.js.map +1 -1
  612. package/query-builder/DeleteQueryBuilder.js +7 -14
  613. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  614. package/query-builder/InsertQueryBuilder.js +9 -11
  615. package/query-builder/InsertQueryBuilder.js.map +1 -1
  616. package/query-builder/JoinAttribute.js +1 -1
  617. package/query-builder/JoinAttribute.js.map +1 -1
  618. package/query-builder/QueryBuilder.js +37 -37
  619. package/query-builder/QueryBuilder.js.map +1 -1
  620. package/query-builder/QueryBuilderUtils.js +1 -1
  621. package/query-builder/QueryBuilderUtils.js.map +1 -1
  622. package/query-builder/QueryExpressionMap.js +3 -3
  623. package/query-builder/QueryExpressionMap.js.map +1 -1
  624. package/query-builder/RelationLoader.js +2 -2
  625. package/query-builder/RelationLoader.js.map +1 -1
  626. package/query-builder/RelationQueryBuilder.js +13 -13
  627. package/query-builder/RelationQueryBuilder.js.map +1 -1
  628. package/query-builder/RelationRemover.js +12 -12
  629. package/query-builder/RelationRemover.js.map +1 -1
  630. package/query-builder/RelationUpdater.js +2 -2
  631. package/query-builder/ReturningResultsEntityUpdator.js +6 -6
  632. package/query-builder/SelectQueryBuilder.d.ts +1 -1
  633. package/query-builder/SelectQueryBuilder.js +61 -45
  634. package/query-builder/SelectQueryBuilder.js.map +1 -1
  635. package/query-builder/SoftDeleteQueryBuilder.js +7 -14
  636. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  637. package/query-builder/UpdateQueryBuilder.js +10 -17
  638. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  639. package/query-builder/relation-count/RelationCountAttribute.js +2 -2
  640. package/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  641. package/query-builder/relation-count/RelationCountLoader.js +4 -4
  642. package/query-builder/relation-id/RelationIdAttribute.js +1 -1
  643. package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  644. package/query-builder/relation-id/RelationIdLoader.js +5 -5
  645. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  646. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +3 -3
  647. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  648. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +4 -10
  649. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  650. package/query-runner/BaseQueryRunner.js +28 -27
  651. package/query-runner/BaseQueryRunner.js.map +1 -1
  652. package/query-runner/QueryLock.js +3 -3
  653. package/query-runner/QueryLock.js.map +1 -1
  654. package/repository/AbstractRepository.js +1 -1
  655. package/repository/AbstractRepository.js.map +1 -1
  656. package/repository/BaseEntity.js +4 -4
  657. package/repository/BaseEntity.js.map +1 -1
  658. package/repository/MongoRepository.js +1 -1
  659. package/repository/MongoRepository.js.map +1 -1
  660. package/repository/Repository.js +1 -1
  661. package/repository/Repository.js.map +1 -1
  662. package/repository/TreeRepository.js +7 -7
  663. package/repository/TreeRepository.js.map +1 -1
  664. package/schema-builder/MongoSchemaBuilder.js +2 -2
  665. package/schema-builder/RdbmsSchemaBuilder.js +311 -236
  666. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  667. package/schema-builder/table/Table.js +1 -1
  668. package/schema-builder/table/Table.js.map +1 -1
  669. package/schema-builder/table/TableCheck.js +1 -1
  670. package/schema-builder/table/TableCheck.js.map +1 -1
  671. package/schema-builder/table/TableForeignKey.js +2 -2
  672. package/schema-builder/table/TableForeignKey.js.map +1 -1
  673. package/schema-builder/table/TableIndex.js +1 -1
  674. package/schema-builder/table/TableIndex.js.map +1 -1
  675. package/schema-builder/table/TableUnique.js +1 -1
  676. package/schema-builder/table/TableUnique.js.map +1 -1
  677. package/schema-builder/util/ViewUtils.d.ts +7 -0
  678. package/schema-builder/util/ViewUtils.js +28 -0
  679. package/schema-builder/util/ViewUtils.js.map +1 -0
  680. package/subscriber/Broadcaster.d.ts +23 -2
  681. package/subscriber/Broadcaster.js +35 -2
  682. package/subscriber/Broadcaster.js.map +1 -1
  683. package/subscriber/BroadcasterResult.d.ts +4 -0
  684. package/subscriber/BroadcasterResult.js +19 -0
  685. package/subscriber/BroadcasterResult.js.map +1 -1
  686. package/util/DateUtils.js +1 -1
  687. package/util/DateUtils.js.map +1 -1
  688. package/util/DirectoryExportedClassesLoader.js +1 -1
  689. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  690. package/util/ObjectUtils.js +2 -2
  691. package/util/ObjectUtils.js.map +1 -1
  692. package/util/OrmUtils.js +2 -2
  693. package/util/OrmUtils.js.map +1 -1
  694. package/util/StringUtils.js +2 -2
  695. package/util/StringUtils.js.map +1 -1
@@ -17,14 +17,14 @@ var RelationIdLoader = /** @class */ (function () {
17
17
  // Public Methods
18
18
  // -------------------------------------------------------------------------
19
19
  RelationIdLoader.prototype.load = function (rawEntities) {
20
- return tslib_1.__awaiter(this, void 0, void 0, function () {
20
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
21
21
  var promises;
22
22
  var _this = this;
23
- return tslib_1.__generator(this, function (_a) {
24
- promises = this.relationIdAttributes.map(function (relationIdAttr) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
23
+ return (0, tslib_1.__generator)(this, function (_a) {
24
+ promises = this.relationIdAttributes.map(function (relationIdAttr) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
25
25
  var duplicates_1, results, relation_1, joinColumns_1, table, tableName, tableAlias_1, duplicates_2, parameters_1, condition, qb_1, results, relation, joinColumns_2, inverseJoinColumns_1, junctionAlias_1, inverseSideTableName, inverseSideTableAlias_1, junctionTableName, mappedColumns, parameters_2, duplicates_3, joinColumnConditions, inverseJoinColumnCondition_1, condition, qb_2, results;
26
26
  var _this = this;
27
- return tslib_1.__generator(this, function (_a) {
27
+ return (0, tslib_1.__generator)(this, function (_a) {
28
28
  switch (_a.label) {
29
29
  case 0:
30
30
  if (!(relationIdAttr.relation.isManyToOne || relationIdAttr.relation.isOneToOneOwner)) return [3 /*break*/, 1];
@@ -196,7 +196,7 @@ var RelationIdLoader = /** @class */ (function () {
196
196
  case 4:
197
197
  results = _a.sent();
198
198
  results.forEach(function (result) {
199
- tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(joinColumns_2)), tslib_1.__read(inverseJoinColumns_1)).forEach(function (column) {
199
+ (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(joinColumns_2), false), (0, tslib_1.__read)(inverseJoinColumns_1), false).forEach(function (column) {
200
200
  result[column.databaseName] = _this.connection.driver.prepareHydratedValue(result[column.databaseName], column.referencedColumn);
201
201
  });
202
202
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/relation-id/RelationIdLoader.ts"],"names":[],"mappings":"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","file":"RelationIdLoader.js","sourcesContent":["import {RelationIdAttribute} from \"./RelationIdAttribute\";\nimport {Connection} from \"../../connection/Connection\";\nimport {RelationIdLoadResult} from \"./RelationIdLoadResult\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\nimport {DriverUtils} from \"../../driver/DriverUtils\";\nimport { TypeORMError } from \"../../error/TypeORMError\";\n\nexport class RelationIdLoader {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection,\n protected queryRunner: QueryRunner|undefined,\n protected relationIdAttributes: RelationIdAttribute[]) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async load(rawEntities: any[]): Promise<RelationIdLoadResult[]> {\n\n const promises = this.relationIdAttributes.map(async relationIdAttr => {\n\n if (relationIdAttr.relation.isManyToOne || relationIdAttr.relation.isOneToOneOwner) {\n // example: Post and Tag\n // loadRelationIdAndMap(\"post.tagId\", \"post.tag\")\n // we expect it to load id of tag\n\n if (relationIdAttr.queryBuilderFactory)\n throw new TypeORMError(\"Additional condition can not be used with ManyToOne or OneToOne owner relations.\");\n\n const duplicates: Array<string> = [];\n const results = rawEntities.map(rawEntity => {\n const result: ObjectLiteral = {};\n const duplicateParts: Array<string> = [];\n relationIdAttr.relation.joinColumns.forEach(joinColumn => {\n result[joinColumn.databaseName] = this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils.buildAlias(this.connection.driver, relationIdAttr.parentAlias, joinColumn.databaseName)], joinColumn.referencedColumn!);\n const duplicatePart = `${joinColumn.databaseName}:${result[joinColumn.databaseName]}`;\n if (duplicateParts.indexOf(duplicatePart) === -1) {\n duplicateParts.push(duplicatePart);\n }\n });\n\n relationIdAttr.relation.entityMetadata.primaryColumns.forEach(primaryColumn => {\n result[primaryColumn.databaseName] = this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils.buildAlias(this.connection.driver, relationIdAttr.parentAlias, primaryColumn.databaseName)], primaryColumn);\n const duplicatePart = `${primaryColumn.databaseName}:${result[primaryColumn.databaseName]}`;\n if (duplicateParts.indexOf(duplicatePart) === -1) {\n duplicateParts.push(duplicatePart);\n }\n });\n\n duplicateParts.sort();\n const duplicate = duplicateParts.join(\"::\");\n if (duplicates.indexOf(duplicate) !== -1) {\n return null;\n }\n duplicates.push(duplicate);\n return result;\n }).filter(v => v);\n\n return {\n relationIdAttribute: relationIdAttr,\n results: results\n };\n\n } else if (relationIdAttr.relation.isOneToMany || relationIdAttr.relation.isOneToOneNotOwner) {\n // example: Post and Category\n // loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // we expect it to load array of category ids\n\n const relation = relationIdAttr.relation; // \"post.categories\"\n const joinColumns = relation.isOwning ? relation.joinColumns : relation.inverseRelation!.joinColumns;\n const table = relation.inverseEntityMetadata.target; // category\n const tableName = relation.inverseEntityMetadata.tableName; // category\n const tableAlias = relationIdAttr.alias || tableName; // if condition (custom query builder factory) is set then relationIdAttr.alias defined\n\n const duplicates: Array<string> = [];\n const parameters: ObjectLiteral = {};\n const condition = rawEntities.map((rawEntity, index) => {\n const duplicateParts: Array<string> = [];\n const parameterParts: ObjectLiteral = {};\n const queryPart = joinColumns.map(joinColumn => {\n const parameterName = joinColumn.databaseName + index;\n const parameterValue = rawEntity[DriverUtils.buildAlias(this.connection.driver, relationIdAttr.parentAlias, joinColumn.referencedColumn!.databaseName)];\n const duplicatePart = `${tableAlias}:${joinColumn.propertyPath}:${parameterValue}`;\n if (duplicateParts.indexOf(duplicatePart) !== -1) {\n return \"\";\n }\n duplicateParts.push(duplicatePart);\n parameterParts[parameterName] = parameterValue;\n return tableAlias + \".\" + joinColumn.propertyPath + \" = :\" + parameterName;\n }).filter(v => v).join(\" AND \");\n duplicateParts.sort();\n const duplicate = duplicateParts.join(\"::\");\n if (duplicates.indexOf(duplicate) !== -1) {\n return \"\";\n }\n duplicates.push(duplicate);\n Object.assign(parameters, parameterParts);\n return queryPart;\n }).filter(v => v).map(condition => \"(\" + condition + \")\")\n .join(\" OR \");\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (!condition)\n return { relationIdAttribute: relationIdAttr, results: [] };\n\n // generate query:\n // SELECT category.id, category.postId FROM category category ON category.postId = :postId\n const qb = this.connection.createQueryBuilder(this.queryRunner);\n\n joinColumns.forEach(joinColumn => {\n qb.addSelect(tableAlias + \".\" + joinColumn.propertyPath, joinColumn.databaseName);\n });\n\n relation.inverseRelation!.entityMetadata.primaryColumns.forEach(primaryColumn => {\n qb.addSelect(tableAlias + \".\" + primaryColumn.propertyPath, primaryColumn.databaseName);\n });\n\n qb.from(table, tableAlias)\n .where(\"(\" + condition + \")\") // need brackets because if we have additional condition and no brackets, it looks like (a = 1) OR (a = 2) AND b = 1, that is incorrect\n .setParameters(parameters);\n\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb);\n\n const results = await qb.getRawMany();\n results.forEach(result => {\n joinColumns.forEach(column => {\n result[column.databaseName] = this.connection.driver.prepareHydratedValue(result[column.databaseName], column.referencedColumn!);\n });\n relation.inverseRelation!.entityMetadata.primaryColumns.forEach(column => {\n result[column.databaseName] = this.connection.driver.prepareHydratedValue(result[column.databaseName], column);\n });\n });\n\n return {\n relationIdAttribute: relationIdAttr,\n results\n };\n\n } else {\n // many-to-many\n // example: Post and Category\n // owner side: loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // inverse side: loadRelationIdAndMap(\"category.postIds\", \"category.posts\")\n // we expect it to load array of post ids\n\n const relation = relationIdAttr.relation;\n const joinColumns = relation.isOwning ? relation.joinColumns : relation.inverseRelation!.inverseJoinColumns;\n const inverseJoinColumns = relation.isOwning ? relation.inverseJoinColumns : relation.inverseRelation!.joinColumns;\n const junctionAlias = relationIdAttr.junctionAlias;\n const inverseSideTableName = relationIdAttr.joinInverseSideMetadata.tableName;\n const inverseSideTableAlias = relationIdAttr.alias || inverseSideTableName;\n const junctionTableName = relation.isOwning ? relation.junctionEntityMetadata!.tableName : relation.inverseRelation!.junctionEntityMetadata!.tableName;\n\n\n const mappedColumns = rawEntities.map(rawEntity => {\n return joinColumns.reduce((map, joinColumn) => {\n map[joinColumn.propertyPath] = rawEntity[DriverUtils.buildAlias(this.connection.driver, relationIdAttr.parentAlias, joinColumn.referencedColumn!.databaseName)];\n return map;\n }, {} as ObjectLiteral);\n });\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (mappedColumns.length === 0)\n return { relationIdAttribute: relationIdAttr, results: [] };\n\n const parameters: ObjectLiteral = {};\n const duplicates: Array<string> = [];\n const joinColumnConditions = mappedColumns.map((mappedColumn, index) => {\n const duplicateParts: Array<string> = [];\n const parameterParts: ObjectLiteral = {};\n const queryPart = Object.keys(mappedColumn).map(key => {\n const parameterName = key + index;\n const parameterValue = mappedColumn[key];\n const duplicatePart = `${junctionAlias}:${key}:${parameterValue}`;\n if (duplicateParts.indexOf(duplicatePart) !== -1) {\n return \"\";\n }\n duplicateParts.push(duplicatePart);\n parameterParts[parameterName] = parameterValue;\n return junctionAlias + \".\" + key + \" = :\" + parameterName;\n }).filter(s => s).join(\" AND \");\n duplicateParts.sort();\n const duplicate = duplicateParts.join(\"::\");\n if (duplicates.indexOf(duplicate) !== -1) {\n return \"\";\n }\n duplicates.push(duplicate);\n Object.assign(parameters, parameterParts);\n return queryPart;\n }).filter(s => s);\n\n const inverseJoinColumnCondition = inverseJoinColumns.map(joinColumn => {\n return junctionAlias + \".\" + joinColumn.propertyPath + \" = \" + inverseSideTableAlias + \".\" + joinColumn.referencedColumn!.propertyPath;\n }).join(\" AND \");\n\n const condition = joinColumnConditions.map(condition => {\n return \"(\" + condition + \" AND \" + inverseJoinColumnCondition + \")\";\n }).join(\" OR \");\n\n const qb = this.connection.createQueryBuilder(this.queryRunner);\n\n inverseJoinColumns.forEach(joinColumn => {\n qb.addSelect(junctionAlias + \".\" + joinColumn.propertyPath, joinColumn.databaseName)\n .addOrderBy(junctionAlias + \".\" + joinColumn.propertyPath);\n });\n\n joinColumns.forEach(joinColumn => {\n qb.addSelect(junctionAlias + \".\" + joinColumn.propertyPath, joinColumn.databaseName)\n .addOrderBy(junctionAlias + \".\" + joinColumn.propertyPath);\n });\n\n qb.from(inverseSideTableName, inverseSideTableAlias)\n .innerJoin(junctionTableName, junctionAlias, condition)\n .setParameters(parameters);\n\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb);\n\n const results = await qb.getRawMany();\n results.forEach(result => {\n [...joinColumns, ...inverseJoinColumns].forEach(column => {\n result[column.databaseName] = this.connection.driver.prepareHydratedValue(result[column.databaseName], column.referencedColumn!);\n });\n });\n\n return {\n relationIdAttribute: relationIdAttr,\n results\n };\n }\n });\n\n return Promise.all(promises);\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/query-builder/relation-id/RelationIdLoader.ts"],"names":[],"mappings":"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","file":"RelationIdLoader.js","sourcesContent":["import {RelationIdAttribute} from \"./RelationIdAttribute\";\nimport {Connection} from \"../../connection/Connection\";\nimport {RelationIdLoadResult} from \"./RelationIdLoadResult\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\nimport {DriverUtils} from \"../../driver/DriverUtils\";\nimport { TypeORMError } from \"../../error/TypeORMError\";\n\nexport class RelationIdLoader {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection,\n protected queryRunner: QueryRunner|undefined,\n protected relationIdAttributes: RelationIdAttribute[]) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async load(rawEntities: any[]): Promise<RelationIdLoadResult[]> {\n\n const promises = this.relationIdAttributes.map(async relationIdAttr => {\n\n if (relationIdAttr.relation.isManyToOne || relationIdAttr.relation.isOneToOneOwner) {\n // example: Post and Tag\n // loadRelationIdAndMap(\"post.tagId\", \"post.tag\")\n // we expect it to load id of tag\n\n if (relationIdAttr.queryBuilderFactory)\n throw new TypeORMError(\"Additional condition can not be used with ManyToOne or OneToOne owner relations.\");\n\n const duplicates: Array<string> = [];\n const results = rawEntities.map(rawEntity => {\n const result: ObjectLiteral = {};\n const duplicateParts: Array<string> = [];\n relationIdAttr.relation.joinColumns.forEach(joinColumn => {\n result[joinColumn.databaseName] = this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils.buildAlias(this.connection.driver, relationIdAttr.parentAlias, joinColumn.databaseName)], joinColumn.referencedColumn!);\n const duplicatePart = `${joinColumn.databaseName}:${result[joinColumn.databaseName]}`;\n if (duplicateParts.indexOf(duplicatePart) === -1) {\n duplicateParts.push(duplicatePart);\n }\n });\n\n relationIdAttr.relation.entityMetadata.primaryColumns.forEach(primaryColumn => {\n result[primaryColumn.databaseName] = this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils.buildAlias(this.connection.driver, relationIdAttr.parentAlias, primaryColumn.databaseName)], primaryColumn);\n const duplicatePart = `${primaryColumn.databaseName}:${result[primaryColumn.databaseName]}`;\n if (duplicateParts.indexOf(duplicatePart) === -1) {\n duplicateParts.push(duplicatePart);\n }\n });\n\n duplicateParts.sort();\n const duplicate = duplicateParts.join(\"::\");\n if (duplicates.indexOf(duplicate) !== -1) {\n return null;\n }\n duplicates.push(duplicate);\n return result;\n }).filter(v => v);\n\n return {\n relationIdAttribute: relationIdAttr,\n results: results\n };\n\n } else if (relationIdAttr.relation.isOneToMany || relationIdAttr.relation.isOneToOneNotOwner) {\n // example: Post and Category\n // loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // we expect it to load array of category ids\n\n const relation = relationIdAttr.relation; // \"post.categories\"\n const joinColumns = relation.isOwning ? relation.joinColumns : relation.inverseRelation!.joinColumns;\n const table = relation.inverseEntityMetadata.target; // category\n const tableName = relation.inverseEntityMetadata.tableName; // category\n const tableAlias = relationIdAttr.alias || tableName; // if condition (custom query builder factory) is set then relationIdAttr.alias defined\n\n const duplicates: Array<string> = [];\n const parameters: ObjectLiteral = {};\n const condition = rawEntities.map((rawEntity, index) => {\n const duplicateParts: Array<string> = [];\n const parameterParts: ObjectLiteral = {};\n const queryPart = joinColumns.map(joinColumn => {\n const parameterName = joinColumn.databaseName + index;\n const parameterValue = rawEntity[DriverUtils.buildAlias(this.connection.driver, relationIdAttr.parentAlias, joinColumn.referencedColumn!.databaseName)];\n const duplicatePart = `${tableAlias}:${joinColumn.propertyPath}:${parameterValue}`;\n if (duplicateParts.indexOf(duplicatePart) !== -1) {\n return \"\";\n }\n duplicateParts.push(duplicatePart);\n parameterParts[parameterName] = parameterValue;\n return tableAlias + \".\" + joinColumn.propertyPath + \" = :\" + parameterName;\n }).filter(v => v).join(\" AND \");\n duplicateParts.sort();\n const duplicate = duplicateParts.join(\"::\");\n if (duplicates.indexOf(duplicate) !== -1) {\n return \"\";\n }\n duplicates.push(duplicate);\n Object.assign(parameters, parameterParts);\n return queryPart;\n }).filter(v => v).map(condition => \"(\" + condition + \")\")\n .join(\" OR \");\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (!condition)\n return { relationIdAttribute: relationIdAttr, results: [] };\n\n // generate query:\n // SELECT category.id, category.postId FROM category category ON category.postId = :postId\n const qb = this.connection.createQueryBuilder(this.queryRunner);\n\n joinColumns.forEach(joinColumn => {\n qb.addSelect(tableAlias + \".\" + joinColumn.propertyPath, joinColumn.databaseName);\n });\n\n relation.inverseRelation!.entityMetadata.primaryColumns.forEach(primaryColumn => {\n qb.addSelect(tableAlias + \".\" + primaryColumn.propertyPath, primaryColumn.databaseName);\n });\n\n qb.from(table, tableAlias)\n .where(\"(\" + condition + \")\") // need brackets because if we have additional condition and no brackets, it looks like (a = 1) OR (a = 2) AND b = 1, that is incorrect\n .setParameters(parameters);\n\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb);\n\n const results = await qb.getRawMany();\n results.forEach(result => {\n joinColumns.forEach(column => {\n result[column.databaseName] = this.connection.driver.prepareHydratedValue(result[column.databaseName], column.referencedColumn!);\n });\n relation.inverseRelation!.entityMetadata.primaryColumns.forEach(column => {\n result[column.databaseName] = this.connection.driver.prepareHydratedValue(result[column.databaseName], column);\n });\n });\n\n return {\n relationIdAttribute: relationIdAttr,\n results\n };\n\n } else {\n // many-to-many\n // example: Post and Category\n // owner side: loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // inverse side: loadRelationIdAndMap(\"category.postIds\", \"category.posts\")\n // we expect it to load array of post ids\n\n const relation = relationIdAttr.relation;\n const joinColumns = relation.isOwning ? relation.joinColumns : relation.inverseRelation!.inverseJoinColumns;\n const inverseJoinColumns = relation.isOwning ? relation.inverseJoinColumns : relation.inverseRelation!.joinColumns;\n const junctionAlias = relationIdAttr.junctionAlias;\n const inverseSideTableName = relationIdAttr.joinInverseSideMetadata.tableName;\n const inverseSideTableAlias = relationIdAttr.alias || inverseSideTableName;\n const junctionTableName = relation.isOwning ? relation.junctionEntityMetadata!.tableName : relation.inverseRelation!.junctionEntityMetadata!.tableName;\n\n\n const mappedColumns = rawEntities.map(rawEntity => {\n return joinColumns.reduce((map, joinColumn) => {\n map[joinColumn.propertyPath] = rawEntity[DriverUtils.buildAlias(this.connection.driver, relationIdAttr.parentAlias, joinColumn.referencedColumn!.databaseName)];\n return map;\n }, {} as ObjectLiteral);\n });\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (mappedColumns.length === 0)\n return { relationIdAttribute: relationIdAttr, results: [] };\n\n const parameters: ObjectLiteral = {};\n const duplicates: Array<string> = [];\n const joinColumnConditions = mappedColumns.map((mappedColumn, index) => {\n const duplicateParts: Array<string> = [];\n const parameterParts: ObjectLiteral = {};\n const queryPart = Object.keys(mappedColumn).map(key => {\n const parameterName = key + index;\n const parameterValue = mappedColumn[key];\n const duplicatePart = `${junctionAlias}:${key}:${parameterValue}`;\n if (duplicateParts.indexOf(duplicatePart) !== -1) {\n return \"\";\n }\n duplicateParts.push(duplicatePart);\n parameterParts[parameterName] = parameterValue;\n return junctionAlias + \".\" + key + \" = :\" + parameterName;\n }).filter(s => s).join(\" AND \");\n duplicateParts.sort();\n const duplicate = duplicateParts.join(\"::\");\n if (duplicates.indexOf(duplicate) !== -1) {\n return \"\";\n }\n duplicates.push(duplicate);\n Object.assign(parameters, parameterParts);\n return queryPart;\n }).filter(s => s);\n\n const inverseJoinColumnCondition = inverseJoinColumns.map(joinColumn => {\n return junctionAlias + \".\" + joinColumn.propertyPath + \" = \" + inverseSideTableAlias + \".\" + joinColumn.referencedColumn!.propertyPath;\n }).join(\" AND \");\n\n const condition = joinColumnConditions.map(condition => {\n return \"(\" + condition + \" AND \" + inverseJoinColumnCondition + \")\";\n }).join(\" OR \");\n\n const qb = this.connection.createQueryBuilder(this.queryRunner);\n\n inverseJoinColumns.forEach(joinColumn => {\n qb.addSelect(junctionAlias + \".\" + joinColumn.propertyPath, joinColumn.databaseName)\n .addOrderBy(junctionAlias + \".\" + joinColumn.propertyPath);\n });\n\n joinColumns.forEach(joinColumn => {\n qb.addSelect(junctionAlias + \".\" + joinColumn.propertyPath, joinColumn.databaseName)\n .addOrderBy(junctionAlias + \".\" + joinColumn.propertyPath);\n });\n\n qb.from(inverseSideTableName, inverseSideTableAlias)\n .innerJoin(junctionTableName, junctionAlias, condition)\n .setParameters(parameters);\n\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb);\n\n const results = await qb.getRawMany();\n results.forEach(result => {\n [...joinColumns, ...inverseJoinColumns].forEach(column => {\n result[column.databaseName] = this.connection.driver.prepareHydratedValue(result[column.databaseName], column.referencedColumn!);\n });\n });\n\n return {\n relationIdAttribute: relationIdAttr,\n results\n };\n }\n });\n\n return Promise.all(promises);\n }\n}\n"],"sourceRoot":"../.."}
@@ -79,10 +79,10 @@ var PlainObjectToDatabaseEntityTransformer = /** @class */ (function () {
79
79
  // Public Methods
80
80
  // -------------------------------------------------------------------------
81
81
  PlainObjectToDatabaseEntityTransformer.prototype.transform = function (plainObject, metadata) {
82
- return tslib_1.__awaiter(this, void 0, void 0, function () {
82
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
83
83
  var loadMap, fillLoadMap;
84
84
  var _this = this;
85
- return tslib_1.__generator(this, function (_a) {
85
+ return (0, tslib_1.__generator)(this, function (_a) {
86
86
  switch (_a.label) {
87
87
  case 0:
88
88
  // if plain object does not have id then nothing to load really
@@ -96,7 +96,7 @@ var PlainObjectToDatabaseEntityTransformer = /** @class */ (function () {
96
96
  .extractRelationValuesFromEntity(entity, metadata.relations)
97
97
  .filter(function (value) { return value !== null && value !== undefined; })
98
98
  .forEach(function (_a) {
99
- var _b = tslib_1.__read(_a, 3), relation = _b[0], value = _b[1], inverseEntityMetadata = _b[2];
99
+ var _b = (0, tslib_1.__read)(_a, 3), relation = _b[0], value = _b[1], inverseEntityMetadata = _b[2];
100
100
  return fillLoadMap(value, inverseEntityMetadata, item, relation);
101
101
  });
102
102
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.ts"],"names":[],"mappings":"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","file":"PlainObjectToDatabaseEntityTransformer.js","sourcesContent":["import {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {EntityManager} from \"../../entity-manager/EntityManager\";\nimport {RelationMetadata} from \"../../metadata/RelationMetadata\";\n\n/**\n */\nclass LoadMapItem {\n\n entity?: ObjectLiteral;\n plainEntity: ObjectLiteral;\n metadata: EntityMetadata;\n parentLoadMapItem?: LoadMapItem;\n relation?: RelationMetadata;\n\n constructor(plainEntity: ObjectLiteral,\n metadata: EntityMetadata,\n parentLoadMapItem?: LoadMapItem,\n relation?: RelationMetadata) {\n this.plainEntity = plainEntity;\n this.metadata = metadata;\n this.parentLoadMapItem = parentLoadMapItem;\n this.relation = relation;\n }\n\n get target(): Function|string {\n return this.metadata.target;\n }\n\n get id(): any {\n return this.metadata.getEntityIdMixedMap(this.plainEntity);\n }\n\n}\n\nclass LoadMap {\n\n loadMapItems: LoadMapItem[] = [];\n\n get mainLoadMapItem(): LoadMapItem|undefined {\n return this.loadMapItems.find(item => !item.relation && !item.parentLoadMapItem);\n }\n\n addLoadMap(newLoadMap: LoadMapItem) {\n const item = this.loadMapItems.find(item => item.target === newLoadMap.target && item.id === newLoadMap.id);\n if (!item)\n this.loadMapItems.push(newLoadMap);\n }\n\n fillEntities(target: Function|string, entities: any[]) {\n entities.forEach(entity => {\n const item = this.loadMapItems.find(loadMapItem => {\n return loadMapItem.target === target && loadMapItem.metadata.compareEntities(entity, loadMapItem.plainEntity);\n });\n if (item)\n item.entity = entity;\n });\n }\n\n groupByTargetIds(): { target: Function|string, ids: any[] }[] {\n const groups: { target: Function|string, ids: any[] }[] = [];\n this.loadMapItems.forEach(loadMapItem => {\n let group = groups.find(group => group.target === loadMapItem.target);\n if (!group) {\n group = { target: loadMapItem.target, ids: [] };\n groups.push(group);\n }\n\n group.ids.push(loadMapItem.id);\n });\n return groups;\n }\n\n}\n\n/**\n * Transforms plain old javascript object\n * Entity is constructed based on its entity metadata.\n */\nexport class PlainObjectToDatabaseEntityTransformer {\n\n constructor(private manager: EntityManager) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async transform(plainObject: ObjectLiteral, metadata: EntityMetadata): Promise<ObjectLiteral|undefined> {\n\n // if plain object does not have id then nothing to load really\n if (!metadata.hasAllPrimaryKeys(plainObject))\n return Promise.reject(\"Given object does not have a primary column, cannot transform it to database entity.\");\n\n // create a special load map that will hold all metadata that will be used to operate with entities easily\n const loadMap = new LoadMap();\n const fillLoadMap = (entity: ObjectLiteral, entityMetadata: EntityMetadata, parentLoadMapItem?: LoadMapItem, relation?: RelationMetadata) => {\n const item = new LoadMapItem(entity, entityMetadata, parentLoadMapItem, relation);\n loadMap.addLoadMap(item);\n\n entityMetadata\n .extractRelationValuesFromEntity(entity, metadata.relations)\n .filter(value => value !== null && value !== undefined)\n .forEach(([relation, value, inverseEntityMetadata]) => fillLoadMap(value, inverseEntityMetadata, item, relation));\n };\n fillLoadMap(plainObject, metadata);\n // load all entities and store them in the load map\n await Promise.all(loadMap.groupByTargetIds().map(targetWithIds => { // todo: fix type hinting\n return this.manager\n .findByIds<ObjectLiteral>(targetWithIds.target as any, targetWithIds.ids)\n .then(entities => loadMap.fillEntities(targetWithIds.target, entities));\n }));\n\n // go through each item in the load map and set their entity relationship using metadata stored in load map\n loadMap.loadMapItems.forEach(loadMapItem => {\n if (!loadMapItem.relation ||\n !loadMapItem.entity ||\n !loadMapItem.parentLoadMapItem ||\n !loadMapItem.parentLoadMapItem.entity)\n return;\n\n if (loadMapItem.relation.isManyToMany || loadMapItem.relation.isOneToMany) {\n if (!loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName])\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName] = [];\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName].push(loadMapItem.entity);\n\n } else {\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName] = loadMapItem.entity;\n }\n });\n\n return loadMap.mainLoadMapItem ? loadMap.mainLoadMapItem.entity : undefined;\n }\n\n}"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.ts"],"names":[],"mappings":"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","file":"PlainObjectToDatabaseEntityTransformer.js","sourcesContent":["import {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {EntityManager} from \"../../entity-manager/EntityManager\";\nimport {RelationMetadata} from \"../../metadata/RelationMetadata\";\n\n/**\n */\nclass LoadMapItem {\n\n entity?: ObjectLiteral;\n plainEntity: ObjectLiteral;\n metadata: EntityMetadata;\n parentLoadMapItem?: LoadMapItem;\n relation?: RelationMetadata;\n\n constructor(plainEntity: ObjectLiteral,\n metadata: EntityMetadata,\n parentLoadMapItem?: LoadMapItem,\n relation?: RelationMetadata) {\n this.plainEntity = plainEntity;\n this.metadata = metadata;\n this.parentLoadMapItem = parentLoadMapItem;\n this.relation = relation;\n }\n\n get target(): Function|string {\n return this.metadata.target;\n }\n\n get id(): any {\n return this.metadata.getEntityIdMixedMap(this.plainEntity);\n }\n\n}\n\nclass LoadMap {\n\n loadMapItems: LoadMapItem[] = [];\n\n get mainLoadMapItem(): LoadMapItem|undefined {\n return this.loadMapItems.find(item => !item.relation && !item.parentLoadMapItem);\n }\n\n addLoadMap(newLoadMap: LoadMapItem) {\n const item = this.loadMapItems.find(item => item.target === newLoadMap.target && item.id === newLoadMap.id);\n if (!item)\n this.loadMapItems.push(newLoadMap);\n }\n\n fillEntities(target: Function|string, entities: any[]) {\n entities.forEach(entity => {\n const item = this.loadMapItems.find(loadMapItem => {\n return loadMapItem.target === target && loadMapItem.metadata.compareEntities(entity, loadMapItem.plainEntity);\n });\n if (item)\n item.entity = entity;\n });\n }\n\n groupByTargetIds(): { target: Function|string, ids: any[] }[] {\n const groups: { target: Function|string, ids: any[] }[] = [];\n this.loadMapItems.forEach(loadMapItem => {\n let group = groups.find(group => group.target === loadMapItem.target);\n if (!group) {\n group = { target: loadMapItem.target, ids: [] };\n groups.push(group);\n }\n\n group.ids.push(loadMapItem.id);\n });\n return groups;\n }\n\n}\n\n/**\n * Transforms plain old javascript object\n * Entity is constructed based on its entity metadata.\n */\nexport class PlainObjectToDatabaseEntityTransformer {\n\n constructor(private manager: EntityManager) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async transform(plainObject: ObjectLiteral, metadata: EntityMetadata): Promise<ObjectLiteral|undefined> {\n\n // if plain object does not have id then nothing to load really\n if (!metadata.hasAllPrimaryKeys(plainObject))\n return Promise.reject(\"Given object does not have a primary column, cannot transform it to database entity.\");\n\n // create a special load map that will hold all metadata that will be used to operate with entities easily\n const loadMap = new LoadMap();\n const fillLoadMap = (entity: ObjectLiteral, entityMetadata: EntityMetadata, parentLoadMapItem?: LoadMapItem, relation?: RelationMetadata) => {\n const item = new LoadMapItem(entity, entityMetadata, parentLoadMapItem, relation);\n loadMap.addLoadMap(item);\n\n entityMetadata\n .extractRelationValuesFromEntity(entity, metadata.relations)\n .filter(value => value !== null && value !== undefined)\n .forEach(([relation, value, inverseEntityMetadata]) => fillLoadMap(value, inverseEntityMetadata, item, relation));\n };\n fillLoadMap(plainObject, metadata);\n // load all entities and store them in the load map\n await Promise.all(loadMap.groupByTargetIds().map(targetWithIds => { // todo: fix type hinting\n return this.manager\n .findByIds<ObjectLiteral>(targetWithIds.target as any, targetWithIds.ids)\n .then(entities => loadMap.fillEntities(targetWithIds.target, entities));\n }));\n\n // go through each item in the load map and set their entity relationship using metadata stored in load map\n loadMap.loadMapItems.forEach(loadMapItem => {\n if (!loadMapItem.relation ||\n !loadMapItem.entity ||\n !loadMapItem.parentLoadMapItem ||\n !loadMapItem.parentLoadMapItem.entity)\n return;\n\n if (loadMapItem.relation.isManyToMany || loadMapItem.relation.isOneToMany) {\n if (!loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName])\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName] = [];\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName].push(loadMapItem.entity);\n\n } else {\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName] = loadMapItem.entity;\n }\n });\n\n return loadMap.mainLoadMapItem ? loadMap.mainLoadMapItem.entity : undefined;\n }\n\n}"],"sourceRoot":"../.."}
@@ -48,10 +48,10 @@ var RawSqlResultsToEntityTransformer = /** @class */ (function () {
48
48
  var map = new Map();
49
49
  var keys = [];
50
50
  if (alias.metadata.tableType === "view") {
51
- keys.push.apply(keys, tslib_1.__spreadArray([], tslib_1.__read(alias.metadata.columns.map(function (column) { return DriverUtils_1.DriverUtils.buildAlias(_this.driver, alias.name, column.databaseName); }))));
51
+ keys.push.apply(keys, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(alias.metadata.columns.map(function (column) { return DriverUtils_1.DriverUtils.buildAlias(_this.driver, alias.name, column.databaseName); })), false));
52
52
  }
53
53
  else {
54
- keys.push.apply(keys, tslib_1.__spreadArray([], tslib_1.__read(alias.metadata.primaryColumns.map(function (column) { return DriverUtils_1.DriverUtils.buildAlias(_this.driver, alias.name, column.databaseName); }))));
54
+ keys.push.apply(keys, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(alias.metadata.primaryColumns.map(function (column) { return DriverUtils_1.DriverUtils.buildAlias(_this.driver, alias.name, column.databaseName); })), false));
55
55
  }
56
56
  rawResults.forEach(function (rawResult) {
57
57
  var id = keys.map(function (key) {
@@ -146,14 +146,8 @@ var RawSqlResultsToEntityTransformer = /** @class */ (function () {
146
146
  return;
147
147
  // this check need to avoid setting properties than not belong to entity when single table inheritance used. (todo: check if we still need it)
148
148
  // const metadata = metadata.childEntityMetadatas.find(childEntityMetadata => discriminatorValue === childEntityMetadata.discriminatorValue);
149
- if (join.relation) {
150
- var relation = metadata.relations.find(function (relation) { return relation.propertyPath === join.relation.propertyPath; });
151
- if (!relation)
152
- return;
153
- // Use current entity's type metadata, join might be from an STI parent with a different type
154
- if (relation.inverseEntityMetadata)
155
- join.alias.metadata = relation.inverseEntityMetadata;
156
- }
149
+ if (join.relation && !metadata.relations.find(function (relation) { return relation === join.relation; }))
150
+ return;
157
151
  // some checks to make sure this join is for current alias
158
152
  if (join.mapToProperty) {
159
153
  if (join.mapToPropertyParentAlias !== alias.name)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/transformer/RawSqlResultsToEntityTransformer.ts"],"names":[],"mappings":"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","file":"RawSqlResultsToEntityTransformer.js","sourcesContent":["import {Driver} from \"../../driver/Driver\";\nimport {RelationIdLoadResult} from \"../relation-id/RelationIdLoadResult\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {ColumnMetadata} from \"../../metadata/ColumnMetadata\";\nimport {Alias} from \"../Alias\";\nimport {RelationCountLoadResult} from \"../relation-count/RelationCountLoadResult\";\nimport {RelationMetadata} from \"../../metadata/RelationMetadata\";\nimport {OrmUtils} from \"../../util/OrmUtils\";\nimport {QueryExpressionMap} from \"../QueryExpressionMap\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {QueryRunner} from \"../..\";\nimport {DriverUtils} from \"../../driver/DriverUtils\";\n\n/**\n * Transforms raw sql results returned from the database into entity object.\n * Entity is constructed based on its entity metadata.\n */\nexport class RawSqlResultsToEntityTransformer {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected expressionMap: QueryExpressionMap,\n protected driver: Driver,\n protected rawRelationIdResults: RelationIdLoadResult[],\n protected rawRelationCountResults: RelationCountLoadResult[],\n protected queryRunner?: QueryRunner) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated\n * we need to group our result and we must have some unique id (primary key in our case)\n */\n transform(rawResults: any[], alias: Alias): any[] {\n const group = this.group(rawResults, alias);\n const entities: any[] = [];\n group.forEach(results => {\n const entity = this.transformRawResultsGroup(results, alias);\n if (entity !== undefined && !Object.values(entity).every((value) => value === null))\n entities.push(entity);\n });\n return entities;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Groups given raw results by ids of given alias.\n */\n protected group(rawResults: any[], alias: Alias): Map<string, any[]> {\n const map = new Map();\n const keys: string[] = [];\n if (alias.metadata.tableType === \"view\") {\n keys.push(...alias.metadata.columns.map(column => DriverUtils.buildAlias(this.driver, alias.name, column.databaseName)));\n } else {\n keys.push(...alias.metadata.primaryColumns.map(column => DriverUtils.buildAlias(this.driver, alias.name, column.databaseName)));\n }\n rawResults.forEach(rawResult => {\n const id = keys.map(key => {\n const keyValue = rawResult[key];\n\n if (Buffer.isBuffer(keyValue)) {\n return keyValue.toString(\"hex\");\n }\n\n if (typeof keyValue === \"object\") {\n return JSON.stringify(keyValue);\n }\n\n return keyValue;\n }).join(\"_\"); // todo: check partial\n\n const items = map.get(id);\n if (!items) {\n map.set(id, [rawResult]);\n } else {\n items.push(rawResult);\n }\n });\n return map;\n }\n\n /**\n * Transforms set of data results into single entity.\n */\n protected transformRawResultsGroup(rawResults: any[], alias: Alias): ObjectLiteral|undefined {\n // let hasColumns = false; // , hasEmbeddedColumns = false, hasParentColumns = false, hasParentEmbeddedColumns = false;\n let metadata = alias.metadata;\n\n if (metadata.discriminatorColumn) {\n const discriminatorValues = rawResults.map(result => result[DriverUtils.buildAlias(this.driver, alias.name, alias.metadata.discriminatorColumn!.databaseName)]);\n const discriminatorMetadata = metadata.childEntityMetadatas.find(childEntityMetadata => {\n return typeof discriminatorValues.find(value => value === childEntityMetadata.discriminatorValue) !== 'undefined';\n });\n if (discriminatorMetadata)\n metadata = discriminatorMetadata;\n }\n let entity: any = this.expressionMap.options.indexOf(\"create-pojo\") !== -1 ? {} : metadata.create(this.queryRunner, { fromDeserializer: true });\n\n // get value from columns selections and put them into newly created entity\n const hasColumns = this.transformColumns(rawResults, alias, entity, metadata);\n const hasRelations = this.transformJoins(rawResults, entity, alias, metadata);\n const hasRelationIds = this.transformRelationIds(rawResults, alias, entity, metadata);\n const hasRelationCounts = this.transformRelationCounts(rawResults, alias, entity);\n\n // if we have at least one selected column then return this entity\n // since entity must have at least primary columns to be really selected and transformed into entity\n if (hasColumns)\n return entity;\n\n // if we don't have any selected column we should not return entity,\n // except for the case when entity only contain a primary column as a relation to another entity\n // in this case its absolutely possible our entity to not have any columns except a single relation\n const hasOnlyVirtualPrimaryColumns = metadata.primaryColumns.filter(column => column.isVirtual === false).length === 0; // todo: create metadata.hasOnlyVirtualPrimaryColumns\n if (hasOnlyVirtualPrimaryColumns && (hasRelations || hasRelationIds || hasRelationCounts))\n return entity;\n\n return undefined;\n }\n\n // get value from columns selections and put them into object\n protected transformColumns(rawResults: any[], alias: Alias, entity: ObjectLiteral, metadata: EntityMetadata): boolean {\n let hasData = false;\n metadata.columns.forEach(column => {\n\n // if table inheritance is used make sure this column is not child's column\n if (metadata.childEntityMetadatas.length > 0 && metadata.childEntityMetadatas.map(metadata => metadata.target).indexOf(column.target) !== -1)\n return;\n\n const value = rawResults[0][DriverUtils.buildAlias(this.driver, alias.name, column.databaseName)];\n if (value === undefined || column.isVirtual)\n return;\n\n // if user does not selected the whole entity or he used partial selection and does not select this particular column\n // then we don't add this column and its value into the entity\n if (!this.expressionMap.selects.find(select => select.selection === alias.name || select.selection === alias.name + \".\" + column.propertyPath))\n return;\n\n column.setEntityValue(entity, this.driver.prepareHydratedValue(value, column));\n if (value !== null) // we don't mark it as has data because if we will have all nulls in our object - we don't need such object\n hasData = true;\n });\n return hasData;\n }\n\n /**\n * Transforms joined entities in the given raw results by a given alias and stores to the given (parent) entity\n */\n protected transformJoins(rawResults: any[], entity: ObjectLiteral, alias: Alias, metadata: EntityMetadata) {\n let hasData = false;\n\n // let discriminatorValue: string = \"\";\n // if (metadata.discriminatorColumn)\n // discriminatorValue = rawResults[0][DriverUtils.buildAlias(this.connection.driver, alias.name, alias.metadata.discriminatorColumn!.databaseName)];\n\n this.expressionMap.joinAttributes.forEach(join => { // todo: we have problem here - when inner joins are used without selects it still create empty array\n\n // skip joins without metadata\n if (!join.metadata)\n return;\n\n // if simple left or inner join was performed without selection then we don't need to do anything\n if (!join.isSelected)\n return;\n\n // this check need to avoid setting properties than not belong to entity when single table inheritance used. (todo: check if we still need it)\n // const metadata = metadata.childEntityMetadatas.find(childEntityMetadata => discriminatorValue === childEntityMetadata.discriminatorValue);\n if (join.relation) {\n const relation = metadata.relations.find(relation => relation.propertyPath === join.relation!.propertyPath);\n if (!relation)\n return;\n\n // Use current entity's type metadata, join might be from an STI parent with a different type\n if (relation.inverseEntityMetadata)\n join.alias.metadata = relation.inverseEntityMetadata;\n }\n\n // some checks to make sure this join is for current alias\n if (join.mapToProperty) {\n if (join.mapToPropertyParentAlias !== alias.name)\n return;\n } else {\n if (!join.relation || join.parentAlias !== alias.name || join.relationPropertyPath !== join.relation!.propertyPath)\n return;\n }\n\n // transform joined data into entities\n let result: any = this.transform(rawResults, join.alias);\n result = !join.isMany ? result[0] : result;\n result = !join.isMany && result === undefined ? null : result; // this is needed to make relations to return null when its joined but nothing was found in the database\n if (result === undefined) // if nothing was joined then simply return\n return;\n\n // if join was mapped to some property then save result to that property\n if (join.mapToPropertyPropertyName) {\n entity[join.mapToPropertyPropertyName] = result; // todo: fix embeds\n\n } else { // otherwise set to relation\n join.relation!.setEntityValue(entity, result);\n }\n\n hasData = true;\n });\n return hasData;\n }\n\n protected transformRelationIds(rawSqlResults: any[], alias: Alias, entity: ObjectLiteral, metadata: EntityMetadata): boolean {\n let hasData = false;\n this.rawRelationIdResults.forEach(rawRelationIdResult => {\n if (rawRelationIdResult.relationIdAttribute.parentAlias !== alias.name)\n return;\n\n const relation = rawRelationIdResult.relationIdAttribute.relation;\n const valueMap = this.createValueMapFromJoinColumns(relation, rawRelationIdResult.relationIdAttribute.parentAlias, rawSqlResults);\n if (valueMap === undefined || valueMap === null)\n return;\n\n const idMaps = rawRelationIdResult.results.map(result => {\n const entityPrimaryIds = this.extractEntityPrimaryIds(relation, result);\n if (OrmUtils.compareIds(entityPrimaryIds, valueMap) === false)\n return;\n\n let columns: ColumnMetadata[];\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.joinColumns.map(joinColumn => joinColumn);\n } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseEntityMetadata.primaryColumns.map(joinColumn => joinColumn);\n // columns = relation.inverseRelation!.joinColumns.map(joinColumn => joinColumn.referencedColumn!); //.inverseEntityMetadata.primaryColumns.map(joinColumn => joinColumn);\n } else { // ManyToMany\n if (relation.isOwning) {\n columns = relation.inverseJoinColumns.map(joinColumn => joinColumn);\n } else {\n columns = relation.inverseRelation!.joinColumns.map(joinColumn => joinColumn);\n }\n }\n\n const idMap = columns.reduce((idMap, column) => {\n let value = result[column.databaseName];\n if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n if (column.isVirtual && column.referencedColumn && column.referencedColumn.propertyName !== column.propertyName) // if column is a relation\n value = column.referencedColumn.createValueMap(value);\n\n return OrmUtils.mergeDeep(idMap, column.createValueMap(value));\n } else {\n if (column.referencedColumn!.referencedColumn) // if column is a relation\n value = column.referencedColumn!.referencedColumn!.createValueMap(value);\n\n return OrmUtils.mergeDeep(idMap, column.referencedColumn!.createValueMap(value));\n }\n }, {} as ObjectLiteral);\n\n if (columns.length === 1 && rawRelationIdResult.relationIdAttribute.disableMixedMap === false) {\n if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n return columns[0].getEntityValue(idMap);\n } else {\n return columns[0].referencedColumn!.getEntityValue(idMap);\n }\n }\n return idMap;\n }).filter(result => result !== undefined);\n\n const properties = rawRelationIdResult.relationIdAttribute.mapToPropertyPropertyPath.split(\".\");\n const mapToProperty = (properties: string[], map: ObjectLiteral, value: any): any => {\n\n const property = properties.shift();\n if (property && properties.length === 0) {\n map[property] = value;\n return map;\n } else if (property && properties.length > 0) {\n mapToProperty(properties, map[property], value);\n } else {\n return map;\n }\n };\n if (relation.isOneToOne || relation.isManyToOne) {\n if (idMaps[0] !== undefined) {\n mapToProperty(properties, entity, idMaps[0]);\n hasData = true;\n }\n } else {\n mapToProperty(properties, entity, idMaps);\n if (idMaps.length > 0) {\n hasData = true;\n }\n }\n });\n\n return hasData;\n }\n\n protected transformRelationCounts(rawSqlResults: any[], alias: Alias, entity: ObjectLiteral): boolean {\n let hasData = false;\n this.rawRelationCountResults\n .filter(rawRelationCountResult => rawRelationCountResult.relationCountAttribute.parentAlias === alias.name)\n .forEach(rawRelationCountResult => {\n const relation = rawRelationCountResult.relationCountAttribute.relation;\n let referenceColumnName: string;\n\n if (relation.isOneToMany) {\n referenceColumnName = relation.inverseRelation!.joinColumns[0].referencedColumn!.databaseName; // todo: fix joinColumns[0]\n\n } else {\n referenceColumnName = relation.isOwning ? relation.joinColumns[0].referencedColumn!.databaseName : relation.inverseRelation!.joinColumns[0].referencedColumn!.databaseName;\n }\n\n const referenceColumnValue = rawSqlResults[0][DriverUtils.buildAlias(this.driver, alias.name, referenceColumnName)]; // we use zero index since its grouped data // todo: selection with alias for entity columns wont work\n if (referenceColumnValue !== undefined && referenceColumnValue !== null) {\n entity[rawRelationCountResult.relationCountAttribute.mapToPropertyPropertyName] = 0;\n rawRelationCountResult.results\n .filter(result => result[\"parentId\"] === referenceColumnValue)\n .forEach(result => {\n entity[rawRelationCountResult.relationCountAttribute.mapToPropertyPropertyName] = parseInt(result[\"cnt\"]);\n hasData = true;\n });\n }\n });\n\n return hasData;\n }\n\n private createValueMapFromJoinColumns(relation: RelationMetadata, parentAlias: string, rawSqlResults: any[]): ObjectLiteral {\n let columns: ColumnMetadata[];\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.entityMetadata.primaryColumns.map(joinColumn => joinColumn);\n } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseRelation!.joinColumns.map(joinColumn => joinColumn);\n } else {\n if (relation.isOwning) {\n columns = relation.joinColumns.map(joinColumn => joinColumn);\n } else {\n columns = relation.inverseRelation!.inverseJoinColumns.map(joinColumn => joinColumn);\n }\n }\n return columns.reduce((valueMap, column) => {\n rawSqlResults.forEach(rawSqlResult => {\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n valueMap[column.databaseName] = this.driver.prepareHydratedValue(rawSqlResult[DriverUtils.buildAlias(this.driver, parentAlias, column.databaseName)], column);\n } else {\n valueMap[column.databaseName] = this.driver.prepareHydratedValue(rawSqlResult[DriverUtils.buildAlias(this.driver, parentAlias, column.referencedColumn!.databaseName)], column);\n }\n });\n return valueMap;\n }, {} as ObjectLiteral);\n\n }\n\n private extractEntityPrimaryIds(relation: RelationMetadata, relationIdRawResult: any) {\n let columns: ColumnMetadata[];\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.entityMetadata.primaryColumns.map(joinColumn => joinColumn);\n } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseRelation!.joinColumns.map(joinColumn => joinColumn);\n } else {\n if (relation.isOwning) {\n columns = relation.joinColumns.map(joinColumn => joinColumn);\n } else {\n columns = relation.inverseRelation!.inverseJoinColumns.map(joinColumn => joinColumn);\n }\n }\n return columns.reduce((data, column) => {\n data[column.databaseName] = relationIdRawResult[column.databaseName];\n return data;\n }, {} as ObjectLiteral);\n }\n\n /*private removeVirtualColumns(entity: ObjectLiteral, alias: Alias) {\n const virtualColumns = this.expressionMap.selects\n .filter(select => select.virtual)\n .map(select => select.selection.replace(alias.name + \".\", \"\"));\n\n virtualColumns.forEach(virtualColumn => delete entity[virtualColumn]);\n }*/\n\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/query-builder/transformer/RawSqlResultsToEntityTransformer.ts"],"names":[],"mappings":"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","file":"RawSqlResultsToEntityTransformer.js","sourcesContent":["import {Driver} from \"../../driver/Driver\";\nimport {RelationIdLoadResult} from \"../relation-id/RelationIdLoadResult\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {ColumnMetadata} from \"../../metadata/ColumnMetadata\";\nimport {Alias} from \"../Alias\";\nimport {RelationCountLoadResult} from \"../relation-count/RelationCountLoadResult\";\nimport {RelationMetadata} from \"../../metadata/RelationMetadata\";\nimport {OrmUtils} from \"../../util/OrmUtils\";\nimport {QueryExpressionMap} from \"../QueryExpressionMap\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {QueryRunner} from \"../..\";\nimport {DriverUtils} from \"../../driver/DriverUtils\";\n\n/**\n * Transforms raw sql results returned from the database into entity object.\n * Entity is constructed based on its entity metadata.\n */\nexport class RawSqlResultsToEntityTransformer {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected expressionMap: QueryExpressionMap,\n protected driver: Driver,\n protected rawRelationIdResults: RelationIdLoadResult[],\n protected rawRelationCountResults: RelationCountLoadResult[],\n protected queryRunner?: QueryRunner) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated\n * we need to group our result and we must have some unique id (primary key in our case)\n */\n transform(rawResults: any[], alias: Alias): any[] {\n const group = this.group(rawResults, alias);\n const entities: any[] = [];\n group.forEach(results => {\n const entity = this.transformRawResultsGroup(results, alias);\n if (entity !== undefined && !Object.values(entity).every((value) => value === null))\n entities.push(entity);\n });\n return entities;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Groups given raw results by ids of given alias.\n */\n protected group(rawResults: any[], alias: Alias): Map<string, any[]> {\n const map = new Map();\n const keys: string[] = [];\n if (alias.metadata.tableType === \"view\") {\n keys.push(...alias.metadata.columns.map(column => DriverUtils.buildAlias(this.driver, alias.name, column.databaseName)));\n } else {\n keys.push(...alias.metadata.primaryColumns.map(column => DriverUtils.buildAlias(this.driver, alias.name, column.databaseName)));\n }\n rawResults.forEach(rawResult => {\n const id = keys.map(key => {\n const keyValue = rawResult[key];\n\n if (Buffer.isBuffer(keyValue)) {\n return keyValue.toString(\"hex\");\n }\n\n if (typeof keyValue === \"object\") {\n return JSON.stringify(keyValue);\n }\n\n return keyValue;\n }).join(\"_\"); // todo: check partial\n\n const items = map.get(id);\n if (!items) {\n map.set(id, [rawResult]);\n } else {\n items.push(rawResult);\n }\n });\n return map;\n }\n\n /**\n * Transforms set of data results into single entity.\n */\n protected transformRawResultsGroup(rawResults: any[], alias: Alias): ObjectLiteral|undefined {\n // let hasColumns = false; // , hasEmbeddedColumns = false, hasParentColumns = false, hasParentEmbeddedColumns = false;\n let metadata = alias.metadata;\n\n if (metadata.discriminatorColumn) {\n const discriminatorValues = rawResults.map(result => result[DriverUtils.buildAlias(this.driver, alias.name, alias.metadata.discriminatorColumn!.databaseName)]);\n const discriminatorMetadata = metadata.childEntityMetadatas.find(childEntityMetadata => {\n return typeof discriminatorValues.find(value => value === childEntityMetadata.discriminatorValue) !== 'undefined';\n });\n if (discriminatorMetadata)\n metadata = discriminatorMetadata;\n }\n let entity: any = this.expressionMap.options.indexOf(\"create-pojo\") !== -1 ? {} : metadata.create(this.queryRunner, { fromDeserializer: true });\n\n // get value from columns selections and put them into newly created entity\n const hasColumns = this.transformColumns(rawResults, alias, entity, metadata);\n const hasRelations = this.transformJoins(rawResults, entity, alias, metadata);\n const hasRelationIds = this.transformRelationIds(rawResults, alias, entity, metadata);\n const hasRelationCounts = this.transformRelationCounts(rawResults, alias, entity);\n\n // if we have at least one selected column then return this entity\n // since entity must have at least primary columns to be really selected and transformed into entity\n if (hasColumns)\n return entity;\n\n // if we don't have any selected column we should not return entity,\n // except for the case when entity only contain a primary column as a relation to another entity\n // in this case its absolutely possible our entity to not have any columns except a single relation\n const hasOnlyVirtualPrimaryColumns = metadata.primaryColumns.filter(column => column.isVirtual === false).length === 0; // todo: create metadata.hasOnlyVirtualPrimaryColumns\n if (hasOnlyVirtualPrimaryColumns && (hasRelations || hasRelationIds || hasRelationCounts))\n return entity;\n\n return undefined;\n }\n\n // get value from columns selections and put them into object\n protected transformColumns(rawResults: any[], alias: Alias, entity: ObjectLiteral, metadata: EntityMetadata): boolean {\n let hasData = false;\n metadata.columns.forEach(column => {\n\n // if table inheritance is used make sure this column is not child's column\n if (metadata.childEntityMetadatas.length > 0 && metadata.childEntityMetadatas.map(metadata => metadata.target).indexOf(column.target) !== -1)\n return;\n\n const value = rawResults[0][DriverUtils.buildAlias(this.driver, alias.name, column.databaseName)];\n if (value === undefined || column.isVirtual)\n return;\n\n // if user does not selected the whole entity or he used partial selection and does not select this particular column\n // then we don't add this column and its value into the entity\n if (!this.expressionMap.selects.find(select => select.selection === alias.name || select.selection === alias.name + \".\" + column.propertyPath))\n return;\n\n column.setEntityValue(entity, this.driver.prepareHydratedValue(value, column));\n if (value !== null) // we don't mark it as has data because if we will have all nulls in our object - we don't need such object\n hasData = true;\n });\n return hasData;\n }\n\n /**\n * Transforms joined entities in the given raw results by a given alias and stores to the given (parent) entity\n */\n protected transformJoins(rawResults: any[], entity: ObjectLiteral, alias: Alias, metadata: EntityMetadata) {\n let hasData = false;\n\n // let discriminatorValue: string = \"\";\n // if (metadata.discriminatorColumn)\n // discriminatorValue = rawResults[0][DriverUtils.buildAlias(this.connection.driver, alias.name, alias.metadata.discriminatorColumn!.databaseName)];\n\n this.expressionMap.joinAttributes.forEach(join => { // todo: we have problem here - when inner joins are used without selects it still create empty array\n\n // skip joins without metadata\n if (!join.metadata)\n return;\n\n // if simple left or inner join was performed without selection then we don't need to do anything\n if (!join.isSelected)\n return;\n\n // this check need to avoid setting properties than not belong to entity when single table inheritance used. (todo: check if we still need it)\n // const metadata = metadata.childEntityMetadatas.find(childEntityMetadata => discriminatorValue === childEntityMetadata.discriminatorValue);\n if (join.relation && !metadata.relations.find(relation => relation === join.relation))\n return;\n\n // some checks to make sure this join is for current alias\n if (join.mapToProperty) {\n if (join.mapToPropertyParentAlias !== alias.name)\n return;\n } else {\n if (!join.relation || join.parentAlias !== alias.name || join.relationPropertyPath !== join.relation!.propertyPath)\n return;\n }\n\n // transform joined data into entities\n let result: any = this.transform(rawResults, join.alias);\n result = !join.isMany ? result[0] : result;\n result = !join.isMany && result === undefined ? null : result; // this is needed to make relations to return null when its joined but nothing was found in the database\n if (result === undefined) // if nothing was joined then simply return\n return;\n\n // if join was mapped to some property then save result to that property\n if (join.mapToPropertyPropertyName) {\n entity[join.mapToPropertyPropertyName] = result; // todo: fix embeds\n\n } else { // otherwise set to relation\n join.relation!.setEntityValue(entity, result);\n }\n\n hasData = true;\n });\n return hasData;\n }\n\n protected transformRelationIds(rawSqlResults: any[], alias: Alias, entity: ObjectLiteral, metadata: EntityMetadata): boolean {\n let hasData = false;\n this.rawRelationIdResults.forEach(rawRelationIdResult => {\n if (rawRelationIdResult.relationIdAttribute.parentAlias !== alias.name)\n return;\n\n const relation = rawRelationIdResult.relationIdAttribute.relation;\n const valueMap = this.createValueMapFromJoinColumns(relation, rawRelationIdResult.relationIdAttribute.parentAlias, rawSqlResults);\n if (valueMap === undefined || valueMap === null)\n return;\n\n const idMaps = rawRelationIdResult.results.map(result => {\n const entityPrimaryIds = this.extractEntityPrimaryIds(relation, result);\n if (OrmUtils.compareIds(entityPrimaryIds, valueMap) === false)\n return;\n\n let columns: ColumnMetadata[];\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.joinColumns.map(joinColumn => joinColumn);\n } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseEntityMetadata.primaryColumns.map(joinColumn => joinColumn);\n // columns = relation.inverseRelation!.joinColumns.map(joinColumn => joinColumn.referencedColumn!); //.inverseEntityMetadata.primaryColumns.map(joinColumn => joinColumn);\n } else { // ManyToMany\n if (relation.isOwning) {\n columns = relation.inverseJoinColumns.map(joinColumn => joinColumn);\n } else {\n columns = relation.inverseRelation!.joinColumns.map(joinColumn => joinColumn);\n }\n }\n\n const idMap = columns.reduce((idMap, column) => {\n let value = result[column.databaseName];\n if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n if (column.isVirtual && column.referencedColumn && column.referencedColumn.propertyName !== column.propertyName) // if column is a relation\n value = column.referencedColumn.createValueMap(value);\n\n return OrmUtils.mergeDeep(idMap, column.createValueMap(value));\n } else {\n if (column.referencedColumn!.referencedColumn) // if column is a relation\n value = column.referencedColumn!.referencedColumn!.createValueMap(value);\n\n return OrmUtils.mergeDeep(idMap, column.referencedColumn!.createValueMap(value));\n }\n }, {} as ObjectLiteral);\n\n if (columns.length === 1 && rawRelationIdResult.relationIdAttribute.disableMixedMap === false) {\n if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n return columns[0].getEntityValue(idMap);\n } else {\n return columns[0].referencedColumn!.getEntityValue(idMap);\n }\n }\n return idMap;\n }).filter(result => result !== undefined);\n\n const properties = rawRelationIdResult.relationIdAttribute.mapToPropertyPropertyPath.split(\".\");\n const mapToProperty = (properties: string[], map: ObjectLiteral, value: any): any => {\n\n const property = properties.shift();\n if (property && properties.length === 0) {\n map[property] = value;\n return map;\n } else if (property && properties.length > 0) {\n mapToProperty(properties, map[property], value);\n } else {\n return map;\n }\n };\n if (relation.isOneToOne || relation.isManyToOne) {\n if (idMaps[0] !== undefined) {\n mapToProperty(properties, entity, idMaps[0]);\n hasData = true;\n }\n } else {\n mapToProperty(properties, entity, idMaps);\n if (idMaps.length > 0) {\n hasData = true;\n }\n }\n });\n\n return hasData;\n }\n\n protected transformRelationCounts(rawSqlResults: any[], alias: Alias, entity: ObjectLiteral): boolean {\n let hasData = false;\n this.rawRelationCountResults\n .filter(rawRelationCountResult => rawRelationCountResult.relationCountAttribute.parentAlias === alias.name)\n .forEach(rawRelationCountResult => {\n const relation = rawRelationCountResult.relationCountAttribute.relation;\n let referenceColumnName: string;\n\n if (relation.isOneToMany) {\n referenceColumnName = relation.inverseRelation!.joinColumns[0].referencedColumn!.databaseName; // todo: fix joinColumns[0]\n\n } else {\n referenceColumnName = relation.isOwning ? relation.joinColumns[0].referencedColumn!.databaseName : relation.inverseRelation!.joinColumns[0].referencedColumn!.databaseName;\n }\n\n const referenceColumnValue = rawSqlResults[0][DriverUtils.buildAlias(this.driver, alias.name, referenceColumnName)]; // we use zero index since its grouped data // todo: selection with alias for entity columns wont work\n if (referenceColumnValue !== undefined && referenceColumnValue !== null) {\n entity[rawRelationCountResult.relationCountAttribute.mapToPropertyPropertyName] = 0;\n rawRelationCountResult.results\n .filter(result => result[\"parentId\"] === referenceColumnValue)\n .forEach(result => {\n entity[rawRelationCountResult.relationCountAttribute.mapToPropertyPropertyName] = parseInt(result[\"cnt\"]);\n hasData = true;\n });\n }\n });\n\n return hasData;\n }\n\n private createValueMapFromJoinColumns(relation: RelationMetadata, parentAlias: string, rawSqlResults: any[]): ObjectLiteral {\n let columns: ColumnMetadata[];\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.entityMetadata.primaryColumns.map(joinColumn => joinColumn);\n } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseRelation!.joinColumns.map(joinColumn => joinColumn);\n } else {\n if (relation.isOwning) {\n columns = relation.joinColumns.map(joinColumn => joinColumn);\n } else {\n columns = relation.inverseRelation!.inverseJoinColumns.map(joinColumn => joinColumn);\n }\n }\n return columns.reduce((valueMap, column) => {\n rawSqlResults.forEach(rawSqlResult => {\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n valueMap[column.databaseName] = this.driver.prepareHydratedValue(rawSqlResult[DriverUtils.buildAlias(this.driver, parentAlias, column.databaseName)], column);\n } else {\n valueMap[column.databaseName] = this.driver.prepareHydratedValue(rawSqlResult[DriverUtils.buildAlias(this.driver, parentAlias, column.referencedColumn!.databaseName)], column);\n }\n });\n return valueMap;\n }, {} as ObjectLiteral);\n\n }\n\n private extractEntityPrimaryIds(relation: RelationMetadata, relationIdRawResult: any) {\n let columns: ColumnMetadata[];\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n columns = relation.entityMetadata.primaryColumns.map(joinColumn => joinColumn);\n } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n columns = relation.inverseRelation!.joinColumns.map(joinColumn => joinColumn);\n } else {\n if (relation.isOwning) {\n columns = relation.joinColumns.map(joinColumn => joinColumn);\n } else {\n columns = relation.inverseRelation!.inverseJoinColumns.map(joinColumn => joinColumn);\n }\n }\n return columns.reduce((data, column) => {\n data[column.databaseName] = relationIdRawResult[column.databaseName];\n return data;\n }, {} as ObjectLiteral);\n }\n\n /*private removeVirtualColumns(entity: ObjectLiteral, alias: Alias) {\n const virtualColumns = this.expressionMap.selects\n .filter(select => select.virtual)\n .map(select => select.selection.replace(alias.name + \".\", \"\"));\n\n virtualColumns.forEach(virtualColumn => delete entity[virtualColumn]);\n }*/\n\n}\n"],"sourceRoot":"../.."}
@@ -5,6 +5,7 @@ var tslib_1 = require("tslib");
5
5
  var Query_1 = require("../driver/Query");
6
6
  var SqlInMemory_1 = require("../driver/SqlInMemory");
7
7
  var TypeORMError_1 = require("../error/TypeORMError");
8
+ var OrmUtils_1 = require("../util/OrmUtils");
8
9
  var BaseQueryRunner = /** @class */ (function () {
9
10
  function BaseQueryRunner() {
10
11
  // -------------------------------------------------------------------------
@@ -49,9 +50,9 @@ var BaseQueryRunner = /** @class */ (function () {
49
50
  * Loads given table's data from the database.
50
51
  */
51
52
  BaseQueryRunner.prototype.getTable = function (tablePath) {
52
- return tslib_1.__awaiter(this, void 0, void 0, function () {
53
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
53
54
  var _a;
54
- return tslib_1.__generator(this, function (_b) {
55
+ return (0, tslib_1.__generator)(this, function (_b) {
55
56
  switch (_b.label) {
56
57
  case 0:
57
58
  _a = this;
@@ -67,9 +68,9 @@ var BaseQueryRunner = /** @class */ (function () {
67
68
  * Loads all tables (with given names) from the database.
68
69
  */
69
70
  BaseQueryRunner.prototype.getTables = function (tableNames) {
70
- return tslib_1.__awaiter(this, void 0, void 0, function () {
71
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
71
72
  var _a;
72
- return tslib_1.__generator(this, function (_b) {
73
+ return (0, tslib_1.__generator)(this, function (_b) {
73
74
  switch (_b.label) {
74
75
  case 0:
75
76
  if (!!tableNames) return [3 /*break*/, 2];
@@ -92,9 +93,9 @@ var BaseQueryRunner = /** @class */ (function () {
92
93
  * Loads given view's data from the database.
93
94
  */
94
95
  BaseQueryRunner.prototype.getView = function (viewPath) {
95
- return tslib_1.__awaiter(this, void 0, void 0, function () {
96
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
96
97
  var _a;
97
- return tslib_1.__generator(this, function (_b) {
98
+ return (0, tslib_1.__generator)(this, function (_b) {
98
99
  switch (_b.label) {
99
100
  case 0:
100
101
  _a = this;
@@ -110,9 +111,9 @@ var BaseQueryRunner = /** @class */ (function () {
110
111
  * Loads given view's data from the database.
111
112
  */
112
113
  BaseQueryRunner.prototype.getViews = function (viewPaths) {
113
- return tslib_1.__awaiter(this, void 0, void 0, function () {
114
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
114
115
  var _a;
115
- return tslib_1.__generator(this, function (_b) {
116
+ return (0, tslib_1.__generator)(this, function (_b) {
116
117
  switch (_b.label) {
117
118
  case 0:
118
119
  _a = this;
@@ -159,14 +160,14 @@ var BaseQueryRunner = /** @class */ (function () {
159
160
  * Executes up sql queries.
160
161
  */
161
162
  BaseQueryRunner.prototype.executeMemoryUpSql = function () {
162
- return tslib_1.__awaiter(this, void 0, void 0, function () {
163
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
163
164
  var _a, _b, _c, query, parameters, e_1_1;
164
165
  var e_1, _d;
165
- return tslib_1.__generator(this, function (_e) {
166
+ return (0, tslib_1.__generator)(this, function (_e) {
166
167
  switch (_e.label) {
167
168
  case 0:
168
169
  _e.trys.push([0, 5, 6, 7]);
169
- _a = tslib_1.__values(this.sqlInMemory.upQueries), _b = _a.next();
170
+ _a = (0, tslib_1.__values)(this.sqlInMemory.upQueries), _b = _a.next();
170
171
  _e.label = 1;
171
172
  case 1:
172
173
  if (!!_b.done) return [3 /*break*/, 4];
@@ -198,14 +199,14 @@ var BaseQueryRunner = /** @class */ (function () {
198
199
  * Executes down sql queries.
199
200
  */
200
201
  BaseQueryRunner.prototype.executeMemoryDownSql = function () {
201
- return tslib_1.__awaiter(this, void 0, void 0, function () {
202
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
202
203
  var _a, _b, _c, query, parameters, e_2_1;
203
204
  var e_2, _d;
204
- return tslib_1.__generator(this, function (_e) {
205
+ return (0, tslib_1.__generator)(this, function (_e) {
205
206
  switch (_e.label) {
206
207
  case 0:
207
208
  _e.trys.push([0, 5, 6, 7]);
208
- _a = tslib_1.__values(this.sqlInMemory.downQueries.reverse()), _b = _a.next();
209
+ _a = (0, tslib_1.__values)(this.sqlInMemory.downQueries.reverse()), _b = _a.next();
209
210
  _e.label = 1;
210
211
  case 1:
211
212
  if (!!_b.done) return [3 /*break*/, 4];
@@ -240,9 +241,9 @@ var BaseQueryRunner = /** @class */ (function () {
240
241
  * Gets view from previously loaded views, otherwise loads it from database.
241
242
  */
242
243
  BaseQueryRunner.prototype.getCachedView = function (viewName) {
243
- return tslib_1.__awaiter(this, void 0, void 0, function () {
244
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
244
245
  var view, foundViews;
245
- return tslib_1.__generator(this, function (_a) {
246
+ return (0, tslib_1.__generator)(this, function (_a) {
246
247
  switch (_a.label) {
247
248
  case 0:
248
249
  view = this.loadedViews.find(function (view) { return view.name === viewName; });
@@ -267,10 +268,10 @@ var BaseQueryRunner = /** @class */ (function () {
267
268
  * Gets table from previously loaded tables, otherwise loads it from database.
268
269
  */
269
270
  BaseQueryRunner.prototype.getCachedTable = function (tableName) {
270
- return tslib_1.__awaiter(this, void 0, void 0, function () {
271
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
271
272
  var tablePath_1, table, foundTables, foundTablePath_1, cachedTable;
272
273
  var _this = this;
273
- return tslib_1.__generator(this, function (_a) {
274
+ return (0, tslib_1.__generator)(this, function (_a) {
274
275
  switch (_a.label) {
275
276
  case 0:
276
277
  if (tableName in this.cachedTablePaths) {
@@ -313,8 +314,8 @@ var BaseQueryRunner = /** @class */ (function () {
313
314
  var foundTable = this.loadedTables.find(function (loadedTable) { return _this.getTablePath(loadedTable) === oldTablePath; });
314
315
  try {
315
316
  // Clean up the lookup cache..
316
- for (var _b = tslib_1.__values(Object.entries(this.cachedTablePaths)), _c = _b.next(); !_c.done; _c = _b.next()) {
317
- var _d = tslib_1.__read(_c.value, 2), key = _d[0], cachedPath = _d[1];
317
+ for (var _b = (0, tslib_1.__values)(Object.entries(this.cachedTablePaths)), _c = _b.next(); !_c.done; _c = _b.next()) {
318
+ var _d = (0, tslib_1.__read)(_c.value, 2), key = _d[0], cachedPath = _d[1];
318
319
  if (cachedPath === oldTablePath) {
319
320
  this.cachedTablePaths[key] = this.getTablePath(changedTable);
320
321
  }
@@ -376,7 +377,7 @@ var BaseQueryRunner = /** @class */ (function () {
376
377
  // console.log((checkComment && oldColumn.comment !== newColumn.comment));
377
378
  // console.log(oldColumn.comment, newColumn.comment);
378
379
  // console.log("enum ---------------");
379
- // console.log(oldColumn.enum !== newColumn.enum);
380
+ // console.log(!OrmUtils.isArraysEqual(oldColumn.enum || [], newColumn.enum || []));
380
381
  // console.log(oldColumn.enum, newColumn.enum);
381
382
  return oldColumn.charset !== newColumn.charset
382
383
  || oldColumn.collation !== newColumn.collation
@@ -390,7 +391,7 @@ var BaseQueryRunner = /** @class */ (function () {
390
391
  || oldColumn.onUpdate !== newColumn.onUpdate // MySQL only
391
392
  || oldColumn.isNullable !== newColumn.isNullable
392
393
  || (checkComment && oldColumn.comment !== newColumn.comment)
393
- || oldColumn.enum !== newColumn.enum;
394
+ || !OrmUtils_1.OrmUtils.isArraysEqual(oldColumn.enum || [], newColumn.enum || []);
394
395
  };
395
396
  /**
396
397
  * Checks if column length is by default.
@@ -453,25 +454,25 @@ var BaseQueryRunner = /** @class */ (function () {
453
454
  * Executes sql used special for schema build.
454
455
  */
455
456
  BaseQueryRunner.prototype.executeQueries = function (upQueries, downQueries) {
456
- return tslib_1.__awaiter(this, void 0, void 0, function () {
457
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
457
458
  var upQueries_1, upQueries_1_1, _a, query, parameters, e_4_1;
458
459
  var _b, _c, e_4, _d;
459
- return tslib_1.__generator(this, function (_e) {
460
+ return (0, tslib_1.__generator)(this, function (_e) {
460
461
  switch (_e.label) {
461
462
  case 0:
462
463
  if (upQueries instanceof Query_1.Query)
463
464
  upQueries = [upQueries];
464
465
  if (downQueries instanceof Query_1.Query)
465
466
  downQueries = [downQueries];
466
- (_b = this.sqlInMemory.upQueries).push.apply(_b, tslib_1.__spreadArray([], tslib_1.__read(upQueries)));
467
- (_c = this.sqlInMemory.downQueries).push.apply(_c, tslib_1.__spreadArray([], tslib_1.__read(downQueries)));
467
+ (_b = this.sqlInMemory.upQueries).push.apply(_b, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(upQueries), false));
468
+ (_c = this.sqlInMemory.downQueries).push.apply(_c, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(downQueries), false));
468
469
  // if sql-in-memory mode is enabled then simply store sql in memory and return
469
470
  if (this.sqlMemoryMode === true)
470
471
  return [2 /*return*/, Promise.resolve()];
471
472
  _e.label = 1;
472
473
  case 1:
473
474
  _e.trys.push([1, 6, 7, 8]);
474
- upQueries_1 = tslib_1.__values(upQueries), upQueries_1_1 = upQueries_1.next();
475
+ upQueries_1 = (0, tslib_1.__values)(upQueries), upQueries_1_1 = upQueries_1.next();
475
476
  _e.label = 2;
476
477
  case 2:
477
478
  if (!!upQueries_1_1.done) return [3 /*break*/, 5];