typeorm 0.2.45-dev.f3cfdd2 → 0.2.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. package/browser/cache/DbQueryResultCache.js +6 -6
  2. package/browser/cache/DbQueryResultCache.js.map +1 -1
  3. package/browser/cache/RedisQueryResultCache.js +2 -2
  4. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  5. package/browser/connection/Connection.js +2 -2
  6. package/browser/connection/Connection.js.map +1 -1
  7. package/browser/connection/ConnectionOptionsReader.js +2 -2
  8. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  9. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js +10 -10
  10. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  11. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +157 -157
  12. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  13. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +3 -3
  14. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  15. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +4 -4
  16. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  17. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +2 -2
  18. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  19. package/browser/driver/capacitor/CapacitorDriver.js +1 -1
  20. package/browser/driver/capacitor/CapacitorDriver.js.map +1 -1
  21. package/browser/driver/capacitor/CapacitorQueryRunner.js +1 -1
  22. package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  23. package/browser/driver/cockroachdb/CockroachDriver.js +6 -6
  24. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  25. package/browser/driver/cockroachdb/CockroachQueryRunner.js +153 -153
  26. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  27. package/browser/driver/cordova/CordovaQueryRunner.js +1 -1
  28. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  29. package/browser/driver/expo/ExpoQueryRunner.js +3 -3
  30. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  31. package/browser/driver/mongodb/MongoDriver.js +4 -4
  32. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  33. package/browser/driver/mysql/MysqlDriver.js +11 -11
  34. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  35. package/browser/driver/mysql/MysqlQueryRunner.js +163 -163
  36. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  37. package/browser/driver/nativescript/NativescriptQueryRunner.js +1 -1
  38. package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  39. package/browser/driver/oracle/OracleDriver.js +10 -10
  40. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  41. package/browser/driver/oracle/OracleQueryRunner.js +124 -124
  42. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  43. package/browser/driver/postgres/PostgresDriver.js +18 -18
  44. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  45. package/browser/driver/postgres/PostgresQueryRunner.js +229 -229
  46. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  47. package/browser/driver/react-native/ReactNativeQueryRunner.js +1 -1
  48. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  49. package/browser/driver/sap/SapDriver.js +9 -9
  50. package/browser/driver/sap/SapDriver.js.map +1 -1
  51. package/browser/driver/sap/SapQueryRunner.js +126 -126
  52. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  53. package/browser/driver/sqlite/SqliteDriver.js +4 -4
  54. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  55. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +3 -3
  56. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  57. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +61 -61
  58. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  59. package/browser/driver/sqljs/SqljsDriver.js +3 -3
  60. package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
  61. package/browser/driver/sqlserver/SqlServerDriver.js +11 -11
  62. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  63. package/browser/driver/sqlserver/SqlServerQueryRunner.js +203 -203
  64. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  65. package/browser/entity-manager/EntityManager.js +4 -4
  66. package/browser/entity-manager/EntityManager.js.map +1 -1
  67. package/browser/entity-manager/MongoEntityManager.js +1 -1
  68. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  69. package/browser/entity-schema/EntitySchemaEmbeddedError.js +2 -2
  70. package/browser/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
  71. package/browser/error/AlreadyHasActiveConnectionError.js +1 -1
  72. package/browser/error/AlreadyHasActiveConnectionError.js.map +1 -1
  73. package/browser/error/CannotAttachTreeChildrenEntityError.js +1 -1
  74. package/browser/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  75. package/browser/error/CannotConnectAlreadyConnectedError.js +1 -1
  76. package/browser/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  77. package/browser/error/CannotCreateEntityIdMapError.js +1 -1
  78. package/browser/error/CannotCreateEntityIdMapError.js.map +1 -1
  79. package/browser/error/CannotDetermineEntityError.js +1 -1
  80. package/browser/error/CannotDetermineEntityError.js.map +1 -1
  81. package/browser/error/CannotExecuteNotConnectedError.js +1 -1
  82. package/browser/error/CannotExecuteNotConnectedError.js.map +1 -1
  83. package/browser/error/CannotGetEntityManagerNotConnectedError.js +1 -1
  84. package/browser/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  85. package/browser/error/CannotReflectMethodParameterTypeError.js +1 -1
  86. package/browser/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  87. package/browser/error/CircularRelationsError.js +1 -1
  88. package/browser/error/CircularRelationsError.js.map +1 -1
  89. package/browser/error/ColumnTypeUndefinedError.js +1 -1
  90. package/browser/error/ColumnTypeUndefinedError.js.map +1 -1
  91. package/browser/error/ConnectionIsNotSetError.js +1 -1
  92. package/browser/error/ConnectionIsNotSetError.js.map +1 -1
  93. package/browser/error/ConnectionNotFoundError.js +1 -1
  94. package/browser/error/ConnectionNotFoundError.js.map +1 -1
  95. package/browser/error/CustomRepositoryCannotInheritRepositoryError.js +1 -1
  96. package/browser/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  97. package/browser/error/CustomRepositoryDoesNotHaveEntityError.js +1 -1
  98. package/browser/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  99. package/browser/error/CustomRepositoryNotFoundError.js +1 -1
  100. package/browser/error/CustomRepositoryNotFoundError.js.map +1 -1
  101. package/browser/error/DataTypeNotSupportedError.js +1 -1
  102. package/browser/error/DataTypeNotSupportedError.js.map +1 -1
  103. package/browser/error/DriverOptionNotSetError.js +1 -1
  104. package/browser/error/DriverOptionNotSetError.js.map +1 -1
  105. package/browser/error/DriverPackageNotInstalledError.js +2 -2
  106. package/browser/error/DriverPackageNotInstalledError.js.map +1 -1
  107. package/browser/error/EntityColumnNotFound.js +1 -1
  108. package/browser/error/EntityColumnNotFound.js.map +1 -1
  109. package/browser/error/EntityMetadataNotFoundError.js +1 -1
  110. package/browser/error/EntityMetadataNotFoundError.js.map +1 -1
  111. package/browser/error/EntityNotFoundError.js +2 -2
  112. package/browser/error/EntityNotFoundError.js.map +1 -1
  113. package/browser/error/FindRelationsNotFoundError.js +2 -2
  114. package/browser/error/FindRelationsNotFoundError.js.map +1 -1
  115. package/browser/error/InitializedRelationError.js +1 -1
  116. package/browser/error/InitializedRelationError.js.map +1 -1
  117. package/browser/error/MissingDeleteDateColumnError.js +1 -1
  118. package/browser/error/MissingDeleteDateColumnError.js.map +1 -1
  119. package/browser/error/MissingDriverError.js +2 -2
  120. package/browser/error/MissingDriverError.js.map +1 -1
  121. package/browser/error/MissingJoinColumnError.js +3 -3
  122. package/browser/error/MissingJoinColumnError.js.map +1 -1
  123. package/browser/error/MissingJoinTableError.js +3 -3
  124. package/browser/error/MissingJoinTableError.js.map +1 -1
  125. package/browser/error/MissingPrimaryColumnError.js +1 -1
  126. package/browser/error/MissingPrimaryColumnError.js.map +1 -1
  127. package/browser/error/MustBeEntityError.js +1 -1
  128. package/browser/error/MustBeEntityError.js.map +1 -1
  129. package/browser/error/NamingStrategyNotFoundError.js +2 -2
  130. package/browser/error/NamingStrategyNotFoundError.js.map +1 -1
  131. package/browser/error/NoConnectionForRepositoryError.js +1 -1
  132. package/browser/error/NoConnectionForRepositoryError.js.map +1 -1
  133. package/browser/error/NoConnectionOptionError.js +2 -2
  134. package/browser/error/NoConnectionOptionError.js.map +1 -1
  135. package/browser/error/NoVersionOrUpdateDateColumnError.js +1 -1
  136. package/browser/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  137. package/browser/error/OptimisticLockVersionMismatchError.js +1 -1
  138. package/browser/error/OptimisticLockVersionMismatchError.js.map +1 -1
  139. package/browser/error/PrimaryColumnCannotBeNullableError.js +1 -1
  140. package/browser/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  141. package/browser/error/RepositoryNotFoundError.js +2 -2
  142. package/browser/error/RepositoryNotFoundError.js.map +1 -1
  143. package/browser/error/RepositoryNotTreeError.js +1 -1
  144. package/browser/error/RepositoryNotTreeError.js.map +1 -1
  145. package/browser/error/SubjectRemovedAndUpdatedError.js +1 -1
  146. package/browser/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  147. package/browser/error/SubjectWithoutIdentifierError.js +1 -1
  148. package/browser/error/SubjectWithoutIdentifierError.js.map +1 -1
  149. package/browser/error/TreeRepositoryNotSupportedError.js +1 -1
  150. package/browser/error/TreeRepositoryNotSupportedError.js.map +1 -1
  151. package/browser/error/UsingJoinColumnIsNotAllowedError.js +1 -1
  152. package/browser/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  153. package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +1 -1
  154. package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  155. package/browser/error/UsingJoinTableIsNotAllowedError.js +2 -2
  156. package/browser/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  157. package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js +1 -1
  158. package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  159. package/browser/find-options/FindOptionsUtils.js +6 -6
  160. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  161. package/browser/logger/FileLogger.js +3 -3
  162. package/browser/logger/FileLogger.js.map +1 -1
  163. package/browser/metadata/EmbeddedMetadata.js +1 -1
  164. package/browser/metadata/EmbeddedMetadata.js.map +1 -1
  165. package/browser/metadata/IndexMetadata.js +1 -1
  166. package/browser/metadata/IndexMetadata.js.map +1 -1
  167. package/browser/metadata/RelationCountMetadata.js +1 -1
  168. package/browser/metadata/RelationCountMetadata.js.map +1 -1
  169. package/browser/metadata/RelationIdMetadata.js +1 -1
  170. package/browser/metadata/RelationIdMetadata.js.map +1 -1
  171. package/browser/metadata/UniqueMetadata.js +1 -1
  172. package/browser/metadata/UniqueMetadata.js.map +1 -1
  173. package/browser/metadata-builder/EntityMetadataBuilder.js +1 -1
  174. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  175. package/browser/metadata-builder/EntityMetadataValidator.js +9 -9
  176. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  177. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +2 -2
  178. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  179. package/browser/metadata-builder/RelationJoinColumnBuilder.js +1 -1
  180. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  181. package/browser/migration/MigrationExecutor.js +16 -16
  182. package/browser/migration/MigrationExecutor.js.map +1 -1
  183. package/browser/naming-strategy/DefaultNamingStrategy.js +11 -11
  184. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  185. package/browser/persistence/tree/ClosureSubjectExecutor.js +17 -17
  186. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  187. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js +2 -2
  188. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  189. package/browser/persistence/tree/NestedSetSubjectExecutor.js +44 -44
  190. package/browser/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  191. package/browser/platform/BrowserPlatformTools.js +9 -9
  192. package/browser/platform/BrowserPlatformTools.js.map +1 -1
  193. package/browser/platform/PlatformTools.js +1 -1
  194. package/browser/platform/PlatformTools.js.map +1 -1
  195. package/browser/query-builder/Alias.js +1 -1
  196. package/browser/query-builder/Alias.js.map +1 -1
  197. package/browser/query-builder/DeleteQueryBuilder.js +3 -3
  198. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  199. package/browser/query-builder/InsertQueryBuilder.js +22 -22
  200. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  201. package/browser/query-builder/JoinAttribute.js +1 -1
  202. package/browser/query-builder/JoinAttribute.js.map +1 -1
  203. package/browser/query-builder/QueryBuilder.js +39 -39
  204. package/browser/query-builder/QueryBuilder.js.map +1 -1
  205. package/browser/query-builder/QueryExpressionMap.js +2 -2
  206. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  207. package/browser/query-builder/RelationLoader.js +7 -7
  208. package/browser/query-builder/RelationLoader.js.map +1 -1
  209. package/browser/query-builder/RelationQueryBuilder.js +3 -3
  210. package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
  211. package/browser/query-builder/RelationRemover.js +4 -4
  212. package/browser/query-builder/RelationRemover.js.map +1 -1
  213. package/browser/query-builder/RelationUpdater.js +1 -1
  214. package/browser/query-builder/RelationUpdater.js.map +1 -1
  215. package/browser/query-builder/SelectQueryBuilder.js +23 -23
  216. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  217. package/browser/query-builder/SoftDeleteQueryBuilder.js +4 -4
  218. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  219. package/browser/query-builder/UpdateQueryBuilder.js +8 -8
  220. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  221. package/browser/query-builder/relation-count/RelationCountAttribute.js +1 -1
  222. package/browser/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  223. package/browser/query-builder/relation-id/RelationIdAttribute.js +1 -1
  224. package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  225. package/browser/query-builder/relation-id/RelationIdLoader.js +4 -4
  226. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  227. package/browser/query-runner/BaseQueryRunner.js +7 -7
  228. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  229. package/browser/repository/TreeRepository.js +7 -7
  230. package/browser/repository/TreeRepository.js.map +1 -1
  231. package/browser/schema-builder/RdbmsSchemaBuilder.js +19 -19
  232. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  233. package/browser/subscriber/Broadcaster.js +1 -1
  234. package/browser/subscriber/Broadcaster.js.map +1 -1
  235. package/browser/util/DateUtils.js +1 -1
  236. package/browser/util/DateUtils.js.map +1 -1
  237. package/browser/util/DepGraph.js +7 -7
  238. package/browser/util/DepGraph.js.map +1 -1
  239. package/browser/util/DirectoryExportedClassesLoader.js +2 -2
  240. package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
  241. package/browser/util/PathUtils.js +1 -1
  242. package/browser/util/PathUtils.js.map +1 -1
  243. package/cache/DbQueryResultCache.js +6 -6
  244. package/cache/DbQueryResultCache.js.map +1 -1
  245. package/cache/RedisQueryResultCache.js +2 -2
  246. package/cache/RedisQueryResultCache.js.map +1 -1
  247. package/cli.js +0 -0
  248. package/commands/CommandUtils.js +1 -1
  249. package/commands/CommandUtils.js.map +1 -1
  250. package/commands/EntityCreateCommand.js +3 -3
  251. package/commands/EntityCreateCommand.js.map +1 -1
  252. package/commands/InitCommand.js +6 -6
  253. package/commands/InitCommand.js.map +1 -1
  254. package/commands/MigrationCreateCommand.js +3 -3
  255. package/commands/MigrationCreateCommand.js.map +1 -1
  256. package/commands/MigrationGenerateCommand.js +8 -8
  257. package/commands/MigrationGenerateCommand.js.map +1 -1
  258. package/commands/SchemaLogCommand.js +1 -1
  259. package/commands/SchemaLogCommand.js.map +1 -1
  260. package/commands/SubscriberCreateCommand.js +2 -2
  261. package/commands/SubscriberCreateCommand.js.map +1 -1
  262. package/connection/Connection.js +2 -2
  263. package/connection/Connection.js.map +1 -1
  264. package/connection/ConnectionOptionsReader.js +2 -2
  265. package/connection/ConnectionOptionsReader.js.map +1 -1
  266. package/driver/aurora-data-api/AuroraDataApiDriver.js +10 -10
  267. package/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  268. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +157 -157
  269. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  270. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +3 -3
  271. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  272. package/driver/better-sqlite3/BetterSqlite3Driver.js +4 -4
  273. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  274. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +2 -2
  275. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  276. package/driver/capacitor/CapacitorDriver.js +1 -1
  277. package/driver/capacitor/CapacitorDriver.js.map +1 -1
  278. package/driver/capacitor/CapacitorQueryRunner.js +1 -1
  279. package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  280. package/driver/cockroachdb/CockroachDriver.js +6 -6
  281. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  282. package/driver/cockroachdb/CockroachQueryRunner.js +153 -153
  283. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  284. package/driver/cordova/CordovaQueryRunner.js +1 -1
  285. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  286. package/driver/expo/ExpoQueryRunner.js +3 -3
  287. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  288. package/driver/mongodb/MongoDriver.js +4 -4
  289. package/driver/mongodb/MongoDriver.js.map +1 -1
  290. package/driver/mysql/MysqlDriver.js +11 -11
  291. package/driver/mysql/MysqlDriver.js.map +1 -1
  292. package/driver/mysql/MysqlQueryRunner.js +163 -163
  293. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  294. package/driver/nativescript/NativescriptQueryRunner.js +1 -1
  295. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  296. package/driver/oracle/OracleDriver.js +10 -10
  297. package/driver/oracle/OracleDriver.js.map +1 -1
  298. package/driver/oracle/OracleQueryRunner.js +124 -124
  299. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  300. package/driver/postgres/PostgresDriver.js +18 -18
  301. package/driver/postgres/PostgresDriver.js.map +1 -1
  302. package/driver/postgres/PostgresQueryRunner.js +229 -229
  303. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  304. package/driver/react-native/ReactNativeQueryRunner.js +1 -1
  305. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  306. package/driver/sap/SapDriver.js +9 -9
  307. package/driver/sap/SapDriver.js.map +1 -1
  308. package/driver/sap/SapQueryRunner.js +126 -126
  309. package/driver/sap/SapQueryRunner.js.map +1 -1
  310. package/driver/sqlite/SqliteDriver.js +4 -4
  311. package/driver/sqlite/SqliteDriver.js.map +1 -1
  312. package/driver/sqlite-abstract/AbstractSqliteDriver.js +3 -3
  313. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  314. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +61 -61
  315. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  316. package/driver/sqljs/SqljsDriver.js +3 -3
  317. package/driver/sqljs/SqljsDriver.js.map +1 -1
  318. package/driver/sqlserver/SqlServerDriver.js +11 -11
  319. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  320. package/driver/sqlserver/SqlServerQueryRunner.js +203 -203
  321. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  322. package/entity-manager/EntityManager.js +4 -4
  323. package/entity-manager/EntityManager.js.map +1 -1
  324. package/entity-manager/MongoEntityManager.js +1 -1
  325. package/entity-manager/MongoEntityManager.js.map +1 -1
  326. package/entity-schema/EntitySchemaEmbeddedError.js +2 -2
  327. package/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
  328. package/error/AlreadyHasActiveConnectionError.js +1 -1
  329. package/error/AlreadyHasActiveConnectionError.js.map +1 -1
  330. package/error/CannotAttachTreeChildrenEntityError.js +1 -1
  331. package/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  332. package/error/CannotConnectAlreadyConnectedError.js +1 -1
  333. package/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  334. package/error/CannotCreateEntityIdMapError.js +1 -1
  335. package/error/CannotCreateEntityIdMapError.js.map +1 -1
  336. package/error/CannotDetermineEntityError.js +1 -1
  337. package/error/CannotDetermineEntityError.js.map +1 -1
  338. package/error/CannotExecuteNotConnectedError.js +1 -1
  339. package/error/CannotExecuteNotConnectedError.js.map +1 -1
  340. package/error/CannotGetEntityManagerNotConnectedError.js +1 -1
  341. package/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  342. package/error/CannotReflectMethodParameterTypeError.js +1 -1
  343. package/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  344. package/error/CircularRelationsError.js +1 -1
  345. package/error/CircularRelationsError.js.map +1 -1
  346. package/error/ColumnTypeUndefinedError.js +1 -1
  347. package/error/ColumnTypeUndefinedError.js.map +1 -1
  348. package/error/ConnectionIsNotSetError.js +1 -1
  349. package/error/ConnectionIsNotSetError.js.map +1 -1
  350. package/error/ConnectionNotFoundError.js +1 -1
  351. package/error/ConnectionNotFoundError.js.map +1 -1
  352. package/error/CustomRepositoryCannotInheritRepositoryError.js +1 -1
  353. package/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  354. package/error/CustomRepositoryDoesNotHaveEntityError.js +1 -1
  355. package/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  356. package/error/CustomRepositoryNotFoundError.js +1 -1
  357. package/error/CustomRepositoryNotFoundError.js.map +1 -1
  358. package/error/DataTypeNotSupportedError.js +1 -1
  359. package/error/DataTypeNotSupportedError.js.map +1 -1
  360. package/error/DriverOptionNotSetError.js +1 -1
  361. package/error/DriverOptionNotSetError.js.map +1 -1
  362. package/error/DriverPackageNotInstalledError.js +2 -2
  363. package/error/DriverPackageNotInstalledError.js.map +1 -1
  364. package/error/EntityColumnNotFound.js +1 -1
  365. package/error/EntityColumnNotFound.js.map +1 -1
  366. package/error/EntityMetadataNotFoundError.js +1 -1
  367. package/error/EntityMetadataNotFoundError.js.map +1 -1
  368. package/error/EntityNotFoundError.js +2 -2
  369. package/error/EntityNotFoundError.js.map +1 -1
  370. package/error/FindRelationsNotFoundError.js +2 -2
  371. package/error/FindRelationsNotFoundError.js.map +1 -1
  372. package/error/InitializedRelationError.js +1 -1
  373. package/error/InitializedRelationError.js.map +1 -1
  374. package/error/MissingDeleteDateColumnError.js +1 -1
  375. package/error/MissingDeleteDateColumnError.js.map +1 -1
  376. package/error/MissingDriverError.js +2 -2
  377. package/error/MissingDriverError.js.map +1 -1
  378. package/error/MissingJoinColumnError.js +3 -3
  379. package/error/MissingJoinColumnError.js.map +1 -1
  380. package/error/MissingJoinTableError.js +3 -3
  381. package/error/MissingJoinTableError.js.map +1 -1
  382. package/error/MissingPrimaryColumnError.js +1 -1
  383. package/error/MissingPrimaryColumnError.js.map +1 -1
  384. package/error/MustBeEntityError.js +1 -1
  385. package/error/MustBeEntityError.js.map +1 -1
  386. package/error/NamingStrategyNotFoundError.js +2 -2
  387. package/error/NamingStrategyNotFoundError.js.map +1 -1
  388. package/error/NoConnectionForRepositoryError.js +1 -1
  389. package/error/NoConnectionForRepositoryError.js.map +1 -1
  390. package/error/NoConnectionOptionError.js +2 -2
  391. package/error/NoConnectionOptionError.js.map +1 -1
  392. package/error/NoVersionOrUpdateDateColumnError.js +1 -1
  393. package/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  394. package/error/OptimisticLockVersionMismatchError.js +1 -1
  395. package/error/OptimisticLockVersionMismatchError.js.map +1 -1
  396. package/error/PrimaryColumnCannotBeNullableError.js +1 -1
  397. package/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  398. package/error/RepositoryNotFoundError.js +2 -2
  399. package/error/RepositoryNotFoundError.js.map +1 -1
  400. package/error/RepositoryNotTreeError.js +1 -1
  401. package/error/RepositoryNotTreeError.js.map +1 -1
  402. package/error/SubjectRemovedAndUpdatedError.js +1 -1
  403. package/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  404. package/error/SubjectWithoutIdentifierError.js +1 -1
  405. package/error/SubjectWithoutIdentifierError.js.map +1 -1
  406. package/error/TreeRepositoryNotSupportedError.js +1 -1
  407. package/error/TreeRepositoryNotSupportedError.js.map +1 -1
  408. package/error/UsingJoinColumnIsNotAllowedError.js +1 -1
  409. package/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  410. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +1 -1
  411. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  412. package/error/UsingJoinTableIsNotAllowedError.js +2 -2
  413. package/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  414. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js +1 -1
  415. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  416. package/find-options/FindOptionsUtils.js +6 -6
  417. package/find-options/FindOptionsUtils.js.map +1 -1
  418. package/logger/FileLogger.js +3 -3
  419. package/logger/FileLogger.js.map +1 -1
  420. package/metadata/EmbeddedMetadata.js +1 -1
  421. package/metadata/EmbeddedMetadata.js.map +1 -1
  422. package/metadata/IndexMetadata.js +1 -1
  423. package/metadata/IndexMetadata.js.map +1 -1
  424. package/metadata/RelationCountMetadata.js +1 -1
  425. package/metadata/RelationCountMetadata.js.map +1 -1
  426. package/metadata/RelationIdMetadata.js +1 -1
  427. package/metadata/RelationIdMetadata.js.map +1 -1
  428. package/metadata/UniqueMetadata.js +1 -1
  429. package/metadata/UniqueMetadata.js.map +1 -1
  430. package/metadata-builder/EntityMetadataBuilder.js +1 -1
  431. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  432. package/metadata-builder/EntityMetadataValidator.js +9 -9
  433. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  434. package/metadata-builder/JunctionEntityMetadataBuilder.js +2 -2
  435. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  436. package/metadata-builder/RelationJoinColumnBuilder.js +1 -1
  437. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  438. package/migration/MigrationExecutor.js +16 -16
  439. package/migration/MigrationExecutor.js.map +1 -1
  440. package/naming-strategy/DefaultNamingStrategy.js +11 -11
  441. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  442. package/package.json +260 -1
  443. package/persistence/tree/ClosureSubjectExecutor.js +17 -17
  444. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  445. package/persistence/tree/MaterializedPathSubjectExecutor.js +2 -2
  446. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  447. package/persistence/tree/NestedSetSubjectExecutor.js +44 -44
  448. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  449. package/platform/PlatformTools.js +1 -1
  450. package/platform/PlatformTools.js.map +1 -1
  451. package/query-builder/Alias.js +1 -1
  452. package/query-builder/Alias.js.map +1 -1
  453. package/query-builder/DeleteQueryBuilder.js +3 -3
  454. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  455. package/query-builder/InsertQueryBuilder.js +22 -22
  456. package/query-builder/InsertQueryBuilder.js.map +1 -1
  457. package/query-builder/JoinAttribute.js +1 -1
  458. package/query-builder/JoinAttribute.js.map +1 -1
  459. package/query-builder/QueryBuilder.js +39 -39
  460. package/query-builder/QueryBuilder.js.map +1 -1
  461. package/query-builder/QueryExpressionMap.js +2 -2
  462. package/query-builder/QueryExpressionMap.js.map +1 -1
  463. package/query-builder/RelationLoader.js +7 -7
  464. package/query-builder/RelationLoader.js.map +1 -1
  465. package/query-builder/RelationQueryBuilder.js +3 -3
  466. package/query-builder/RelationQueryBuilder.js.map +1 -1
  467. package/query-builder/RelationRemover.js +4 -4
  468. package/query-builder/RelationRemover.js.map +1 -1
  469. package/query-builder/RelationUpdater.js +1 -1
  470. package/query-builder/RelationUpdater.js.map +1 -1
  471. package/query-builder/SelectQueryBuilder.js +23 -23
  472. package/query-builder/SelectQueryBuilder.js.map +1 -1
  473. package/query-builder/SoftDeleteQueryBuilder.js +4 -4
  474. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  475. package/query-builder/UpdateQueryBuilder.js +8 -8
  476. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  477. package/query-builder/relation-count/RelationCountAttribute.js +1 -1
  478. package/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  479. package/query-builder/relation-id/RelationIdAttribute.js +1 -1
  480. package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  481. package/query-builder/relation-id/RelationIdLoader.js +4 -4
  482. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  483. package/query-runner/BaseQueryRunner.js +7 -7
  484. package/query-runner/BaseQueryRunner.js.map +1 -1
  485. package/repository/TreeRepository.js +7 -7
  486. package/repository/TreeRepository.js.map +1 -1
  487. package/schema-builder/RdbmsSchemaBuilder.js +19 -19
  488. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  489. package/subscriber/Broadcaster.js +1 -1
  490. package/subscriber/Broadcaster.js.map +1 -1
  491. package/util/DateUtils.js +1 -1
  492. package/util/DateUtils.js.map +1 -1
  493. package/util/DepGraph.js +7 -7
  494. package/util/DepGraph.js.map +1 -1
  495. package/util/DirectoryExportedClassesLoader.js +2 -2
  496. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  497. package/util/PathUtils.js +1 -1
  498. package/util/PathUtils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/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: {[duplicateKey: string]: boolean} = {};\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[duplicate]) {\n return null;\n }\n duplicates[duplicate] = true;\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: {[duplicateKey: string]: boolean} = {};\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[duplicate]) {\n return \"\";\n }\n duplicates[duplicate] = true;\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: {[duplicateKey: string]: boolean} = {};\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[duplicate]) {\n return \"\";\n }\n duplicates[duplicate] = true;\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":["../browser/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: {[duplicateKey: string]: boolean} = {};\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[duplicate]) {\n return null;\n }\n duplicates[duplicate] = true;\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: {[duplicateKey: string]: boolean} = {};\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[duplicate]) {\n return \"\";\n }\n duplicates[duplicate] = true;\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: {[duplicateKey: string]: boolean} = {};\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[duplicate]) {\n return \"\";\n }\n duplicates[duplicate] = true;\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":"../.."}
@@ -282,7 +282,7 @@ var BaseQueryRunner = /** @class */ (function () {
282
282
  return [2 /*return*/, foundViews[0]];
283
283
  }
284
284
  else {
285
- throw new TypeORMError("View \"" + viewName + "\" does not exist.");
285
+ throw new TypeORMError("View \"".concat(viewName, "\" does not exist."));
286
286
  }
287
287
  return [2 /*return*/];
288
288
  }
@@ -322,7 +322,7 @@ var BaseQueryRunner = /** @class */ (function () {
322
322
  }
323
323
  }
324
324
  else {
325
- throw new TypeORMError("Table \"" + tableName + "\" does not exist.");
325
+ throw new TypeORMError("Table \"".concat(tableName, "\" does not exist."));
326
326
  }
327
327
  return [2 /*return*/];
328
328
  }
@@ -394,16 +394,16 @@ var BaseQueryRunner = /** @class */ (function () {
394
394
  var qb = this.connection.createQueryBuilder();
395
395
  var deleteQb = qb.delete()
396
396
  .from(this.getTypeormMetadataTableName())
397
- .where(qb.escape("type") + " = :type", { type: type })
398
- .andWhere(qb.escape("name") + " = :name", { name: name });
397
+ .where("".concat(qb.escape("type"), " = :type"), { type: type })
398
+ .andWhere("".concat(qb.escape("name"), " = :name"), { name: name });
399
399
  if (database) {
400
- deleteQb.andWhere(qb.escape("database") + " = :database", { database: database });
400
+ deleteQb.andWhere("".concat(qb.escape("database"), " = :database"), { database: database });
401
401
  }
402
402
  if (schema) {
403
- deleteQb.andWhere(qb.escape("schema") + " = :schema", { schema: schema });
403
+ deleteQb.andWhere("".concat(qb.escape("schema"), " = :schema"), { schema: schema });
404
404
  }
405
405
  if (table) {
406
- deleteQb.andWhere(qb.escape("table") + " = :table", { table: table });
406
+ deleteQb.andWhere("".concat(qb.escape("table"), " = :table"), { table: table });
407
407
  }
408
408
  var _b = __read(deleteQb.getQueryAndParameters(), 2), query = _b[0], parameters = _b[1];
409
409
  return new Query(query, parameters);
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-runner/BaseQueryRunner.ts"],"names":[],"mappings":"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","file":"BaseQueryRunner.js","sourcesContent":["import {PostgresConnectionOptions} from \"../driver/postgres/PostgresConnectionOptions\";\nimport {Query} from \"../driver/Query\";\nimport {SqlInMemory} from \"../driver/SqlInMemory\";\nimport {SqlServerConnectionOptions} from \"../driver/sqlserver/SqlServerConnectionOptions\";\nimport {View} from \"../schema-builder/view/View\";\nimport {Connection} from \"../connection/Connection\";\nimport {Table} from \"../schema-builder/table/Table\";\nimport {EntityManager} from \"../entity-manager/EntityManager\";\nimport {TableColumn} from \"../schema-builder/table/TableColumn\";\nimport {Broadcaster} from \"../subscriber/Broadcaster\";\nimport {ReplicationMode} from \"../driver/types/ReplicationMode\";\nimport { TypeORMError } from \"../error/TypeORMError\";\nimport { EntityMetadata } from \"../metadata/EntityMetadata\";\nimport { TableForeignKey } from \"../schema-builder/table/TableForeignKey\";\nimport { OrmUtils } from \"../util/OrmUtils\";\nimport {MetadataTableType} from \"../driver/types/MetadataTableType\";\n\nexport abstract class BaseQueryRunner {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection used by this query runner.\n */\n connection: Connection;\n\n /**\n * Entity manager working only with current query runner.\n */\n manager: EntityManager;\n\n /**\n * Indicates if connection for this query runner is released.\n * Once its released, query runner cannot run queries anymore.\n */\n isReleased = false;\n\n /**\n * Indicates if transaction is in progress.\n */\n isTransactionActive = false;\n\n /**\n * Stores temporarily user data.\n * Useful for sharing data with subscribers.\n */\n data = {};\n\n /**\n * All synchronized tables in the database.\n */\n loadedTables: Table[] = [];\n\n /**\n * All synchronized views in the database.\n */\n loadedViews: View[] = [];\n\n /**\n * Broadcaster used on this query runner to broadcast entity events.\n */\n broadcaster: Broadcaster;\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Real database connection from a connection pool used to perform queries.\n */\n protected databaseConnection: any;\n\n /**\n * Indicates if special query runner mode in which sql queries won't be executed is enabled.\n */\n protected sqlMemoryMode: boolean = false;\n\n /**\n * Sql-s stored if \"sql in memory\" mode is enabled.\n */\n protected sqlInMemory: SqlInMemory = new SqlInMemory();\n\n /**\n * Mode in which query runner executes.\n * Used for replication.\n * If replication is not setup its value is ignored.\n */\n protected mode: ReplicationMode;\n\n /**\n * current depth of transaction.\n * for transactionDepth > 0 will use SAVEPOINT to start and commit/rollback transaction blocks\n */\n protected transactionDepth = 0;\n\n private cachedTablePaths: Record<string, string> = {};\n\n // -------------------------------------------------------------------------\n // Public Abstract Methods\n // -------------------------------------------------------------------------\n\n /**\n * Executes a given SQL query.\n */\n abstract query(query: string, parameters?: any[], useStructuredResult?: boolean): Promise<any>;\n\n // -------------------------------------------------------------------------\n // Protected Abstract Methods\n // -------------------------------------------------------------------------\n\n protected abstract loadTables(tablePaths?: string[]): Promise<Table[]>;\n\n protected abstract loadViews(tablePaths?: string[]): Promise<View[]>;\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n // Do nothing\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n // Do nothing\n }\n\n /**\n * Loads given table's data from the database.\n */\n async getTable(tablePath: string): Promise<Table|undefined> {\n this.loadedTables = await this.loadTables([tablePath]);\n return this.loadedTables.length > 0 ? this.loadedTables[0] : undefined;\n }\n\n /**\n * Loads all tables (with given names) from the database.\n */\n async getTables(tableNames?: string[]): Promise<Table[]> {\n if (!tableNames) {\n // Don't cache in this case.\n // This is the new case & isn't used anywhere else anyway.\n return await this.loadTables(tableNames);\n }\n\n this.loadedTables = await this.loadTables(tableNames);\n return this.loadedTables;\n }\n\n /**\n * Loads given view's data from the database.\n */\n async getView(viewPath: string): Promise<View|undefined> {\n this.loadedViews = await this.loadViews([viewPath]);\n return this.loadedViews.length > 0 ? this.loadedViews[0] : undefined;\n }\n\n /**\n * Loads given view's data from the database.\n */\n async getViews(viewPaths?: string[]): Promise<View[]> {\n this.loadedViews = await this.loadViews(viewPaths);\n return this.loadedViews;\n }\n\n /**\n * Enables special query runner mode in which sql queries won't be executed,\n * instead they will be memorized into a special variable inside query runner.\n * You can get memorized sql using getMemorySql() method.\n */\n enableSqlMemory(): void {\n this.sqlInMemory = new SqlInMemory();\n this.sqlMemoryMode = true;\n }\n\n /**\n * Disables special query runner mode in which sql queries won't be executed\n * started by calling enableSqlMemory() method.\n *\n * Previously memorized sql will be flushed.\n */\n disableSqlMemory(): void {\n this.sqlInMemory = new SqlInMemory();\n this.sqlMemoryMode = false;\n }\n\n /**\n * Flushes all memorized sqls.\n */\n clearSqlMemory(): void {\n this.sqlInMemory = new SqlInMemory();\n }\n\n /**\n * Gets sql stored in the memory. Parameters in the sql are already replaced.\n */\n getMemorySql(): SqlInMemory {\n return this.sqlInMemory;\n }\n\n /**\n * Executes up sql queries.\n */\n async executeMemoryUpSql(): Promise<void> {\n for (const {query, parameters} of this.sqlInMemory.upQueries) {\n await this.query(query, parameters);\n }\n }\n\n /**\n * Executes down sql queries.\n */\n async executeMemoryDownSql(): Promise<void> {\n for (const {query, parameters} of this.sqlInMemory.downQueries.reverse()) {\n await this.query(query, parameters);\n }\n }\n\n getReplicationMode(): ReplicationMode {\n return this.mode;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets view from previously loaded views, otherwise loads it from database.\n */\n protected async getCachedView(viewName: string): Promise<View> {\n const view = this.loadedViews.find(view => view.name === viewName);\n if (view) return view;\n\n const foundViews = await this.loadViews([viewName]);\n if (foundViews.length > 0) {\n this.loadedViews.push(foundViews[0]);\n return foundViews[0];\n } else {\n throw new TypeORMError(`View \"${viewName}\" does not exist.`);\n }\n }\n\n /**\n * Gets table from previously loaded tables, otherwise loads it from database.\n */\n protected async getCachedTable(tableName: string): Promise<Table> {\n if (tableName in this.cachedTablePaths) {\n const tablePath = this.cachedTablePaths[tableName];\n const table = this.loadedTables.find(table => this.getTablePath(table) === tablePath);\n\n if (table) {\n return table;\n }\n }\n\n const foundTables = await this.loadTables([tableName]);\n\n if (foundTables.length > 0) {\n const foundTablePath = this.getTablePath(foundTables[0]);\n\n const cachedTable = this.loadedTables.find((table) => this.getTablePath(table) === foundTablePath);\n\n if (!cachedTable) {\n this.cachedTablePaths[tableName] = this.getTablePath(foundTables[0]);\n this.loadedTables.push(foundTables[0]);\n return foundTables[0];\n } else {\n return cachedTable;\n }\n } else {\n throw new TypeORMError(`Table \"${tableName}\" does not exist.`);\n }\n }\n\n /**\n * Replaces loaded table with given changed table.\n */\n protected replaceCachedTable(table: Table, changedTable: Table): void {\n const oldTablePath = this.getTablePath(table);\n const foundTable = this.loadedTables.find(loadedTable => this.getTablePath(loadedTable) === oldTablePath);\n\n // Clean up the lookup cache..\n for (const [key, cachedPath] of Object.entries(this.cachedTablePaths)) {\n if (cachedPath === oldTablePath) {\n this.cachedTablePaths[key] = this.getTablePath(changedTable);\n }\n }\n\n if (foundTable) {\n foundTable.database = changedTable.database;\n foundTable.schema = changedTable.schema;\n foundTable.name = changedTable.name;\n foundTable.columns = changedTable.columns;\n foundTable.indices = changedTable.indices;\n foundTable.foreignKeys = changedTable.foreignKeys;\n foundTable.uniques = changedTable.uniques;\n foundTable.checks = changedTable.checks;\n foundTable.justCreated = changedTable.justCreated;\n foundTable.engine = changedTable.engine;\n }\n }\n\n protected getTablePath(target: EntityMetadata | Table | View | TableForeignKey | string): string {\n const parsed = this.connection.driver.parseTableName(target);\n\n return this.connection.driver.buildTableName(\n parsed.tableName,\n parsed.schema,\n parsed.database\n );\n }\n\n protected getTypeormMetadataTableName(): string {\n const options = <SqlServerConnectionOptions|PostgresConnectionOptions>this.connection.driver.options;\n return this.connection.driver.buildTableName(this.connection.metadataTableName, options.schema, options.database);\n }\n\n /**\n * Generates SQL query to insert a record into typeorm metadata table.\n */\n protected insertTypeormMetadataSql({\n database,\n schema,\n table,\n type,\n name,\n value\n }: {\n database?: string,\n schema?: string,\n table?: string,\n type: MetadataTableType\n name: string,\n value?: string\n }): Query {\n const [query, parameters] = this.connection.createQueryBuilder()\n .insert()\n .into(this.getTypeormMetadataTableName())\n .values({ database: database, schema: schema, table: table, type: type, name: name, value: value })\n .getQueryAndParameters();\n\n return new Query(query, parameters);\n }\n\n /**\n * Generates SQL query to delete a record from typeorm metadata table.\n */\n protected deleteTypeormMetadataSql({\n database,\n schema,\n table,\n type,\n name\n }: {\n database?: string,\n schema?: string,\n table?: string,\n type: MetadataTableType,\n name: string\n }): Query {\n\n const qb = this.connection.createQueryBuilder();\n const deleteQb = qb.delete()\n .from(this.getTypeormMetadataTableName())\n .where(`${qb.escape(\"type\")} = :type`, { type })\n .andWhere(`${qb.escape(\"name\")} = :name`, { name });\n\n if (database) {\n deleteQb.andWhere(`${qb.escape(\"database\")} = :database`, { database });\n }\n\n if (schema) {\n deleteQb.andWhere(`${qb.escape(\"schema\")} = :schema`, { schema });\n }\n\n if (table) {\n deleteQb.andWhere(`${qb.escape(\"table\")} = :table`, { table });\n }\n\n const [query, parameters] = deleteQb.getQueryAndParameters();\n return new Query(query, parameters);\n }\n\n /**\n * Checks if at least one of column properties was changed.\n * Does not checks column type, length and autoincrement, because these properties changes separately.\n */\n protected isColumnChanged(oldColumn: TableColumn, newColumn: TableColumn, checkDefault?: boolean, checkComment?: boolean): boolean {\n // this logs need to debug issues in column change detection. Do not delete it!\n\n // console.log(\"charset ---------------\");\n // console.log(oldColumn.charset !== newColumn.charset);\n // console.log(oldColumn.charset, newColumn.charset);\n // console.log(\"collation ---------------\");\n // console.log(oldColumn.collation !== newColumn.collation);\n // console.log(oldColumn.collation, newColumn.collation);\n // console.log(\"precision ---------------\");\n // console.log(oldColumn.precision !== newColumn.precision);\n // console.log(oldColumn.precision, newColumn.precision);\n // console.log(\"scale ---------------\");\n // console.log(oldColumn.scale !== newColumn.scale);\n // console.log(oldColumn.scale, newColumn.scale);\n // console.log(\"default ---------------\");\n // console.log((checkDefault && oldColumn.default !== newColumn.default));\n // console.log(oldColumn.default, newColumn.default);\n // console.log(\"isNullable ---------------\");\n // console.log(oldColumn.isNullable !== newColumn.isNullable);\n // console.log(oldColumn.isNullable, newColumn.isNullable);\n // console.log(\"comment ---------------\");\n // console.log((checkComment && oldColumn.comment !== newColumn.comment));\n // console.log(oldColumn.comment, newColumn.comment);\n // console.log(\"enum ---------------\");\n // console.log(!OrmUtils.isArraysEqual(oldColumn.enum || [], newColumn.enum || []));\n // console.log(oldColumn.enum, newColumn.enum);\n\n return oldColumn.charset !== newColumn.charset\n || oldColumn.collation !== newColumn.collation\n || oldColumn.precision !== newColumn.precision\n || oldColumn.scale !== newColumn.scale\n || oldColumn.width !== newColumn.width // MySQL only\n || oldColumn.zerofill !== newColumn.zerofill // MySQL only\n || oldColumn.unsigned !== newColumn.unsigned // MySQL only\n || oldColumn.asExpression !== newColumn.asExpression // MySQL only\n || (checkDefault && oldColumn.default !== newColumn.default)\n || oldColumn.onUpdate !== newColumn.onUpdate // MySQL only\n || oldColumn.isNullable !== newColumn.isNullable\n || (checkComment && oldColumn.comment !== newColumn.comment)\n || !OrmUtils.isArraysEqual(oldColumn.enum || [], newColumn.enum || []);\n }\n\n /**\n * Checks if column length is by default.\n */\n protected isDefaultColumnLength(table: Table, column: TableColumn, length: string): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n const metadata = this.connection.getMetadata(table.name);\n const columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n\n if (columnMetadata) {\n const columnMetadataLength = this.connection.driver.getColumnLength(columnMetadata);\n if (columnMetadataLength)\n return false;\n }\n }\n\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].length) {\n return this.connection.driver.dataTypeDefaults[column.type].length!.toString() === length.toString();\n }\n\n return false;\n }\n\n /**\n * Checks if column precision is by default.\n */\n protected isDefaultColumnPrecision(table: Table, column: TableColumn, precision: number): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n const metadata = this.connection.getMetadata(table.name);\n const columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n if (columnMetadata && columnMetadata.precision !== null && columnMetadata.precision !== undefined)\n return false;\n }\n\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].precision !== null\n && this.connection.driver.dataTypeDefaults[column.type].precision !== undefined)\n return this.connection.driver.dataTypeDefaults[column.type].precision === precision;\n\n return false;\n }\n\n /**\n * Checks if column scale is by default.\n */\n protected isDefaultColumnScale(table: Table, column: TableColumn, scale: number): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n const metadata = this.connection.getMetadata(table.name);\n const columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n if (columnMetadata && columnMetadata.scale !== null && columnMetadata.scale !== undefined)\n return false;\n }\n\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].scale !== null\n && this.connection.driver.dataTypeDefaults[column.type].scale !== undefined)\n return this.connection.driver.dataTypeDefaults[column.type].scale === scale;\n\n return false;\n }\n\n /**\n * Executes sql used special for schema build.\n */\n protected async executeQueries(upQueries: Query|Query[], downQueries: Query|Query[]): Promise<void> {\n if (upQueries instanceof Query)\n upQueries = [upQueries];\n if (downQueries instanceof Query)\n downQueries = [downQueries];\n\n this.sqlInMemory.upQueries.push(...upQueries);\n this.sqlInMemory.downQueries.push(...downQueries);\n\n // if sql-in-memory mode is enabled then simply store sql in memory and return\n if (this.sqlMemoryMode === true)\n return Promise.resolve() as Promise<any>;\n\n for (const {query, parameters} of upQueries) {\n await this.query(query, parameters);\n }\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/query-runner/BaseQueryRunner.ts"],"names":[],"mappings":"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","file":"BaseQueryRunner.js","sourcesContent":["import {PostgresConnectionOptions} from \"../driver/postgres/PostgresConnectionOptions\";\nimport {Query} from \"../driver/Query\";\nimport {SqlInMemory} from \"../driver/SqlInMemory\";\nimport {SqlServerConnectionOptions} from \"../driver/sqlserver/SqlServerConnectionOptions\";\nimport {View} from \"../schema-builder/view/View\";\nimport {Connection} from \"../connection/Connection\";\nimport {Table} from \"../schema-builder/table/Table\";\nimport {EntityManager} from \"../entity-manager/EntityManager\";\nimport {TableColumn} from \"../schema-builder/table/TableColumn\";\nimport {Broadcaster} from \"../subscriber/Broadcaster\";\nimport {ReplicationMode} from \"../driver/types/ReplicationMode\";\nimport { TypeORMError } from \"../error/TypeORMError\";\nimport { EntityMetadata } from \"../metadata/EntityMetadata\";\nimport { TableForeignKey } from \"../schema-builder/table/TableForeignKey\";\nimport { OrmUtils } from \"../util/OrmUtils\";\nimport {MetadataTableType} from \"../driver/types/MetadataTableType\";\n\nexport abstract class BaseQueryRunner {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection used by this query runner.\n */\n connection: Connection;\n\n /**\n * Entity manager working only with current query runner.\n */\n manager: EntityManager;\n\n /**\n * Indicates if connection for this query runner is released.\n * Once its released, query runner cannot run queries anymore.\n */\n isReleased = false;\n\n /**\n * Indicates if transaction is in progress.\n */\n isTransactionActive = false;\n\n /**\n * Stores temporarily user data.\n * Useful for sharing data with subscribers.\n */\n data = {};\n\n /**\n * All synchronized tables in the database.\n */\n loadedTables: Table[] = [];\n\n /**\n * All synchronized views in the database.\n */\n loadedViews: View[] = [];\n\n /**\n * Broadcaster used on this query runner to broadcast entity events.\n */\n broadcaster: Broadcaster;\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Real database connection from a connection pool used to perform queries.\n */\n protected databaseConnection: any;\n\n /**\n * Indicates if special query runner mode in which sql queries won't be executed is enabled.\n */\n protected sqlMemoryMode: boolean = false;\n\n /**\n * Sql-s stored if \"sql in memory\" mode is enabled.\n */\n protected sqlInMemory: SqlInMemory = new SqlInMemory();\n\n /**\n * Mode in which query runner executes.\n * Used for replication.\n * If replication is not setup its value is ignored.\n */\n protected mode: ReplicationMode;\n\n /**\n * current depth of transaction.\n * for transactionDepth > 0 will use SAVEPOINT to start and commit/rollback transaction blocks\n */\n protected transactionDepth = 0;\n\n private cachedTablePaths: Record<string, string> = {};\n\n // -------------------------------------------------------------------------\n // Public Abstract Methods\n // -------------------------------------------------------------------------\n\n /**\n * Executes a given SQL query.\n */\n abstract query(query: string, parameters?: any[], useStructuredResult?: boolean): Promise<any>;\n\n // -------------------------------------------------------------------------\n // Protected Abstract Methods\n // -------------------------------------------------------------------------\n\n protected abstract loadTables(tablePaths?: string[]): Promise<Table[]>;\n\n protected abstract loadViews(tablePaths?: string[]): Promise<View[]>;\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n // Do nothing\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n // Do nothing\n }\n\n /**\n * Loads given table's data from the database.\n */\n async getTable(tablePath: string): Promise<Table|undefined> {\n this.loadedTables = await this.loadTables([tablePath]);\n return this.loadedTables.length > 0 ? this.loadedTables[0] : undefined;\n }\n\n /**\n * Loads all tables (with given names) from the database.\n */\n async getTables(tableNames?: string[]): Promise<Table[]> {\n if (!tableNames) {\n // Don't cache in this case.\n // This is the new case & isn't used anywhere else anyway.\n return await this.loadTables(tableNames);\n }\n\n this.loadedTables = await this.loadTables(tableNames);\n return this.loadedTables;\n }\n\n /**\n * Loads given view's data from the database.\n */\n async getView(viewPath: string): Promise<View|undefined> {\n this.loadedViews = await this.loadViews([viewPath]);\n return this.loadedViews.length > 0 ? this.loadedViews[0] : undefined;\n }\n\n /**\n * Loads given view's data from the database.\n */\n async getViews(viewPaths?: string[]): Promise<View[]> {\n this.loadedViews = await this.loadViews(viewPaths);\n return this.loadedViews;\n }\n\n /**\n * Enables special query runner mode in which sql queries won't be executed,\n * instead they will be memorized into a special variable inside query runner.\n * You can get memorized sql using getMemorySql() method.\n */\n enableSqlMemory(): void {\n this.sqlInMemory = new SqlInMemory();\n this.sqlMemoryMode = true;\n }\n\n /**\n * Disables special query runner mode in which sql queries won't be executed\n * started by calling enableSqlMemory() method.\n *\n * Previously memorized sql will be flushed.\n */\n disableSqlMemory(): void {\n this.sqlInMemory = new SqlInMemory();\n this.sqlMemoryMode = false;\n }\n\n /**\n * Flushes all memorized sqls.\n */\n clearSqlMemory(): void {\n this.sqlInMemory = new SqlInMemory();\n }\n\n /**\n * Gets sql stored in the memory. Parameters in the sql are already replaced.\n */\n getMemorySql(): SqlInMemory {\n return this.sqlInMemory;\n }\n\n /**\n * Executes up sql queries.\n */\n async executeMemoryUpSql(): Promise<void> {\n for (const {query, parameters} of this.sqlInMemory.upQueries) {\n await this.query(query, parameters);\n }\n }\n\n /**\n * Executes down sql queries.\n */\n async executeMemoryDownSql(): Promise<void> {\n for (const {query, parameters} of this.sqlInMemory.downQueries.reverse()) {\n await this.query(query, parameters);\n }\n }\n\n getReplicationMode(): ReplicationMode {\n return this.mode;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets view from previously loaded views, otherwise loads it from database.\n */\n protected async getCachedView(viewName: string): Promise<View> {\n const view = this.loadedViews.find(view => view.name === viewName);\n if (view) return view;\n\n const foundViews = await this.loadViews([viewName]);\n if (foundViews.length > 0) {\n this.loadedViews.push(foundViews[0]);\n return foundViews[0];\n } else {\n throw new TypeORMError(`View \"${viewName}\" does not exist.`);\n }\n }\n\n /**\n * Gets table from previously loaded tables, otherwise loads it from database.\n */\n protected async getCachedTable(tableName: string): Promise<Table> {\n if (tableName in this.cachedTablePaths) {\n const tablePath = this.cachedTablePaths[tableName];\n const table = this.loadedTables.find(table => this.getTablePath(table) === tablePath);\n\n if (table) {\n return table;\n }\n }\n\n const foundTables = await this.loadTables([tableName]);\n\n if (foundTables.length > 0) {\n const foundTablePath = this.getTablePath(foundTables[0]);\n\n const cachedTable = this.loadedTables.find((table) => this.getTablePath(table) === foundTablePath);\n\n if (!cachedTable) {\n this.cachedTablePaths[tableName] = this.getTablePath(foundTables[0]);\n this.loadedTables.push(foundTables[0]);\n return foundTables[0];\n } else {\n return cachedTable;\n }\n } else {\n throw new TypeORMError(`Table \"${tableName}\" does not exist.`);\n }\n }\n\n /**\n * Replaces loaded table with given changed table.\n */\n protected replaceCachedTable(table: Table, changedTable: Table): void {\n const oldTablePath = this.getTablePath(table);\n const foundTable = this.loadedTables.find(loadedTable => this.getTablePath(loadedTable) === oldTablePath);\n\n // Clean up the lookup cache..\n for (const [key, cachedPath] of Object.entries(this.cachedTablePaths)) {\n if (cachedPath === oldTablePath) {\n this.cachedTablePaths[key] = this.getTablePath(changedTable);\n }\n }\n\n if (foundTable) {\n foundTable.database = changedTable.database;\n foundTable.schema = changedTable.schema;\n foundTable.name = changedTable.name;\n foundTable.columns = changedTable.columns;\n foundTable.indices = changedTable.indices;\n foundTable.foreignKeys = changedTable.foreignKeys;\n foundTable.uniques = changedTable.uniques;\n foundTable.checks = changedTable.checks;\n foundTable.justCreated = changedTable.justCreated;\n foundTable.engine = changedTable.engine;\n }\n }\n\n protected getTablePath(target: EntityMetadata | Table | View | TableForeignKey | string): string {\n const parsed = this.connection.driver.parseTableName(target);\n\n return this.connection.driver.buildTableName(\n parsed.tableName,\n parsed.schema,\n parsed.database\n );\n }\n\n protected getTypeormMetadataTableName(): string {\n const options = <SqlServerConnectionOptions|PostgresConnectionOptions>this.connection.driver.options;\n return this.connection.driver.buildTableName(this.connection.metadataTableName, options.schema, options.database);\n }\n\n /**\n * Generates SQL query to insert a record into typeorm metadata table.\n */\n protected insertTypeormMetadataSql({\n database,\n schema,\n table,\n type,\n name,\n value\n }: {\n database?: string,\n schema?: string,\n table?: string,\n type: MetadataTableType\n name: string,\n value?: string\n }): Query {\n const [query, parameters] = this.connection.createQueryBuilder()\n .insert()\n .into(this.getTypeormMetadataTableName())\n .values({ database: database, schema: schema, table: table, type: type, name: name, value: value })\n .getQueryAndParameters();\n\n return new Query(query, parameters);\n }\n\n /**\n * Generates SQL query to delete a record from typeorm metadata table.\n */\n protected deleteTypeormMetadataSql({\n database,\n schema,\n table,\n type,\n name\n }: {\n database?: string,\n schema?: string,\n table?: string,\n type: MetadataTableType,\n name: string\n }): Query {\n\n const qb = this.connection.createQueryBuilder();\n const deleteQb = qb.delete()\n .from(this.getTypeormMetadataTableName())\n .where(`${qb.escape(\"type\")} = :type`, { type })\n .andWhere(`${qb.escape(\"name\")} = :name`, { name });\n\n if (database) {\n deleteQb.andWhere(`${qb.escape(\"database\")} = :database`, { database });\n }\n\n if (schema) {\n deleteQb.andWhere(`${qb.escape(\"schema\")} = :schema`, { schema });\n }\n\n if (table) {\n deleteQb.andWhere(`${qb.escape(\"table\")} = :table`, { table });\n }\n\n const [query, parameters] = deleteQb.getQueryAndParameters();\n return new Query(query, parameters);\n }\n\n /**\n * Checks if at least one of column properties was changed.\n * Does not checks column type, length and autoincrement, because these properties changes separately.\n */\n protected isColumnChanged(oldColumn: TableColumn, newColumn: TableColumn, checkDefault?: boolean, checkComment?: boolean): boolean {\n // this logs need to debug issues in column change detection. Do not delete it!\n\n // console.log(\"charset ---------------\");\n // console.log(oldColumn.charset !== newColumn.charset);\n // console.log(oldColumn.charset, newColumn.charset);\n // console.log(\"collation ---------------\");\n // console.log(oldColumn.collation !== newColumn.collation);\n // console.log(oldColumn.collation, newColumn.collation);\n // console.log(\"precision ---------------\");\n // console.log(oldColumn.precision !== newColumn.precision);\n // console.log(oldColumn.precision, newColumn.precision);\n // console.log(\"scale ---------------\");\n // console.log(oldColumn.scale !== newColumn.scale);\n // console.log(oldColumn.scale, newColumn.scale);\n // console.log(\"default ---------------\");\n // console.log((checkDefault && oldColumn.default !== newColumn.default));\n // console.log(oldColumn.default, newColumn.default);\n // console.log(\"isNullable ---------------\");\n // console.log(oldColumn.isNullable !== newColumn.isNullable);\n // console.log(oldColumn.isNullable, newColumn.isNullable);\n // console.log(\"comment ---------------\");\n // console.log((checkComment && oldColumn.comment !== newColumn.comment));\n // console.log(oldColumn.comment, newColumn.comment);\n // console.log(\"enum ---------------\");\n // console.log(!OrmUtils.isArraysEqual(oldColumn.enum || [], newColumn.enum || []));\n // console.log(oldColumn.enum, newColumn.enum);\n\n return oldColumn.charset !== newColumn.charset\n || oldColumn.collation !== newColumn.collation\n || oldColumn.precision !== newColumn.precision\n || oldColumn.scale !== newColumn.scale\n || oldColumn.width !== newColumn.width // MySQL only\n || oldColumn.zerofill !== newColumn.zerofill // MySQL only\n || oldColumn.unsigned !== newColumn.unsigned // MySQL only\n || oldColumn.asExpression !== newColumn.asExpression // MySQL only\n || (checkDefault && oldColumn.default !== newColumn.default)\n || oldColumn.onUpdate !== newColumn.onUpdate // MySQL only\n || oldColumn.isNullable !== newColumn.isNullable\n || (checkComment && oldColumn.comment !== newColumn.comment)\n || !OrmUtils.isArraysEqual(oldColumn.enum || [], newColumn.enum || []);\n }\n\n /**\n * Checks if column length is by default.\n */\n protected isDefaultColumnLength(table: Table, column: TableColumn, length: string): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n const metadata = this.connection.getMetadata(table.name);\n const columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n\n if (columnMetadata) {\n const columnMetadataLength = this.connection.driver.getColumnLength(columnMetadata);\n if (columnMetadataLength)\n return false;\n }\n }\n\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].length) {\n return this.connection.driver.dataTypeDefaults[column.type].length!.toString() === length.toString();\n }\n\n return false;\n }\n\n /**\n * Checks if column precision is by default.\n */\n protected isDefaultColumnPrecision(table: Table, column: TableColumn, precision: number): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n const metadata = this.connection.getMetadata(table.name);\n const columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n if (columnMetadata && columnMetadata.precision !== null && columnMetadata.precision !== undefined)\n return false;\n }\n\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].precision !== null\n && this.connection.driver.dataTypeDefaults[column.type].precision !== undefined)\n return this.connection.driver.dataTypeDefaults[column.type].precision === precision;\n\n return false;\n }\n\n /**\n * Checks if column scale is by default.\n */\n protected isDefaultColumnScale(table: Table, column: TableColumn, scale: number): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n const metadata = this.connection.getMetadata(table.name);\n const columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n if (columnMetadata && columnMetadata.scale !== null && columnMetadata.scale !== undefined)\n return false;\n }\n\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].scale !== null\n && this.connection.driver.dataTypeDefaults[column.type].scale !== undefined)\n return this.connection.driver.dataTypeDefaults[column.type].scale === scale;\n\n return false;\n }\n\n /**\n * Executes sql used special for schema build.\n */\n protected async executeQueries(upQueries: Query|Query[], downQueries: Query|Query[]): Promise<void> {\n if (upQueries instanceof Query)\n upQueries = [upQueries];\n if (downQueries instanceof Query)\n downQueries = [downQueries];\n\n this.sqlInMemory.upQueries.push(...upQueries);\n this.sqlInMemory.downQueries.push(...downQueries);\n\n // if sql-in-memory mode is enabled then simply store sql in memory and return\n if (this.sqlMemoryMode === true)\n return Promise.resolve() as Promise<any>;\n\n for (const {query, parameters} of upQueries) {\n await this.query(query, parameters);\n }\n }\n\n}\n"],"sourceRoot":".."}
@@ -48,7 +48,7 @@ var TreeRepository = /** @class */ (function (_super) {
48
48
  var qb = this.createQueryBuilder("treeEntity");
49
49
  FindOptionsUtils.applyOptionsToTreeQueryBuilder(qb, options);
50
50
  return qb
51
- .where(escapeAlias("treeEntity") + "." + escapeColumn(parentPropertyName) + " IS NULL")
51
+ .where("".concat(escapeAlias("treeEntity"), ".").concat(escapeColumn(parentPropertyName), " IS NULL"))
52
52
  .getMany();
53
53
  };
54
54
  /**
@@ -129,14 +129,14 @@ var TreeRepository = /** @class */ (function (_super) {
129
129
  .createQueryBuilder(alias)
130
130
  .where(function (qb) {
131
131
  var subQuery = qb.subQuery()
132
- .select(_this.metadata.targetName + "." + _this.metadata.materializedPathColumn.propertyPath, "path")
132
+ .select("".concat(_this.metadata.targetName, ".").concat(_this.metadata.materializedPathColumn.propertyPath), "path")
133
133
  .from(_this.metadata.target, _this.metadata.targetName)
134
134
  .whereInIds(_this.metadata.getEntityIdMap(entity));
135
135
  if (_this.manager.connection.driver instanceof AbstractSqliteDriver) {
136
- return alias + "." + _this.metadata.materializedPathColumn.propertyPath + " LIKE " + subQuery.getQuery() + " || '%'";
136
+ return "".concat(alias, ".").concat(_this.metadata.materializedPathColumn.propertyPath, " LIKE ").concat(subQuery.getQuery(), " || '%'");
137
137
  }
138
138
  else {
139
- return alias + "." + _this.metadata.materializedPathColumn.propertyPath + " LIKE NULLIF(CONCAT(" + subQuery.getQuery() + ", '%'), '%')";
139
+ return "".concat(alias, ".").concat(_this.metadata.materializedPathColumn.propertyPath, " LIKE NULLIF(CONCAT(").concat(subQuery.getQuery(), ", '%'), '%')");
140
140
  }
141
141
  });
142
142
  }
@@ -221,14 +221,14 @@ var TreeRepository = /** @class */ (function (_super) {
221
221
  .createQueryBuilder(alias)
222
222
  .where(function (qb) {
223
223
  var subQuery = qb.subQuery()
224
- .select(_this.metadata.targetName + "." + _this.metadata.materializedPathColumn.propertyPath, "path")
224
+ .select("".concat(_this.metadata.targetName, ".").concat(_this.metadata.materializedPathColumn.propertyPath), "path")
225
225
  .from(_this.metadata.target, _this.metadata.targetName)
226
226
  .whereInIds(_this.metadata.getEntityIdMap(entity));
227
227
  if (_this.manager.connection.driver instanceof AbstractSqliteDriver) {
228
- return subQuery.getQuery() + " LIKE " + alias + "." + _this.metadata.materializedPathColumn.propertyPath + " || '%'";
228
+ return "".concat(subQuery.getQuery(), " LIKE ").concat(alias, ".").concat(_this.metadata.materializedPathColumn.propertyPath, " || '%'");
229
229
  }
230
230
  else {
231
- return subQuery.getQuery() + " LIKE CONCAT(" + alias + "." + _this.metadata.materializedPathColumn.propertyPath + ", '%')";
231
+ return "".concat(subQuery.getQuery(), " LIKE CONCAT(").concat(alias, ".").concat(_this.metadata.materializedPathColumn.propertyPath, ", '%')");
232
232
  }
233
233
  });
234
234
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/repository/TreeRepository.ts"],"names":[],"mappings":"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","file":"TreeRepository.js","sourcesContent":["import {Repository} from \"./Repository\";\nimport {SelectQueryBuilder} from \"../query-builder/SelectQueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {AbstractSqliteDriver} from \"../driver/sqlite-abstract/AbstractSqliteDriver\";\nimport { TypeORMError } from \"../error/TypeORMError\";\nimport { FindTreeOptions } from \"../find-options/FindTreeOptions\";\nimport { FindOptionsUtils } from \"../find-options/FindOptionsUtils\";\nimport { FindTreesOptions } from \"./FindTreesOptions\";\n\n/**\n * Repository with additional functions to work with trees.\n *\n * @see Repository\n */\nexport class TreeRepository<Entity> extends Repository<Entity> {\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets complete trees for all roots in the table.\n */\n async findTrees(options?: FindTreeOptions): Promise<Entity[]> {\n const roots = await this.findRoots(options);\n await Promise.all(roots.map(root => this.findDescendantsTree(root, options)));\n return roots;\n }\n\n /**\n * Roots are entities that have no ancestors. Finds them all.\n */\n findRoots(options?: FindTreeOptions): Promise<Entity[]> {\n const escapeAlias = (alias: string) => this.manager.connection.driver.escape(alias);\n const escapeColumn = (column: string) => this.manager.connection.driver.escape(column);\n\n const joinColumn = this.metadata.treeParentRelation!.joinColumns[0];\n const parentPropertyName = joinColumn.givenDatabaseName || joinColumn.databaseName;\n\n const qb = this.createQueryBuilder(\"treeEntity\");\n FindOptionsUtils.applyOptionsToTreeQueryBuilder(qb, options);\n\n return qb\n .where(`${escapeAlias(\"treeEntity\")}.${escapeColumn(parentPropertyName)} IS NULL`)\n .getMany();\n }\n\n /**\n * Gets all children (descendants) of the given entity. Returns them all in a flat array.\n */\n findDescendants(entity: Entity, options?: FindTreeOptions): Promise<Entity[]> {\n const qb = this.createDescendantsQueryBuilder(\"treeEntity\", \"treeClosure\", entity);\n FindOptionsUtils.applyOptionsToTreeQueryBuilder(qb, options);\n return qb.getMany();\n }\n\n /**\n * Gets all children (descendants) of the given entity. Returns them in a tree - nested into each other.\n */\n async findDescendantsTree(entity: Entity, options?: FindTreeOptions): Promise<Entity> {\n // todo: throw exception if there is no column of this relation?\n\n const qb: SelectQueryBuilder<Entity> = this.createDescendantsQueryBuilder(\"treeEntity\", \"treeClosure\", entity);\n FindOptionsUtils.applyOptionsToTreeQueryBuilder(qb, options);\n\n const entities = await qb.getRawAndEntities();\n const relationMaps = this.createRelationMaps(\"treeEntity\", entities.raw);\n this.buildChildrenEntityTree(entity, entities.entities, relationMaps, {\n depth: -1,\n ...options\n\n });\n\n return entity;\n }\n\n /**\n * Gets number of descendants of the entity.\n */\n countDescendants(entity: Entity): Promise<number> {\n return this\n .createDescendantsQueryBuilder(\"treeEntity\", \"treeClosure\", entity)\n .getCount();\n }\n\n /**\n * Creates a query builder used to get descendants of the entities in a tree.\n */\n createDescendantsQueryBuilder(alias: string, closureTableAlias: string, entity: Entity): SelectQueryBuilder<Entity> {\n\n // create shortcuts for better readability\n const escape = (alias: string) => this.manager.connection.driver.escape(alias);\n\n if (this.metadata.treeType === \"closure-table\") {\n\n const joinCondition = this.metadata.closureJunctionTable.descendantColumns.map(column => {\n return escape(closureTableAlias) + \".\" + escape(column.propertyPath) + \" = \" + escape(alias) + \".\" + escape(column.referencedColumn!.propertyPath);\n }).join(\" AND \");\n\n const parameters: ObjectLiteral = {};\n const whereCondition = this.metadata.closureJunctionTable.ancestorColumns.map(column => {\n parameters[column.referencedColumn!.propertyName] = column.referencedColumn!.getEntityValue(entity);\n return escape(closureTableAlias) + \".\" + escape(column.propertyPath) + \" = :\" + column.referencedColumn!.propertyName;\n }).join(\" AND \");\n\n return this\n .createQueryBuilder(alias)\n .innerJoin(this.metadata.closureJunctionTable.tableName, closureTableAlias, joinCondition)\n .where(whereCondition)\n .setParameters(parameters);\n\n } else if (this.metadata.treeType === \"nested-set\") {\n\n const whereCondition = alias + \".\" + this.metadata.nestedSetLeftColumn!.propertyPath + \" BETWEEN \" +\n \"joined.\" + this.metadata.nestedSetLeftColumn!.propertyPath + \" AND joined.\" + this.metadata.nestedSetRightColumn!.propertyPath;\n const parameters: ObjectLiteral = {};\n const joinCondition = this.metadata.treeParentRelation!.joinColumns.map(joinColumn => {\n const parameterName = joinColumn.referencedColumn!.propertyPath.replace(\".\", \"_\");\n parameters[parameterName] = joinColumn.referencedColumn!.getEntityValue(entity);\n return \"joined.\" + joinColumn.referencedColumn!.propertyPath + \" = :\" + parameterName;\n }).join(\" AND \");\n\n return this\n .createQueryBuilder(alias)\n .innerJoin(this.metadata.targetName, \"joined\", whereCondition)\n .where(joinCondition, parameters);\n\n } else if (this.metadata.treeType === \"materialized-path\") {\n return this\n .createQueryBuilder(alias)\n .where(qb => {\n const subQuery = qb.subQuery()\n .select(`${this.metadata.targetName}.${this.metadata.materializedPathColumn!.propertyPath}`, \"path\")\n .from(this.metadata.target, this.metadata.targetName)\n .whereInIds(this.metadata.getEntityIdMap(entity));\n\n if (this.manager.connection.driver instanceof AbstractSqliteDriver) {\n return `${alias}.${this.metadata.materializedPathColumn!.propertyPath} LIKE ${subQuery.getQuery()} || '%'`;\n } else {\n return `${alias}.${this.metadata.materializedPathColumn!.propertyPath} LIKE NULLIF(CONCAT(${subQuery.getQuery()}, '%'), '%')`;\n }\n });\n }\n\n throw new TypeORMError(`Supported only in tree entities`);\n }\n\n /**\n * Gets all parents (ancestors) of the given entity. Returns them all in a flat array.\n */\n findAncestors(entity: Entity, options?: FindTreeOptions): Promise<Entity[]> {\n const qb = this.createAncestorsQueryBuilder(\"treeEntity\", \"treeClosure\", entity);\n FindOptionsUtils.applyOptionsToTreeQueryBuilder(qb, options);\n return qb.getMany();\n }\n\n /**\n * Gets all parents (ancestors) of the given entity. Returns them in a tree - nested into each other.\n */\n async findAncestorsTree(entity: Entity, options?: FindTreeOptions): Promise<Entity> {\n // todo: throw exception if there is no column of this relation?\n const qb = this.createAncestorsQueryBuilder(\"treeEntity\", \"treeClosure\", entity);\n FindOptionsUtils.applyOptionsToTreeQueryBuilder(qb, options);\n\n const entities = await qb.getRawAndEntities();\n const relationMaps = this.createRelationMaps(\"treeEntity\", entities.raw);\n this.buildParentEntityTree(entity, entities.entities, relationMaps);\n return entity;\n }\n\n /**\n * Gets number of ancestors of the entity.\n */\n countAncestors(entity: Entity): Promise<number> {\n return this\n .createAncestorsQueryBuilder(\"treeEntity\", \"treeClosure\", entity)\n .getCount();\n }\n\n /**\n * Creates a query builder used to get ancestors of the entities in the tree.\n */\n createAncestorsQueryBuilder(alias: string, closureTableAlias: string, entity: Entity): SelectQueryBuilder<Entity> {\n\n // create shortcuts for better readability\n // const escape = (alias: string) => this.manager.connection.driver.escape(alias);\n\n if (this.metadata.treeType === \"closure-table\") {\n const joinCondition = this.metadata.closureJunctionTable.ancestorColumns.map(column => {\n return closureTableAlias + \".\" + column.propertyPath + \" = \" + alias + \".\" + column.referencedColumn!.propertyPath;\n }).join(\" AND \");\n\n const parameters: ObjectLiteral = {};\n const whereCondition = this.metadata.closureJunctionTable.descendantColumns.map(column => {\n parameters[column.referencedColumn!.propertyName] = column.referencedColumn!.getEntityValue(entity);\n return closureTableAlias + \".\" + column.propertyPath + \" = :\" + column.referencedColumn!.propertyName;\n }).join(\" AND \");\n\n return this\n .createQueryBuilder(alias)\n .innerJoin(this.metadata.closureJunctionTable.tableName, closureTableAlias, joinCondition)\n .where(whereCondition)\n .setParameters(parameters);\n\n } else if (this.metadata.treeType === \"nested-set\") {\n\n const joinCondition = \"joined.\" + this.metadata.nestedSetLeftColumn!.propertyPath + \" BETWEEN \" +\n alias + \".\" + this.metadata.nestedSetLeftColumn!.propertyPath + \" AND \" + alias + \".\" + this.metadata.nestedSetRightColumn!.propertyPath;\n const parameters: ObjectLiteral = {};\n const whereCondition = this.metadata.treeParentRelation!.joinColumns.map(joinColumn => {\n const parameterName = joinColumn.referencedColumn!.propertyPath.replace(\".\", \"_\");\n parameters[parameterName] = joinColumn.referencedColumn!.getEntityValue(entity);\n return \"joined.\" + joinColumn.referencedColumn!.propertyPath + \" = :\" + parameterName;\n }).join(\" AND \");\n\n return this\n .createQueryBuilder(alias)\n .innerJoin(this.metadata.targetName, \"joined\", joinCondition)\n .where(whereCondition, parameters);\n\n\n } else if (this.metadata.treeType === \"materialized-path\") {\n // example: SELECT * FROM category category WHERE (SELECT mpath FROM `category` WHERE id = 2) LIKE CONCAT(category.mpath, '%');\n return this\n .createQueryBuilder(alias)\n .where(qb => {\n const subQuery = qb.subQuery()\n .select(`${this.metadata.targetName}.${this.metadata.materializedPathColumn!.propertyPath}`, \"path\")\n .from(this.metadata.target, this.metadata.targetName)\n .whereInIds(this.metadata.getEntityIdMap(entity));\n\n if (this.manager.connection.driver instanceof AbstractSqliteDriver) {\n return `${subQuery.getQuery()} LIKE ${alias}.${this.metadata.materializedPathColumn!.propertyPath} || '%'`;\n\n } else {\n return `${subQuery.getQuery()} LIKE CONCAT(${alias}.${this.metadata.materializedPathColumn!.propertyPath}, '%')`;\n }\n });\n }\n\n throw new TypeORMError(`Supported only in tree entities`);\n }\n\n /**\n * Moves entity to the children of then given entity.\n *\n move(entity: Entity, to: Entity): Promise<void> {\n return Promise.resolve();\n } */\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n protected createRelationMaps(alias: string, rawResults: any[]): { id: any, parentId: any }[] {\n return rawResults.map(rawResult => {\n const joinColumn = this.metadata.treeParentRelation!.joinColumns[0];\n // fixes issue #2518, default to databaseName property when givenDatabaseName is not set\n const joinColumnName = joinColumn.givenDatabaseName || joinColumn.databaseName;\n const id = rawResult[alias + \"_\" + this.metadata.primaryColumns[0].databaseName];\n const parentId = rawResult[alias + \"_\" + joinColumnName];\n return {\n id: this.manager.connection.driver.prepareHydratedValue(id, this.metadata.primaryColumns[0]),\n parentId: this.manager.connection.driver.prepareHydratedValue(parentId, joinColumn),\n };\n });\n }\n\n protected buildChildrenEntityTree(entity: any, entities: any[], relationMaps: { id: any, parentId: any }[], options: (FindTreesOptions & { depth: number })): void {\n const childProperty = this.metadata.treeChildrenRelation!.propertyName;\n if (options.depth === 0) {\n entity[childProperty] = [];\n return;\n }\n const parentEntityId = this.metadata.primaryColumns[0].getEntityValue(entity);\n const childRelationMaps = relationMaps.filter(relationMap => relationMap.parentId === parentEntityId);\n const childIds = new Set(childRelationMaps.map(relationMap => relationMap.id));\n entity[childProperty] = entities.filter(entity => childIds.has(this.metadata.primaryColumns[0].getEntityValue(entity)));\n entity[childProperty].forEach((childEntity: any) => {\n this.buildChildrenEntityTree(childEntity, entities, relationMaps, { ...options, depth: options.depth - 1 });\n });\n }\n\n protected buildParentEntityTree(entity: any, entities: any[], relationMaps: { id: any, parentId: any }[]): void {\n const parentProperty = this.metadata.treeParentRelation!.propertyName;\n const entityId = this.metadata.primaryColumns[0].getEntityValue(entity);\n const parentRelationMap = relationMaps.find(relationMap => relationMap.id === entityId);\n const parentEntity = entities.find(entity => {\n if (!parentRelationMap)\n return false;\n\n return this.metadata.primaryColumns[0].getEntityValue(entity) === parentRelationMap.parentId;\n });\n if (parentEntity) {\n entity[parentProperty] = parentEntity;\n this.buildParentEntityTree(entity[parentProperty], entities, relationMaps);\n }\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/repository/TreeRepository.ts"],"names":[],"mappings":"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","file":"TreeRepository.js","sourcesContent":["import {Repository} from \"./Repository\";\nimport {SelectQueryBuilder} from \"../query-builder/SelectQueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {AbstractSqliteDriver} from \"../driver/sqlite-abstract/AbstractSqliteDriver\";\nimport { TypeORMError } from \"../error/TypeORMError\";\nimport { FindTreeOptions } from \"../find-options/FindTreeOptions\";\nimport { FindOptionsUtils } from \"../find-options/FindOptionsUtils\";\nimport { FindTreesOptions } from \"./FindTreesOptions\";\n\n/**\n * Repository with additional functions to work with trees.\n *\n * @see Repository\n */\nexport class TreeRepository<Entity> extends Repository<Entity> {\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets complete trees for all roots in the table.\n */\n async findTrees(options?: FindTreeOptions): Promise<Entity[]> {\n const roots = await this.findRoots(options);\n await Promise.all(roots.map(root => this.findDescendantsTree(root, options)));\n return roots;\n }\n\n /**\n * Roots are entities that have no ancestors. Finds them all.\n */\n findRoots(options?: FindTreeOptions): Promise<Entity[]> {\n const escapeAlias = (alias: string) => this.manager.connection.driver.escape(alias);\n const escapeColumn = (column: string) => this.manager.connection.driver.escape(column);\n\n const joinColumn = this.metadata.treeParentRelation!.joinColumns[0];\n const parentPropertyName = joinColumn.givenDatabaseName || joinColumn.databaseName;\n\n const qb = this.createQueryBuilder(\"treeEntity\");\n FindOptionsUtils.applyOptionsToTreeQueryBuilder(qb, options);\n\n return qb\n .where(`${escapeAlias(\"treeEntity\")}.${escapeColumn(parentPropertyName)} IS NULL`)\n .getMany();\n }\n\n /**\n * Gets all children (descendants) of the given entity. Returns them all in a flat array.\n */\n findDescendants(entity: Entity, options?: FindTreeOptions): Promise<Entity[]> {\n const qb = this.createDescendantsQueryBuilder(\"treeEntity\", \"treeClosure\", entity);\n FindOptionsUtils.applyOptionsToTreeQueryBuilder(qb, options);\n return qb.getMany();\n }\n\n /**\n * Gets all children (descendants) of the given entity. Returns them in a tree - nested into each other.\n */\n async findDescendantsTree(entity: Entity, options?: FindTreeOptions): Promise<Entity> {\n // todo: throw exception if there is no column of this relation?\n\n const qb: SelectQueryBuilder<Entity> = this.createDescendantsQueryBuilder(\"treeEntity\", \"treeClosure\", entity);\n FindOptionsUtils.applyOptionsToTreeQueryBuilder(qb, options);\n\n const entities = await qb.getRawAndEntities();\n const relationMaps = this.createRelationMaps(\"treeEntity\", entities.raw);\n this.buildChildrenEntityTree(entity, entities.entities, relationMaps, {\n depth: -1,\n ...options\n\n });\n\n return entity;\n }\n\n /**\n * Gets number of descendants of the entity.\n */\n countDescendants(entity: Entity): Promise<number> {\n return this\n .createDescendantsQueryBuilder(\"treeEntity\", \"treeClosure\", entity)\n .getCount();\n }\n\n /**\n * Creates a query builder used to get descendants of the entities in a tree.\n */\n createDescendantsQueryBuilder(alias: string, closureTableAlias: string, entity: Entity): SelectQueryBuilder<Entity> {\n\n // create shortcuts for better readability\n const escape = (alias: string) => this.manager.connection.driver.escape(alias);\n\n if (this.metadata.treeType === \"closure-table\") {\n\n const joinCondition = this.metadata.closureJunctionTable.descendantColumns.map(column => {\n return escape(closureTableAlias) + \".\" + escape(column.propertyPath) + \" = \" + escape(alias) + \".\" + escape(column.referencedColumn!.propertyPath);\n }).join(\" AND \");\n\n const parameters: ObjectLiteral = {};\n const whereCondition = this.metadata.closureJunctionTable.ancestorColumns.map(column => {\n parameters[column.referencedColumn!.propertyName] = column.referencedColumn!.getEntityValue(entity);\n return escape(closureTableAlias) + \".\" + escape(column.propertyPath) + \" = :\" + column.referencedColumn!.propertyName;\n }).join(\" AND \");\n\n return this\n .createQueryBuilder(alias)\n .innerJoin(this.metadata.closureJunctionTable.tableName, closureTableAlias, joinCondition)\n .where(whereCondition)\n .setParameters(parameters);\n\n } else if (this.metadata.treeType === \"nested-set\") {\n\n const whereCondition = alias + \".\" + this.metadata.nestedSetLeftColumn!.propertyPath + \" BETWEEN \" +\n \"joined.\" + this.metadata.nestedSetLeftColumn!.propertyPath + \" AND joined.\" + this.metadata.nestedSetRightColumn!.propertyPath;\n const parameters: ObjectLiteral = {};\n const joinCondition = this.metadata.treeParentRelation!.joinColumns.map(joinColumn => {\n const parameterName = joinColumn.referencedColumn!.propertyPath.replace(\".\", \"_\");\n parameters[parameterName] = joinColumn.referencedColumn!.getEntityValue(entity);\n return \"joined.\" + joinColumn.referencedColumn!.propertyPath + \" = :\" + parameterName;\n }).join(\" AND \");\n\n return this\n .createQueryBuilder(alias)\n .innerJoin(this.metadata.targetName, \"joined\", whereCondition)\n .where(joinCondition, parameters);\n\n } else if (this.metadata.treeType === \"materialized-path\") {\n return this\n .createQueryBuilder(alias)\n .where(qb => {\n const subQuery = qb.subQuery()\n .select(`${this.metadata.targetName}.${this.metadata.materializedPathColumn!.propertyPath}`, \"path\")\n .from(this.metadata.target, this.metadata.targetName)\n .whereInIds(this.metadata.getEntityIdMap(entity));\n\n if (this.manager.connection.driver instanceof AbstractSqliteDriver) {\n return `${alias}.${this.metadata.materializedPathColumn!.propertyPath} LIKE ${subQuery.getQuery()} || '%'`;\n } else {\n return `${alias}.${this.metadata.materializedPathColumn!.propertyPath} LIKE NULLIF(CONCAT(${subQuery.getQuery()}, '%'), '%')`;\n }\n });\n }\n\n throw new TypeORMError(`Supported only in tree entities`);\n }\n\n /**\n * Gets all parents (ancestors) of the given entity. Returns them all in a flat array.\n */\n findAncestors(entity: Entity, options?: FindTreeOptions): Promise<Entity[]> {\n const qb = this.createAncestorsQueryBuilder(\"treeEntity\", \"treeClosure\", entity);\n FindOptionsUtils.applyOptionsToTreeQueryBuilder(qb, options);\n return qb.getMany();\n }\n\n /**\n * Gets all parents (ancestors) of the given entity. Returns them in a tree - nested into each other.\n */\n async findAncestorsTree(entity: Entity, options?: FindTreeOptions): Promise<Entity> {\n // todo: throw exception if there is no column of this relation?\n const qb = this.createAncestorsQueryBuilder(\"treeEntity\", \"treeClosure\", entity);\n FindOptionsUtils.applyOptionsToTreeQueryBuilder(qb, options);\n\n const entities = await qb.getRawAndEntities();\n const relationMaps = this.createRelationMaps(\"treeEntity\", entities.raw);\n this.buildParentEntityTree(entity, entities.entities, relationMaps);\n return entity;\n }\n\n /**\n * Gets number of ancestors of the entity.\n */\n countAncestors(entity: Entity): Promise<number> {\n return this\n .createAncestorsQueryBuilder(\"treeEntity\", \"treeClosure\", entity)\n .getCount();\n }\n\n /**\n * Creates a query builder used to get ancestors of the entities in the tree.\n */\n createAncestorsQueryBuilder(alias: string, closureTableAlias: string, entity: Entity): SelectQueryBuilder<Entity> {\n\n // create shortcuts for better readability\n // const escape = (alias: string) => this.manager.connection.driver.escape(alias);\n\n if (this.metadata.treeType === \"closure-table\") {\n const joinCondition = this.metadata.closureJunctionTable.ancestorColumns.map(column => {\n return closureTableAlias + \".\" + column.propertyPath + \" = \" + alias + \".\" + column.referencedColumn!.propertyPath;\n }).join(\" AND \");\n\n const parameters: ObjectLiteral = {};\n const whereCondition = this.metadata.closureJunctionTable.descendantColumns.map(column => {\n parameters[column.referencedColumn!.propertyName] = column.referencedColumn!.getEntityValue(entity);\n return closureTableAlias + \".\" + column.propertyPath + \" = :\" + column.referencedColumn!.propertyName;\n }).join(\" AND \");\n\n return this\n .createQueryBuilder(alias)\n .innerJoin(this.metadata.closureJunctionTable.tableName, closureTableAlias, joinCondition)\n .where(whereCondition)\n .setParameters(parameters);\n\n } else if (this.metadata.treeType === \"nested-set\") {\n\n const joinCondition = \"joined.\" + this.metadata.nestedSetLeftColumn!.propertyPath + \" BETWEEN \" +\n alias + \".\" + this.metadata.nestedSetLeftColumn!.propertyPath + \" AND \" + alias + \".\" + this.metadata.nestedSetRightColumn!.propertyPath;\n const parameters: ObjectLiteral = {};\n const whereCondition = this.metadata.treeParentRelation!.joinColumns.map(joinColumn => {\n const parameterName = joinColumn.referencedColumn!.propertyPath.replace(\".\", \"_\");\n parameters[parameterName] = joinColumn.referencedColumn!.getEntityValue(entity);\n return \"joined.\" + joinColumn.referencedColumn!.propertyPath + \" = :\" + parameterName;\n }).join(\" AND \");\n\n return this\n .createQueryBuilder(alias)\n .innerJoin(this.metadata.targetName, \"joined\", joinCondition)\n .where(whereCondition, parameters);\n\n\n } else if (this.metadata.treeType === \"materialized-path\") {\n // example: SELECT * FROM category category WHERE (SELECT mpath FROM `category` WHERE id = 2) LIKE CONCAT(category.mpath, '%');\n return this\n .createQueryBuilder(alias)\n .where(qb => {\n const subQuery = qb.subQuery()\n .select(`${this.metadata.targetName}.${this.metadata.materializedPathColumn!.propertyPath}`, \"path\")\n .from(this.metadata.target, this.metadata.targetName)\n .whereInIds(this.metadata.getEntityIdMap(entity));\n\n if (this.manager.connection.driver instanceof AbstractSqliteDriver) {\n return `${subQuery.getQuery()} LIKE ${alias}.${this.metadata.materializedPathColumn!.propertyPath} || '%'`;\n\n } else {\n return `${subQuery.getQuery()} LIKE CONCAT(${alias}.${this.metadata.materializedPathColumn!.propertyPath}, '%')`;\n }\n });\n }\n\n throw new TypeORMError(`Supported only in tree entities`);\n }\n\n /**\n * Moves entity to the children of then given entity.\n *\n move(entity: Entity, to: Entity): Promise<void> {\n return Promise.resolve();\n } */\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n protected createRelationMaps(alias: string, rawResults: any[]): { id: any, parentId: any }[] {\n return rawResults.map(rawResult => {\n const joinColumn = this.metadata.treeParentRelation!.joinColumns[0];\n // fixes issue #2518, default to databaseName property when givenDatabaseName is not set\n const joinColumnName = joinColumn.givenDatabaseName || joinColumn.databaseName;\n const id = rawResult[alias + \"_\" + this.metadata.primaryColumns[0].databaseName];\n const parentId = rawResult[alias + \"_\" + joinColumnName];\n return {\n id: this.manager.connection.driver.prepareHydratedValue(id, this.metadata.primaryColumns[0]),\n parentId: this.manager.connection.driver.prepareHydratedValue(parentId, joinColumn),\n };\n });\n }\n\n protected buildChildrenEntityTree(entity: any, entities: any[], relationMaps: { id: any, parentId: any }[], options: (FindTreesOptions & { depth: number })): void {\n const childProperty = this.metadata.treeChildrenRelation!.propertyName;\n if (options.depth === 0) {\n entity[childProperty] = [];\n return;\n }\n const parentEntityId = this.metadata.primaryColumns[0].getEntityValue(entity);\n const childRelationMaps = relationMaps.filter(relationMap => relationMap.parentId === parentEntityId);\n const childIds = new Set(childRelationMaps.map(relationMap => relationMap.id));\n entity[childProperty] = entities.filter(entity => childIds.has(this.metadata.primaryColumns[0].getEntityValue(entity)));\n entity[childProperty].forEach((childEntity: any) => {\n this.buildChildrenEntityTree(childEntity, entities, relationMaps, { ...options, depth: options.depth - 1 });\n });\n }\n\n protected buildParentEntityTree(entity: any, entities: any[], relationMaps: { id: any, parentId: any }[]): void {\n const parentProperty = this.metadata.treeParentRelation!.propertyName;\n const entityId = this.metadata.primaryColumns[0].getEntityValue(entity);\n const parentRelationMap = relationMaps.find(relationMap => relationMap.id === entityId);\n const parentEntity = entities.find(entity => {\n if (!parentRelationMap)\n return false;\n\n return this.metadata.primaryColumns[0].getEntityValue(entity) === parentRelationMap.parentId;\n });\n if (parentEntity) {\n entity[parentProperty] = parentEntity;\n this.buildParentEntityTree(entity[parentProperty], entities, relationMaps);\n }\n }\n\n}\n"],"sourceRoot":".."}