typeorm 0.2.27 → 0.2.28

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 (674) hide show
  1. package/browser/connection/Connection.d.ts +2 -2
  2. package/browser/connection/Connection.js +2 -2
  3. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  4. package/browser/connection/ConnectionOptionsReader.d.ts +3 -3
  5. package/browser/connection/ConnectionOptionsReader.js +3 -3
  6. package/browser/driver/DriverFactory.js.map +1 -1
  7. package/browser/driver/DriverUtils.js.map +1 -1
  8. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  9. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  10. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
  11. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  12. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  13. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  14. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  15. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  16. package/browser/driver/postgres/PostgresDriver.d.ts +1 -1
  17. package/browser/driver/postgres/PostgresDriver.js +1 -1
  18. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  19. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  20. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  21. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  22. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  23. package/browser/entity-manager/EntityManager.d.ts +13 -13
  24. package/browser/entity-manager/EntityManager.js.map +1 -1
  25. package/browser/entity-manager/MongoEntityManager.d.ts +1 -1
  26. package/browser/entity-manager/MongoEntityManager.js +1 -1
  27. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  28. package/browser/find-options/FindOperator.d.ts +5 -5
  29. package/browser/find-options/FindOperator.js +5 -5
  30. package/browser/find-options/FindOptionsUtils.d.ts +2 -2
  31. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  32. package/browser/index.js +0 -22
  33. package/browser/index.js.map +1 -1
  34. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  35. package/browser/persistence/Subject.d.ts +4 -4
  36. package/browser/persistence/Subject.js +4 -4
  37. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  38. package/browser/query-builder/Alias.d.ts +3 -4
  39. package/browser/query-builder/Alias.js +3 -3
  40. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  41. package/browser/query-builder/JoinAttribute.d.ts +10 -10
  42. package/browser/query-builder/JoinAttribute.js +10 -10
  43. package/browser/query-builder/QueryBuilder.d.ts +1 -1
  44. package/browser/query-builder/QueryBuilder.js +1 -1
  45. package/browser/query-builder/QueryBuilder.js.map +1 -1
  46. package/browser/query-builder/QueryBuilderUtils.js.map +1 -1
  47. package/browser/query-builder/QueryExpressionMap.d.ts +2 -2
  48. package/browser/query-builder/QueryExpressionMap.js +2 -2
  49. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  50. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  51. package/browser/query-builder/relation-count/RelationCountAttribute.d.ts +7 -7
  52. package/browser/query-builder/relation-count/RelationCountAttribute.js +7 -7
  53. package/browser/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  54. package/browser/query-builder/relation-id/RelationIdAttribute.d.ts +8 -8
  55. package/browser/query-builder/relation-id/RelationIdAttribute.js +8 -8
  56. package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  57. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +3 -3
  58. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  59. package/browser/repository/AbstractRepository.d.ts +2 -2
  60. package/browser/repository/AbstractRepository.js +2 -2
  61. package/browser/repository/BaseEntity.d.ts +1 -1
  62. package/browser/repository/BaseEntity.js +1 -1
  63. package/browser/repository/Repository.d.ts +1 -1
  64. package/browser/repository/Repository.js +1 -1
  65. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +2 -2
  66. package/browser/schema-builder/RdbmsSchemaBuilder.js +2 -2
  67. package/browser/schema-builder/table/Table.d.ts +1 -1
  68. package/browser/schema-builder/table/Table.js +1 -1
  69. package/browser/util/DateUtils.js.map +1 -1
  70. package/browser/util/StringUtils.js.map +1 -1
  71. package/cache/DbQueryResultCache.js +0 -1
  72. package/cache/DbQueryResultCache.js.map +1 -1
  73. package/cache/QueryResultCacheFactory.js +0 -1
  74. package/cache/QueryResultCacheFactory.js.map +1 -1
  75. package/cache/RedisQueryResultCache.js +0 -1
  76. package/cache/RedisQueryResultCache.js.map +1 -1
  77. package/commands/CacheClearCommand.js +0 -1
  78. package/commands/CacheClearCommand.js.map +1 -1
  79. package/commands/CommandUtils.js +0 -1
  80. package/commands/CommandUtils.js.map +1 -1
  81. package/commands/EntityCreateCommand.js +0 -1
  82. package/commands/EntityCreateCommand.js.map +1 -1
  83. package/commands/InitCommand.js +0 -1
  84. package/commands/InitCommand.js.map +1 -1
  85. package/commands/MigrationCreateCommand.js +0 -1
  86. package/commands/MigrationCreateCommand.js.map +1 -1
  87. package/commands/MigrationGenerateCommand.js +0 -1
  88. package/commands/MigrationGenerateCommand.js.map +1 -1
  89. package/commands/MigrationRevertCommand.js +0 -1
  90. package/commands/MigrationRevertCommand.js.map +1 -1
  91. package/commands/MigrationRunCommand.js +0 -1
  92. package/commands/MigrationRunCommand.js.map +1 -1
  93. package/commands/MigrationShowCommand.js +0 -1
  94. package/commands/MigrationShowCommand.js.map +1 -1
  95. package/commands/QueryCommand.js +0 -1
  96. package/commands/QueryCommand.js.map +1 -1
  97. package/commands/SchemaDropCommand.js +0 -1
  98. package/commands/SchemaDropCommand.js.map +1 -1
  99. package/commands/SchemaLogCommand.js +0 -1
  100. package/commands/SchemaLogCommand.js.map +1 -1
  101. package/commands/SchemaSyncCommand.js +0 -1
  102. package/commands/SchemaSyncCommand.js.map +1 -1
  103. package/commands/SubscriberCreateCommand.js +0 -1
  104. package/commands/SubscriberCreateCommand.js.map +1 -1
  105. package/commands/VersionCommand.js +0 -1
  106. package/commands/VersionCommand.js.map +1 -1
  107. package/connection/Connection.d.ts +2 -2
  108. package/connection/Connection.js +2 -3
  109. package/connection/Connection.js.map +1 -1
  110. package/connection/ConnectionManager.js +0 -1
  111. package/connection/ConnectionManager.js.map +1 -1
  112. package/connection/ConnectionMetadataBuilder.js +0 -1
  113. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  114. package/connection/ConnectionOptionsReader.d.ts +3 -3
  115. package/connection/ConnectionOptionsReader.js +3 -4
  116. package/connection/ConnectionOptionsReader.js.map +1 -1
  117. package/connection/options-reader/ConnectionOptionsEnvReader.js +0 -1
  118. package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  119. package/connection/options-reader/ConnectionOptionsXmlReader.js +0 -1
  120. package/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
  121. package/connection/options-reader/ConnectionOptionsYmlReader.js +0 -1
  122. package/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  123. package/container.js +0 -1
  124. package/container.js.map +1 -1
  125. package/decorator/Check.js +0 -1
  126. package/decorator/Check.js.map +1 -1
  127. package/decorator/EntityRepository.js +0 -1
  128. package/decorator/EntityRepository.js.map +1 -1
  129. package/decorator/Exclusion.js +0 -1
  130. package/decorator/Exclusion.js.map +1 -1
  131. package/decorator/Generated.js +0 -1
  132. package/decorator/Generated.js.map +1 -1
  133. package/decorator/Index.js +0 -1
  134. package/decorator/Index.js.map +1 -1
  135. package/decorator/Unique.js +0 -1
  136. package/decorator/Unique.js.map +1 -1
  137. package/decorator/columns/Column.js +0 -1
  138. package/decorator/columns/Column.js.map +1 -1
  139. package/decorator/columns/CreateDateColumn.js +0 -1
  140. package/decorator/columns/CreateDateColumn.js.map +1 -1
  141. package/decorator/columns/DeleteDateColumn.js +0 -1
  142. package/decorator/columns/DeleteDateColumn.js.map +1 -1
  143. package/decorator/columns/ObjectIdColumn.js +0 -1
  144. package/decorator/columns/ObjectIdColumn.js.map +1 -1
  145. package/decorator/columns/PrimaryColumn.js +0 -1
  146. package/decorator/columns/PrimaryColumn.js.map +1 -1
  147. package/decorator/columns/PrimaryGeneratedColumn.js +0 -1
  148. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  149. package/decorator/columns/UpdateDateColumn.js +0 -1
  150. package/decorator/columns/UpdateDateColumn.js.map +1 -1
  151. package/decorator/columns/VersionColumn.js +0 -1
  152. package/decorator/columns/VersionColumn.js.map +1 -1
  153. package/decorator/columns/ViewColumn.js +0 -1
  154. package/decorator/columns/ViewColumn.js.map +1 -1
  155. package/decorator/entity/ChildEntity.js +0 -1
  156. package/decorator/entity/ChildEntity.js.map +1 -1
  157. package/decorator/entity/Entity.js +0 -1
  158. package/decorator/entity/Entity.js.map +1 -1
  159. package/decorator/entity/TableInheritance.js +0 -1
  160. package/decorator/entity/TableInheritance.js.map +1 -1
  161. package/decorator/entity-view/ViewEntity.js +0 -1
  162. package/decorator/entity-view/ViewEntity.js.map +1 -1
  163. package/decorator/listeners/AfterInsert.js +0 -1
  164. package/decorator/listeners/AfterInsert.js.map +1 -1
  165. package/decorator/listeners/AfterLoad.js +0 -1
  166. package/decorator/listeners/AfterLoad.js.map +1 -1
  167. package/decorator/listeners/AfterRemove.js +0 -1
  168. package/decorator/listeners/AfterRemove.js.map +1 -1
  169. package/decorator/listeners/AfterUpdate.js +0 -1
  170. package/decorator/listeners/AfterUpdate.js.map +1 -1
  171. package/decorator/listeners/BeforeInsert.js +0 -1
  172. package/decorator/listeners/BeforeInsert.js.map +1 -1
  173. package/decorator/listeners/BeforeRemove.js +0 -1
  174. package/decorator/listeners/BeforeRemove.js.map +1 -1
  175. package/decorator/listeners/BeforeUpdate.js +0 -1
  176. package/decorator/listeners/BeforeUpdate.js.map +1 -1
  177. package/decorator/listeners/EventSubscriber.js +0 -1
  178. package/decorator/listeners/EventSubscriber.js.map +1 -1
  179. package/decorator/relations/JoinColumn.js +0 -1
  180. package/decorator/relations/JoinColumn.js.map +1 -1
  181. package/decorator/relations/JoinTable.js +0 -1
  182. package/decorator/relations/JoinTable.js.map +1 -1
  183. package/decorator/relations/ManyToMany.js +0 -1
  184. package/decorator/relations/ManyToMany.js.map +1 -1
  185. package/decorator/relations/ManyToOne.js +0 -1
  186. package/decorator/relations/ManyToOne.js.map +1 -1
  187. package/decorator/relations/OneToMany.js +0 -1
  188. package/decorator/relations/OneToMany.js.map +1 -1
  189. package/decorator/relations/OneToOne.js +0 -1
  190. package/decorator/relations/OneToOne.js.map +1 -1
  191. package/decorator/relations/RelationCount.js +0 -1
  192. package/decorator/relations/RelationCount.js.map +1 -1
  193. package/decorator/relations/RelationId.js +0 -1
  194. package/decorator/relations/RelationId.js.map +1 -1
  195. package/decorator/transaction/Transaction.js +0 -1
  196. package/decorator/transaction/Transaction.js.map +1 -1
  197. package/decorator/transaction/TransactionManager.js +0 -1
  198. package/decorator/transaction/TransactionManager.js.map +1 -1
  199. package/decorator/transaction/TransactionRepository.js +0 -1
  200. package/decorator/transaction/TransactionRepository.js.map +1 -1
  201. package/decorator/tree/Tree.js +0 -1
  202. package/decorator/tree/Tree.js.map +1 -1
  203. package/decorator/tree/TreeChildren.js +0 -1
  204. package/decorator/tree/TreeChildren.js.map +1 -1
  205. package/decorator/tree/TreeLevelColumn.js +0 -1
  206. package/decorator/tree/TreeLevelColumn.js.map +1 -1
  207. package/decorator/tree/TreeParent.js +0 -1
  208. package/decorator/tree/TreeParent.js.map +1 -1
  209. package/driver/DriverFactory.js +0 -1
  210. package/driver/DriverFactory.js.map +1 -1
  211. package/driver/DriverUtils.js +0 -1
  212. package/driver/DriverUtils.js.map +1 -1
  213. package/driver/Query.js +0 -1
  214. package/driver/Query.js.map +1 -1
  215. package/driver/SqlInMemory.js +0 -1
  216. package/driver/SqlInMemory.js.map +1 -1
  217. package/driver/aurora-data-api/AuroraDataApiConnection.js +0 -1
  218. package/driver/aurora-data-api/AuroraDataApiConnection.js.map +1 -1
  219. package/driver/aurora-data-api/AuroraDataApiDriver.js +0 -1
  220. package/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  221. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +0 -1
  222. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  223. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +0 -1
  224. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
  225. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +0 -1
  226. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  227. package/driver/better-sqlite3/BetterSqlite3Driver.js +0 -1
  228. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  229. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +0 -1
  230. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  231. package/driver/cockroachdb/CockroachDriver.js +0 -1
  232. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  233. package/driver/cockroachdb/CockroachQueryRunner.js +0 -1
  234. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  235. package/driver/cordova/CordovaDriver.js +0 -1
  236. package/driver/cordova/CordovaDriver.js.map +1 -1
  237. package/driver/cordova/CordovaQueryRunner.js +0 -1
  238. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  239. package/driver/expo/ExpoDriver.js +0 -1
  240. package/driver/expo/ExpoDriver.js.map +1 -1
  241. package/driver/expo/ExpoQueryRunner.js +0 -1
  242. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  243. package/driver/mongodb/MongoDriver.js +0 -1
  244. package/driver/mongodb/MongoDriver.js.map +1 -1
  245. package/driver/mongodb/MongoQueryRunner.js +0 -1
  246. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  247. package/driver/mysql/MysqlDriver.js +0 -1
  248. package/driver/mysql/MysqlDriver.js.map +1 -1
  249. package/driver/mysql/MysqlQueryRunner.js +0 -1
  250. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  251. package/driver/nativescript/NativescriptDriver.js +0 -1
  252. package/driver/nativescript/NativescriptDriver.js.map +1 -1
  253. package/driver/nativescript/NativescriptQueryRunner.js +0 -1
  254. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  255. package/driver/oracle/OracleDriver.js +0 -1
  256. package/driver/oracle/OracleDriver.js.map +1 -1
  257. package/driver/oracle/OracleQueryRunner.js +0 -1
  258. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  259. package/driver/postgres/PostgresDriver.d.ts +1 -1
  260. package/driver/postgres/PostgresDriver.js +1 -2
  261. package/driver/postgres/PostgresDriver.js.map +1 -1
  262. package/driver/postgres/PostgresQueryRunner.js +0 -1
  263. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  264. package/driver/react-native/ReactNativeDriver.js +0 -1
  265. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  266. package/driver/react-native/ReactNativeQueryRunner.js +0 -1
  267. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  268. package/driver/sap/SapDriver.js +0 -1
  269. package/driver/sap/SapDriver.js.map +1 -1
  270. package/driver/sap/SapQueryRunner.js +0 -1
  271. package/driver/sap/SapQueryRunner.js.map +1 -1
  272. package/driver/sqlite/SqliteDriver.js +0 -1
  273. package/driver/sqlite/SqliteDriver.js.map +1 -1
  274. package/driver/sqlite/SqliteQueryRunner.js +0 -1
  275. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  276. package/driver/sqlite-abstract/AbstractSqliteDriver.js +0 -1
  277. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  278. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +0 -1
  279. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  280. package/driver/sqljs/SqljsDriver.js +0 -1
  281. package/driver/sqljs/SqljsDriver.js.map +1 -1
  282. package/driver/sqljs/SqljsQueryRunner.js +0 -1
  283. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  284. package/driver/sqlserver/MssqlParameter.js +0 -1
  285. package/driver/sqlserver/MssqlParameter.js.map +1 -1
  286. package/driver/sqlserver/SqlServerDriver.js +0 -1
  287. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  288. package/driver/sqlserver/SqlServerQueryRunner.js +0 -1
  289. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  290. package/entity-manager/EntityManager.d.ts +13 -13
  291. package/entity-manager/EntityManager.js +0 -1
  292. package/entity-manager/EntityManager.js.map +1 -1
  293. package/entity-manager/EntityManagerFactory.js +0 -1
  294. package/entity-manager/EntityManagerFactory.js.map +1 -1
  295. package/entity-manager/MongoEntityManager.d.ts +1 -1
  296. package/entity-manager/MongoEntityManager.js +1 -2
  297. package/entity-manager/MongoEntityManager.js.map +1 -1
  298. package/entity-manager/SqljsEntityManager.js +0 -1
  299. package/entity-manager/SqljsEntityManager.js.map +1 -1
  300. package/entity-schema/EntitySchema.js +0 -1
  301. package/entity-schema/EntitySchema.js.map +1 -1
  302. package/entity-schema/EntitySchemaOptions.js +0 -1
  303. package/entity-schema/EntitySchemaOptions.js.map +1 -1
  304. package/entity-schema/EntitySchemaTransformer.js +0 -1
  305. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  306. package/error/AlreadyHasActiveConnectionError.js +0 -1
  307. package/error/AlreadyHasActiveConnectionError.js.map +1 -1
  308. package/error/CannotAttachTreeChildrenEntityError.js +0 -1
  309. package/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  310. package/error/CannotConnectAlreadyConnectedError.js +0 -1
  311. package/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  312. package/error/CannotCreateEntityIdMapError.js +0 -1
  313. package/error/CannotCreateEntityIdMapError.js.map +1 -1
  314. package/error/CannotDetermineEntityError.js +0 -1
  315. package/error/CannotDetermineEntityError.js.map +1 -1
  316. package/error/CannotExecuteNotConnectedError.js +0 -1
  317. package/error/CannotExecuteNotConnectedError.js.map +1 -1
  318. package/error/CannotGetEntityManagerNotConnectedError.js +0 -1
  319. package/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  320. package/error/CannotReflectMethodParameterTypeError.js +0 -1
  321. package/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  322. package/error/CircularRelationsError.js +0 -1
  323. package/error/CircularRelationsError.js.map +1 -1
  324. package/error/ColumnTypeUndefinedError.js +0 -1
  325. package/error/ColumnTypeUndefinedError.js.map +1 -1
  326. package/error/ConnectionIsNotSetError.js +0 -1
  327. package/error/ConnectionIsNotSetError.js.map +1 -1
  328. package/error/ConnectionNotFoundError.js +0 -1
  329. package/error/ConnectionNotFoundError.js.map +1 -1
  330. package/error/CustomRepositoryCannotInheritRepositoryError.js +0 -1
  331. package/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  332. package/error/CustomRepositoryDoesNotHaveEntityError.js +0 -1
  333. package/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  334. package/error/CustomRepositoryNotFoundError.js +0 -1
  335. package/error/CustomRepositoryNotFoundError.js.map +1 -1
  336. package/error/DataTypeNotSupportedError.js +0 -1
  337. package/error/DataTypeNotSupportedError.js.map +1 -1
  338. package/error/DriverOptionNotSetError.js +0 -1
  339. package/error/DriverOptionNotSetError.js.map +1 -1
  340. package/error/DriverPackageNotInstalledError.js +0 -1
  341. package/error/DriverPackageNotInstalledError.js.map +1 -1
  342. package/error/EntityColumnNotFound.js +0 -1
  343. package/error/EntityColumnNotFound.js.map +1 -1
  344. package/error/EntityMetadataNotFoundError.js +0 -1
  345. package/error/EntityMetadataNotFoundError.js.map +1 -1
  346. package/error/EntityNotFoundError.js +0 -1
  347. package/error/EntityNotFoundError.js.map +1 -1
  348. package/error/FindRelationsNotFoundError.js +0 -1
  349. package/error/FindRelationsNotFoundError.js.map +1 -1
  350. package/error/InitializedRelationError.js +0 -1
  351. package/error/InitializedRelationError.js.map +1 -1
  352. package/error/InsertValuesMissingError.js +0 -1
  353. package/error/InsertValuesMissingError.js.map +1 -1
  354. package/error/LimitOnUpdateNotSupportedError.js +0 -1
  355. package/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  356. package/error/LockNotSupportedOnGivenDriverError.js +0 -1
  357. package/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  358. package/error/MetadataAlreadyExistsError.js +0 -1
  359. package/error/MetadataAlreadyExistsError.js.map +1 -1
  360. package/error/MetadataWithSuchNameAlreadyExistsError.js +0 -1
  361. package/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  362. package/error/MissingDeleteDateColumnError.js +0 -1
  363. package/error/MissingDeleteDateColumnError.js.map +1 -1
  364. package/error/MissingDriverError.js +0 -1
  365. package/error/MissingDriverError.js.map +1 -1
  366. package/error/MissingJoinColumnError.js +0 -1
  367. package/error/MissingJoinColumnError.js.map +1 -1
  368. package/error/MissingJoinTableError.js +0 -1
  369. package/error/MissingJoinTableError.js.map +1 -1
  370. package/error/MissingPrimaryColumnError.js +0 -1
  371. package/error/MissingPrimaryColumnError.js.map +1 -1
  372. package/error/MustBeEntityError.js +0 -1
  373. package/error/MustBeEntityError.js.map +1 -1
  374. package/error/NamingStrategyNotFoundError.js +0 -1
  375. package/error/NamingStrategyNotFoundError.js.map +1 -1
  376. package/error/NoConnectionForRepositoryError.js +0 -1
  377. package/error/NoConnectionForRepositoryError.js.map +1 -1
  378. package/error/NoConnectionOptionError.js +0 -1
  379. package/error/NoConnectionOptionError.js.map +1 -1
  380. package/error/NoNeedToReleaseEntityManagerError.js +0 -1
  381. package/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  382. package/error/NoVersionOrUpdateDateColumnError.js +0 -1
  383. package/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  384. package/error/OffsetWithoutLimitNotSupportedError.js +0 -1
  385. package/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  386. package/error/OptimisticLockCanNotBeUsedError.js +0 -1
  387. package/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  388. package/error/OptimisticLockVersionMismatchError.js +0 -1
  389. package/error/OptimisticLockVersionMismatchError.js.map +1 -1
  390. package/error/PersistedEntityNotFoundError.js +0 -1
  391. package/error/PersistedEntityNotFoundError.js.map +1 -1
  392. package/error/PessimisticLockTransactionRequiredError.js +0 -1
  393. package/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  394. package/error/PrimaryColumnCannotBeNullableError.js +0 -1
  395. package/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  396. package/error/QueryFailedError.js +0 -1
  397. package/error/QueryFailedError.js.map +1 -1
  398. package/error/QueryRunnerAlreadyReleasedError.js +0 -1
  399. package/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  400. package/error/QueryRunnerProviderAlreadyReleasedError.js +0 -1
  401. package/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  402. package/error/RepositoryNotFoundError.js +0 -1
  403. package/error/RepositoryNotFoundError.js.map +1 -1
  404. package/error/RepositoryNotTreeError.js +0 -1
  405. package/error/RepositoryNotTreeError.js.map +1 -1
  406. package/error/ReturningStatementNotSupportedError.js +0 -1
  407. package/error/ReturningStatementNotSupportedError.js.map +1 -1
  408. package/error/SubjectRemovedAndUpdatedError.js +0 -1
  409. package/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  410. package/error/SubjectWithoutIdentifierError.js +0 -1
  411. package/error/SubjectWithoutIdentifierError.js.map +1 -1
  412. package/error/TransactionAlreadyStartedError.js +0 -1
  413. package/error/TransactionAlreadyStartedError.js.map +1 -1
  414. package/error/TransactionNotStartedError.js +0 -1
  415. package/error/TransactionNotStartedError.js.map +1 -1
  416. package/error/TreeRepositoryNotSupportedError.js +0 -1
  417. package/error/TreeRepositoryNotSupportedError.js.map +1 -1
  418. package/error/UpdateValuesMissingError.js +0 -1
  419. package/error/UpdateValuesMissingError.js.map +1 -1
  420. package/error/UsingJoinColumnIsNotAllowedError.js +0 -1
  421. package/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  422. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +0 -1
  423. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  424. package/error/UsingJoinTableIsNotAllowedError.js +0 -1
  425. package/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  426. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js +0 -1
  427. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  428. package/find-options/FindOperator.d.ts +5 -5
  429. package/find-options/FindOperator.js +5 -6
  430. package/find-options/FindOperator.js.map +1 -1
  431. package/find-options/FindOptionsUtils.d.ts +2 -2
  432. package/find-options/FindOptionsUtils.js +0 -1
  433. package/find-options/FindOptionsUtils.js.map +1 -1
  434. package/find-options/operator/Any.js +0 -1
  435. package/find-options/operator/Any.js.map +1 -1
  436. package/find-options/operator/Between.js +0 -1
  437. package/find-options/operator/Between.js.map +1 -1
  438. package/find-options/operator/Equal.js +0 -1
  439. package/find-options/operator/Equal.js.map +1 -1
  440. package/find-options/operator/In.js +0 -1
  441. package/find-options/operator/In.js.map +1 -1
  442. package/find-options/operator/IsNull.js +0 -1
  443. package/find-options/operator/IsNull.js.map +1 -1
  444. package/find-options/operator/LessThan.js +0 -1
  445. package/find-options/operator/LessThan.js.map +1 -1
  446. package/find-options/operator/LessThanOrEqual.js +0 -1
  447. package/find-options/operator/LessThanOrEqual.js.map +1 -1
  448. package/find-options/operator/Like.js +0 -1
  449. package/find-options/operator/Like.js.map +1 -1
  450. package/find-options/operator/MoreThan.js +0 -1
  451. package/find-options/operator/MoreThan.js.map +1 -1
  452. package/find-options/operator/MoreThanOrEqual.js +0 -1
  453. package/find-options/operator/MoreThanOrEqual.js.map +1 -1
  454. package/find-options/operator/Not.js +0 -1
  455. package/find-options/operator/Not.js.map +1 -1
  456. package/find-options/operator/Raw.js +0 -1
  457. package/find-options/operator/Raw.js.map +1 -1
  458. package/index.js +18 -41
  459. package/index.js.map +1 -1
  460. package/logger/AdvancedConsoleLogger.js +0 -1
  461. package/logger/AdvancedConsoleLogger.js.map +1 -1
  462. package/logger/DebugLogger.js +0 -1
  463. package/logger/DebugLogger.js.map +1 -1
  464. package/logger/FileLogger.js +0 -1
  465. package/logger/FileLogger.js.map +1 -1
  466. package/logger/LoggerFactory.js +0 -1
  467. package/logger/LoggerFactory.js.map +1 -1
  468. package/logger/SimpleConsoleLogger.js +0 -1
  469. package/logger/SimpleConsoleLogger.js.map +1 -1
  470. package/metadata/CheckMetadata.js +0 -1
  471. package/metadata/CheckMetadata.js.map +1 -1
  472. package/metadata/ColumnMetadata.js +0 -1
  473. package/metadata/ColumnMetadata.js.map +1 -1
  474. package/metadata/EmbeddedMetadata.js +0 -1
  475. package/metadata/EmbeddedMetadata.js.map +1 -1
  476. package/metadata/EntityListenerMetadata.js +0 -1
  477. package/metadata/EntityListenerMetadata.js.map +1 -1
  478. package/metadata/EntityMetadata.js +0 -1
  479. package/metadata/EntityMetadata.js.map +1 -1
  480. package/metadata/ExclusionMetadata.js +0 -1
  481. package/metadata/ExclusionMetadata.js.map +1 -1
  482. package/metadata/ForeignKeyMetadata.js +0 -1
  483. package/metadata/ForeignKeyMetadata.js.map +1 -1
  484. package/metadata/IndexMetadata.js +0 -1
  485. package/metadata/IndexMetadata.js.map +1 -1
  486. package/metadata/RelationCountMetadata.js +0 -1
  487. package/metadata/RelationCountMetadata.js.map +1 -1
  488. package/metadata/RelationIdMetadata.js +0 -1
  489. package/metadata/RelationIdMetadata.js.map +1 -1
  490. package/metadata/RelationMetadata.js +0 -1
  491. package/metadata/RelationMetadata.js.map +1 -1
  492. package/metadata/UniqueMetadata.js +0 -1
  493. package/metadata/UniqueMetadata.js.map +1 -1
  494. package/metadata/types/EventListenerTypes.js +0 -1
  495. package/metadata/types/EventListenerTypes.js.map +1 -1
  496. package/metadata-args/MetadataArgsStorage.js +0 -1
  497. package/metadata-args/MetadataArgsStorage.js.map +1 -1
  498. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +0 -1
  499. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  500. package/metadata-builder/EntityMetadataBuilder.js +0 -1
  501. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  502. package/metadata-builder/EntityMetadataValidator.js +0 -1
  503. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  504. package/metadata-builder/JunctionEntityMetadataBuilder.js +0 -1
  505. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  506. package/metadata-builder/MetadataUtils.js +0 -1
  507. package/metadata-builder/MetadataUtils.js.map +1 -1
  508. package/metadata-builder/RelationJoinColumnBuilder.js +0 -1
  509. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  510. package/migration/Migration.js +0 -1
  511. package/migration/Migration.js.map +1 -1
  512. package/migration/MigrationExecutor.js +0 -1
  513. package/migration/MigrationExecutor.js.map +1 -1
  514. package/naming-strategy/DefaultNamingStrategy.js +0 -1
  515. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  516. package/package.json +2 -2
  517. package/persistence/EntityPersistExecutor.js +0 -1
  518. package/persistence/EntityPersistExecutor.js.map +1 -1
  519. package/persistence/Subject.d.ts +4 -4
  520. package/persistence/Subject.js +4 -5
  521. package/persistence/Subject.js.map +1 -1
  522. package/persistence/SubjectChangedColumnsComputer.js +0 -1
  523. package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  524. package/persistence/SubjectDatabaseEntityLoader.js +0 -1
  525. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  526. package/persistence/SubjectExecutor.js +0 -1
  527. package/persistence/SubjectExecutor.js.map +1 -1
  528. package/persistence/SubjectTopoligicalSorter.js +0 -1
  529. package/persistence/SubjectTopoligicalSorter.js.map +1 -1
  530. package/persistence/subject-builder/CascadesSubjectBuilder.js +0 -1
  531. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  532. package/persistence/subject-builder/ManyToManySubjectBuilder.js +0 -1
  533. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  534. package/persistence/subject-builder/OneToManySubjectBuilder.js +0 -1
  535. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  536. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +0 -1
  537. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  538. package/persistence/tree/ClosureSubjectExecutor.js +0 -1
  539. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  540. package/persistence/tree/MaterializedPathSubjectExecutor.js +0 -1
  541. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  542. package/persistence/tree/NestedSetSubjectExecutor.js +0 -1
  543. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  544. package/platform/PlatformTools.js +4 -5
  545. package/platform/PlatformTools.js.map +1 -1
  546. package/query-builder/Alias.d.ts +3 -4
  547. package/query-builder/Alias.js +3 -4
  548. package/query-builder/Alias.js.map +1 -1
  549. package/query-builder/Brackets.js +0 -1
  550. package/query-builder/Brackets.js.map +1 -1
  551. package/query-builder/DeleteQueryBuilder.js +0 -1
  552. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  553. package/query-builder/InsertQueryBuilder.js +0 -1
  554. package/query-builder/InsertQueryBuilder.js.map +1 -1
  555. package/query-builder/JoinAttribute.d.ts +10 -10
  556. package/query-builder/JoinAttribute.js +10 -11
  557. package/query-builder/JoinAttribute.js.map +1 -1
  558. package/query-builder/QueryBuilder.d.ts +1 -1
  559. package/query-builder/QueryBuilder.js +1 -2
  560. package/query-builder/QueryBuilder.js.map +1 -1
  561. package/query-builder/QueryBuilderUtils.js +0 -1
  562. package/query-builder/QueryBuilderUtils.js.map +1 -1
  563. package/query-builder/QueryExpressionMap.d.ts +2 -2
  564. package/query-builder/QueryExpressionMap.js +2 -3
  565. package/query-builder/QueryExpressionMap.js.map +1 -1
  566. package/query-builder/RelationIdLoader.js +0 -1
  567. package/query-builder/RelationIdLoader.js.map +1 -1
  568. package/query-builder/RelationLoader.js +0 -1
  569. package/query-builder/RelationLoader.js.map +1 -1
  570. package/query-builder/RelationQueryBuilder.js +0 -1
  571. package/query-builder/RelationQueryBuilder.js.map +1 -1
  572. package/query-builder/RelationRemover.js +0 -1
  573. package/query-builder/RelationRemover.js.map +1 -1
  574. package/query-builder/RelationUpdater.js +0 -1
  575. package/query-builder/RelationUpdater.js.map +1 -1
  576. package/query-builder/ReturningResultsEntityUpdator.js +0 -1
  577. package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  578. package/query-builder/SelectQueryBuilder.js +0 -1
  579. package/query-builder/SelectQueryBuilder.js.map +1 -1
  580. package/query-builder/SoftDeleteQueryBuilder.js +0 -1
  581. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  582. package/query-builder/UpdateQueryBuilder.js +0 -1
  583. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  584. package/query-builder/relation-count/RelationCountAttribute.d.ts +7 -7
  585. package/query-builder/relation-count/RelationCountAttribute.js +7 -8
  586. package/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  587. package/query-builder/relation-count/RelationCountLoader.js +0 -1
  588. package/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  589. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +0 -1
  590. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  591. package/query-builder/relation-id/RelationIdAttribute.d.ts +8 -8
  592. package/query-builder/relation-id/RelationIdAttribute.js +8 -9
  593. package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  594. package/query-builder/relation-id/RelationIdLoader.js +0 -1
  595. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  596. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +0 -1
  597. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  598. package/query-builder/result/DeleteResult.js +0 -1
  599. package/query-builder/result/DeleteResult.js.map +1 -1
  600. package/query-builder/result/InsertResult.js +0 -1
  601. package/query-builder/result/InsertResult.js.map +1 -1
  602. package/query-builder/result/UpdateResult.js +0 -1
  603. package/query-builder/result/UpdateResult.js.map +1 -1
  604. package/query-builder/transformer/DocumentToEntityTransformer.js +0 -1
  605. package/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  606. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +3 -4
  607. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  608. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js +0 -1
  609. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  610. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +0 -1
  611. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  612. package/query-runner/BaseQueryRunner.js +0 -1
  613. package/query-runner/BaseQueryRunner.js.map +1 -1
  614. package/repository/AbstractRepository.d.ts +2 -2
  615. package/repository/AbstractRepository.js +2 -3
  616. package/repository/AbstractRepository.js.map +1 -1
  617. package/repository/BaseEntity.d.ts +1 -1
  618. package/repository/BaseEntity.js +1 -2
  619. package/repository/BaseEntity.js.map +1 -1
  620. package/repository/MongoRepository.js +0 -1
  621. package/repository/MongoRepository.js.map +1 -1
  622. package/repository/Repository.d.ts +1 -1
  623. package/repository/Repository.js +1 -2
  624. package/repository/Repository.js.map +1 -1
  625. package/repository/RepositoryFactory.js +0 -1
  626. package/repository/RepositoryFactory.js.map +1 -1
  627. package/repository/TreeRepository.js +0 -1
  628. package/repository/TreeRepository.js.map +1 -1
  629. package/schema-builder/MongoSchemaBuilder.js +0 -1
  630. package/schema-builder/MongoSchemaBuilder.js.map +1 -1
  631. package/schema-builder/RdbmsSchemaBuilder.d.ts +2 -2
  632. package/schema-builder/RdbmsSchemaBuilder.js +2 -3
  633. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  634. package/schema-builder/table/Table.d.ts +1 -1
  635. package/schema-builder/table/Table.js +1 -2
  636. package/schema-builder/table/Table.js.map +1 -1
  637. package/schema-builder/table/TableCheck.js +0 -1
  638. package/schema-builder/table/TableCheck.js.map +1 -1
  639. package/schema-builder/table/TableColumn.js +0 -1
  640. package/schema-builder/table/TableColumn.js.map +1 -1
  641. package/schema-builder/table/TableExclusion.js +0 -1
  642. package/schema-builder/table/TableExclusion.js.map +1 -1
  643. package/schema-builder/table/TableForeignKey.js +0 -1
  644. package/schema-builder/table/TableForeignKey.js.map +1 -1
  645. package/schema-builder/table/TableIndex.js +0 -1
  646. package/schema-builder/table/TableIndex.js.map +1 -1
  647. package/schema-builder/table/TableUnique.js +0 -1
  648. package/schema-builder/table/TableUnique.js.map +1 -1
  649. package/schema-builder/util/TableUtils.js +0 -1
  650. package/schema-builder/util/TableUtils.js.map +1 -1
  651. package/schema-builder/view/View.js +0 -1
  652. package/schema-builder/view/View.js.map +1 -1
  653. package/subscriber/Broadcaster.js +0 -1
  654. package/subscriber/Broadcaster.js.map +1 -1
  655. package/subscriber/BroadcasterResult.js +0 -1
  656. package/subscriber/BroadcasterResult.js.map +1 -1
  657. package/util/ApplyValueTransformers.js +0 -1
  658. package/util/ApplyValueTransformers.js.map +1 -1
  659. package/util/DateUtils.js +0 -1
  660. package/util/DateUtils.js.map +1 -1
  661. package/util/DepGraph.js +0 -1
  662. package/util/DepGraph.js.map +1 -1
  663. package/util/DirectoryExportedClassesLoader.js +0 -1
  664. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  665. package/util/ObjectUtils.js +0 -1
  666. package/util/ObjectUtils.js.map +1 -1
  667. package/util/OrmUtils.js +0 -1
  668. package/util/OrmUtils.js.map +1 -1
  669. package/util/RandomGenerator.js +0 -1
  670. package/util/RandomGenerator.js.map +1 -1
  671. package/util/StringUtils.js +0 -1
  672. package/util/StringUtils.js.map +1 -1
  673. package/util/VersionUtils.js +0 -1
  674. package/util/VersionUtils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.ts"],"names":[],"mappings":";;;AAEA,mEAAgE;AAEhE;IAEI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,qDAAsB,aAAiC;QAAjC,kBAAa,GAAb,aAAa,CAAoB;IACvD,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E,+DAAS,GAAT;QAEI,cAAc;QACd,2BAA2B;QAC3B,wDAAwD;QACxD,8BAA8B;QAC9B,yDAAyD;QACzD,iCAAiC;QACjC,oFAAoF;QARxF,iBA8BC;QApBG,0HAA0H;QAC1H,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YAC9B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,aAAa;gBACtE,IAAM,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,KAAI,CAAC,aAAa,CAAC,SAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBAC9F,KAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;SACN;QAED,yHAAyH;QACzH,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,IAAI;YAE1C,8FAA8F;YAC9F,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAC1C,OAAO;YAEX,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,aAAa;gBAC9C,IAAM,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBAC3E,KAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAEpE,yEAAmB,GAA3B,UAA4B,eAAuB,EAAE,aAAoC;QACrF,OAAO,IAAI,+CAAsB,CAAC,IAAI,CAAC,aAAa,EAAE;YAClD,YAAY,EAAE,eAAe,GAAG,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,YAAY;YACzE,aAAa,EAAE,eAAe,GAAG,GAAG,GAAG,aAAa,CAAC,YAAY;YACjE,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,mBAAmB,EAAE,aAAa,CAAC,mBAAmB;SACzD,CAAC,CAAC;IACP,CAAC;IAEL,kDAAC;AAAD,CA1DA,AA0DC,IAAA;AA1DY,kGAA2C","file":"RelationCountMetadataToAttributeTransformer.js","sourcesContent":["import {QueryExpressionMap} from \"../QueryExpressionMap\";\nimport {RelationCountMetadata} from \"../../metadata/RelationCountMetadata\";\nimport {RelationCountAttribute} from \"./RelationCountAttribute\";\n\nexport class RelationCountMetadataToAttributeTransformer {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected expressionMap: QueryExpressionMap) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transform() {\n\n // by example:\n // post has relation count:\n // @RelationCount(post => post.categories) categoryCount\n // category has relation count\n // @RelationCount(category => category.images) imageCount\n // we load post and join category\n // we expect post.categoryCount and post.category.imageCount to have relation counts\n\n // first create relation count attributes for all relation count metadatas of the main selected object (post from example)\n if (this.expressionMap.mainAlias) {\n this.expressionMap.mainAlias.metadata.relationCounts.forEach(relationCount => {\n const attribute = this.metadataToAttribute(this.expressionMap.mainAlias!.name, relationCount);\n this.expressionMap.relationCountAttributes.push(attribute);\n });\n }\n\n // second create relation count attributes for all relation count metadatas of all joined objects (category from example)\n this.expressionMap.joinAttributes.forEach(join => {\n\n // ensure this join has a metadata, because relation count can only work for real orm entities\n if (!join.metadata || join.metadata.isJunction)\n return;\n\n join.metadata.relationCounts.forEach(relationCount => {\n const attribute = this.metadataToAttribute(join.alias.name, relationCount);\n this.expressionMap.relationCountAttributes.push(attribute);\n });\n });\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n private metadataToAttribute(parentAliasName: string, relationCount: RelationCountMetadata): RelationCountAttribute {\n return new RelationCountAttribute(this.expressionMap, {\n relationName: parentAliasName + \".\" + relationCount.relation.propertyName, // category.images\n mapToProperty: parentAliasName + \".\" + relationCount.propertyName, // category.imageIds\n alias: relationCount.alias,\n queryBuilderFactory: relationCount.queryBuilderFactory\n });\n }\n\n}"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.ts"],"names":[],"mappings":";;AAEA,mEAAgE;AAEhE;IAEI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,qDAAsB,aAAiC;QAAjC,kBAAa,GAAb,aAAa,CAAoB;IACvD,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E,+DAAS,GAAT;QAEI,cAAc;QACd,2BAA2B;QAC3B,wDAAwD;QACxD,8BAA8B;QAC9B,yDAAyD;QACzD,iCAAiC;QACjC,oFAAoF;QARxF,iBA8BC;QApBG,0HAA0H;QAC1H,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YAC9B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,aAAa;gBACtE,IAAM,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,KAAI,CAAC,aAAa,CAAC,SAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBAC9F,KAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;SACN;QAED,yHAAyH;QACzH,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,IAAI;YAE1C,8FAA8F;YAC9F,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAC1C,OAAO;YAEX,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,aAAa;gBAC9C,IAAM,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBAC3E,KAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAEpE,yEAAmB,GAA3B,UAA4B,eAAuB,EAAE,aAAoC;QACrF,OAAO,IAAI,+CAAsB,CAAC,IAAI,CAAC,aAAa,EAAE;YAClD,YAAY,EAAE,eAAe,GAAG,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,YAAY;YACzE,aAAa,EAAE,eAAe,GAAG,GAAG,GAAG,aAAa,CAAC,YAAY;YACjE,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,mBAAmB,EAAE,aAAa,CAAC,mBAAmB;SACzD,CAAC,CAAC;IACP,CAAC;IAEL,kDAAC;AAAD,CA1DA,AA0DC,IAAA;AA1DY,kGAA2C","file":"RelationCountMetadataToAttributeTransformer.js","sourcesContent":["import {QueryExpressionMap} from \"../QueryExpressionMap\";\nimport {RelationCountMetadata} from \"../../metadata/RelationCountMetadata\";\nimport {RelationCountAttribute} from \"./RelationCountAttribute\";\n\nexport class RelationCountMetadataToAttributeTransformer {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected expressionMap: QueryExpressionMap) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transform() {\n\n // by example:\n // post has relation count:\n // @RelationCount(post => post.categories) categoryCount\n // category has relation count\n // @RelationCount(category => category.images) imageCount\n // we load post and join category\n // we expect post.categoryCount and post.category.imageCount to have relation counts\n\n // first create relation count attributes for all relation count metadatas of the main selected object (post from example)\n if (this.expressionMap.mainAlias) {\n this.expressionMap.mainAlias.metadata.relationCounts.forEach(relationCount => {\n const attribute = this.metadataToAttribute(this.expressionMap.mainAlias!.name, relationCount);\n this.expressionMap.relationCountAttributes.push(attribute);\n });\n }\n\n // second create relation count attributes for all relation count metadatas of all joined objects (category from example)\n this.expressionMap.joinAttributes.forEach(join => {\n\n // ensure this join has a metadata, because relation count can only work for real orm entities\n if (!join.metadata || join.metadata.isJunction)\n return;\n\n join.metadata.relationCounts.forEach(relationCount => {\n const attribute = this.metadataToAttribute(join.alias.name, relationCount);\n this.expressionMap.relationCountAttributes.push(attribute);\n });\n });\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n private metadataToAttribute(parentAliasName: string, relationCount: RelationCountMetadata): RelationCountAttribute {\n return new RelationCountAttribute(this.expressionMap, {\n relationName: parentAliasName + \".\" + relationCount.relation.propertyName, // category.images\n mapToProperty: parentAliasName + \".\" + relationCount.propertyName, // category.imageIds\n alias: relationCount.alias,\n queryBuilderFactory: relationCount.queryBuilderFactory\n });\n }\n\n}"],"sourceRoot":"../.."}
@@ -28,14 +28,14 @@ export declare class RelationIdAttribute {
28
28
  */
29
29
  disableMixedMap: boolean;
30
30
  constructor(queryExpressionMap: QueryExpressionMap, relationIdAttribute?: Partial<RelationIdAttribute>);
31
- get joinInverseSideMetadata(): EntityMetadata;
31
+ readonly joinInverseSideMetadata: EntityMetadata;
32
32
  /**
33
33
  * Alias of the parent of this join.
34
34
  * For example, if we join ("post.category", "categoryAlias") then "post" is a parent alias.
35
35
  * This value is extracted from entityOrProperty value.
36
36
  * This is available when join was made using "post.category" syntax.
37
37
  */
38
- get parentAlias(): string;
38
+ readonly parentAlias: string;
39
39
  /**
40
40
  * Relation property name of the parent.
41
41
  * This is used to understand what is joined.
@@ -43,22 +43,22 @@ export declare class RelationIdAttribute {
43
43
  * This value is extracted from entityOrProperty value.
44
44
  * This is available when join was made using "post.category" syntax.
45
45
  */
46
- get relationPropertyPath(): string;
46
+ readonly relationPropertyPath: string;
47
47
  /**
48
48
  * Relation of the parent.
49
49
  * This is used to understand what is joined.
50
50
  * This is available when join was made using "post.category" syntax.
51
51
  */
52
- get relation(): RelationMetadata;
52
+ readonly relation: RelationMetadata;
53
53
  /**
54
54
  * Generates alias of junction table, whose ids we get.
55
55
  */
56
- get junctionAlias(): string;
56
+ readonly junctionAlias: string;
57
57
  /**
58
58
  * Metadata of the joined entity.
59
59
  * If extra condition without entity was joined, then it will return undefined.
60
60
  */
61
- get junctionMetadata(): EntityMetadata;
62
- get mapToPropertyParentAlias(): string;
63
- get mapToPropertyPropertyPath(): string;
61
+ readonly junctionMetadata: EntityMetadata;
62
+ readonly mapToPropertyParentAlias: string;
63
+ readonly mapToPropertyPropertyPath: string;
64
64
  }
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RelationIdAttribute = void 0;
4
3
  var tslib_1 = require("tslib");
5
4
  var QueryBuilderUtils_1 = require("../QueryBuilderUtils");
6
5
  var ObjectUtils_1 = require("../../util/ObjectUtils");
@@ -26,7 +25,7 @@ var RelationIdAttribute = /** @class */ (function () {
26
25
  get: function () {
27
26
  return this.relation.inverseEntityMetadata;
28
27
  },
29
- enumerable: false,
28
+ enumerable: true,
30
29
  configurable: true
31
30
  });
32
31
  Object.defineProperty(RelationIdAttribute.prototype, "parentAlias", {
@@ -41,7 +40,7 @@ var RelationIdAttribute = /** @class */ (function () {
41
40
  throw new Error("Given value must be a string representation of alias property");
42
41
  return this.relationName.substr(0, this.relationName.indexOf("."));
43
42
  },
44
- enumerable: false,
43
+ enumerable: true,
45
44
  configurable: true
46
45
  });
47
46
  Object.defineProperty(RelationIdAttribute.prototype, "relationPropertyPath", {
@@ -57,7 +56,7 @@ var RelationIdAttribute = /** @class */ (function () {
57
56
  throw new Error("Given value must be a string representation of alias property");
58
57
  return this.relationName.substr(this.relationName.indexOf(".") + 1);
59
58
  },
60
- enumerable: false,
59
+ enumerable: true,
61
60
  configurable: true
62
61
  });
63
62
  Object.defineProperty(RelationIdAttribute.prototype, "relation", {
@@ -75,7 +74,7 @@ var RelationIdAttribute = /** @class */ (function () {
75
74
  throw new Error("Relation with property path " + this.relationPropertyPath + " in entity was not found.");
76
75
  return relation;
77
76
  },
78
- enumerable: false,
77
+ enumerable: true,
79
78
  configurable: true
80
79
  });
81
80
  Object.defineProperty(RelationIdAttribute.prototype, "junctionAlias", {
@@ -86,7 +85,7 @@ var RelationIdAttribute = /** @class */ (function () {
86
85
  var _a = tslib_1.__read(this.relationName.split("."), 2), parentAlias = _a[0], relationProperty = _a[1];
87
86
  return parentAlias + "_" + relationProperty + "_rid";
88
87
  },
89
- enumerable: false,
88
+ enumerable: true,
90
89
  configurable: true
91
90
  });
92
91
  Object.defineProperty(RelationIdAttribute.prototype, "junctionMetadata", {
@@ -97,21 +96,21 @@ var RelationIdAttribute = /** @class */ (function () {
97
96
  get: function () {
98
97
  return this.relation.junctionEntityMetadata;
99
98
  },
100
- enumerable: false,
99
+ enumerable: true,
101
100
  configurable: true
102
101
  });
103
102
  Object.defineProperty(RelationIdAttribute.prototype, "mapToPropertyParentAlias", {
104
103
  get: function () {
105
104
  return this.mapToProperty.substr(0, this.mapToProperty.indexOf("."));
106
105
  },
107
- enumerable: false,
106
+ enumerable: true,
108
107
  configurable: true
109
108
  });
110
109
  Object.defineProperty(RelationIdAttribute.prototype, "mapToPropertyPropertyPath", {
111
110
  get: function () {
112
111
  return this.mapToProperty.substr(this.mapToProperty.indexOf(".") + 1);
113
112
  },
114
- enumerable: false,
113
+ enumerable: true,
115
114
  configurable: true
116
115
  });
117
116
  return RelationIdAttribute;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/relation-id/RelationIdAttribute.ts"],"names":[],"mappings":";;;;AACA,0DAAuD;AAIvD,sDAAmD;AAEnD;;GAEG;AACH;IA+BI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,6BAAoB,kBAAsC,EACtC,mBAAkD;QADlD,uBAAkB,GAAlB,kBAAkB,CAAoB;QAT1D;;WAEG;QACH,oBAAe,GAAG,KAAK,CAAC;QAQpB,yBAAW,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAMD,sBAAI,wDAAuB;QAJ3B,4EAA4E;QAC5E,iBAAiB;QACjB,4EAA4E;aAE5E;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC/C,CAAC;;;OAAA;IAQD,sBAAI,4CAAW;QANf;;;;;WAKG;aACH;YACI,IAAI,CAAC,qCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YAErF,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,CAAC;;;OAAA;IASD,sBAAI,qDAAoB;QAPxB;;;;;;WAMG;aACH;YACI,IAAI,CAAC,qCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YAErF,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACxE,CAAC;;;OAAA;IAOD,sBAAI,yCAAQ;QALZ;;;;WAIG;aACH;YACI,IAAI,CAAC,qCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YAErF,IAAM,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,WAAY,CAAC,CAAC;YAC1F,IAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,4BAA4B,CAAC,IAAI,CAAC,oBAAqB,CAAC,CAAC;YAC1G,IAAI,CAAC,QAAQ;gBACT,MAAM,IAAI,KAAK,CAAC,iCAA+B,IAAI,CAAC,oBAAoB,8BAA2B,CAAC,CAAC;YACzG,OAAO,QAAQ,CAAC;QACpB,CAAC;;;OAAA;IAKD,sBAAI,8CAAa;QAHjB;;WAEG;aACH;YACU,IAAA,KAAA,eAAkC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,IAAA,EAA7D,WAAW,QAAA,EAAE,gBAAgB,QAAgC,CAAC;YACrE,OAAO,WAAW,GAAG,GAAG,GAAG,gBAAgB,GAAG,MAAM,CAAC;QACzD,CAAC;;;OAAA;IAMD,sBAAI,iDAAgB;QAJpB;;;WAGG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,sBAAuB,CAAC;QACjD,CAAC;;;OAAA;IAED,sBAAI,yDAAwB;aAA5B;YACI,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACzE,CAAC;;;OAAA;IAED,sBAAI,0DAAyB;aAA7B;YACI,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1E,CAAC;;;OAAA;IAEL,0BAAC;AAAD,CAnHA,AAmHC,IAAA;AAnHY,kDAAmB","file":"RelationIdAttribute.js","sourcesContent":["import {RelationMetadata} from \"../../metadata/RelationMetadata\";\nimport {QueryBuilderUtils} from \"../QueryBuilderUtils\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {QueryExpressionMap} from \"../QueryExpressionMap\";\nimport {SelectQueryBuilder} from \"../SelectQueryBuilder\";\nimport {ObjectUtils} from \"../../util/ObjectUtils\";\n\n/**\n * Stores all join relation id attributes which will be used to build a JOIN query.\n */\nexport class RelationIdAttribute {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Alias of the joined (destination) table.\n */\n alias?: string;\n\n /**\n * Name of relation.\n */\n relationName: string;\n\n /**\n * Property + alias of the object where to joined data should be mapped.\n */\n mapToProperty: string;\n\n /**\n * Extra condition applied to \"ON\" section of join.\n */\n queryBuilderFactory?: (qb: SelectQueryBuilder<any>) => SelectQueryBuilder<any>;\n\n /**\n * Indicates if relation id should NOT be loaded as id map.\n */\n disableMixedMap = false;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private queryExpressionMap: QueryExpressionMap,\n relationIdAttribute?: Partial<RelationIdAttribute>) {\n ObjectUtils.assign(this, relationIdAttribute || {});\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n get joinInverseSideMetadata(): EntityMetadata {\n return this.relation.inverseEntityMetadata;\n }\n\n /**\n * Alias of the parent of this join.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"post\" is a parent alias.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get parentAlias(): string {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(`Given value must be a string representation of alias property`);\n\n return this.relationName.substr(0, this.relationName.indexOf(\".\"));\n }\n\n /**\n * Relation property name of the parent.\n * This is used to understand what is joined.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"category\" is a relation property.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get relationPropertyPath(): string {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(`Given value must be a string representation of alias property`);\n\n return this.relationName.substr(this.relationName.indexOf(\".\") + 1);\n }\n\n /**\n * Relation of the parent.\n * This is used to understand what is joined.\n * This is available when join was made using \"post.category\" syntax.\n */\n get relation(): RelationMetadata {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(`Given value must be a string representation of alias property`);\n\n const relationOwnerSelection = this.queryExpressionMap.findAliasByName(this.parentAlias!);\n const relation = relationOwnerSelection.metadata.findRelationWithPropertyPath(this.relationPropertyPath!);\n if (!relation)\n throw new Error(`Relation with property path ${this.relationPropertyPath} in entity was not found.`);\n return relation;\n }\n\n /**\n * Generates alias of junction table, whose ids we get.\n */\n get junctionAlias(): string {\n const [parentAlias, relationProperty] = this.relationName.split(\".\");\n return parentAlias + \"_\" + relationProperty + \"_rid\";\n }\n\n /**\n * Metadata of the joined entity.\n * If extra condition without entity was joined, then it will return undefined.\n */\n get junctionMetadata(): EntityMetadata {\n return this.relation.junctionEntityMetadata!;\n }\n\n get mapToPropertyParentAlias(): string {\n return this.mapToProperty.substr(0, this.mapToProperty.indexOf(\".\"));\n }\n\n get mapToPropertyPropertyPath(): string {\n return this.mapToProperty.substr(this.mapToProperty.indexOf(\".\") + 1);\n }\n\n}"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/query-builder/relation-id/RelationIdAttribute.ts"],"names":[],"mappings":";;;AACA,0DAAuD;AAIvD,sDAAmD;AAEnD;;GAEG;AACH;IA+BI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,6BAAoB,kBAAsC,EACtC,mBAAkD;QADlD,uBAAkB,GAAlB,kBAAkB,CAAoB;QAT1D;;WAEG;QACH,oBAAe,GAAG,KAAK,CAAC;QAQpB,yBAAW,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAMD,sBAAI,wDAAuB;QAJ3B,4EAA4E;QAC5E,iBAAiB;QACjB,4EAA4E;aAE5E;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC/C,CAAC;;;OAAA;IAQD,sBAAI,4CAAW;QANf;;;;;WAKG;aACH;YACI,IAAI,CAAC,qCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YAErF,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,CAAC;;;OAAA;IASD,sBAAI,qDAAoB;QAPxB;;;;;;WAMG;aACH;YACI,IAAI,CAAC,qCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YAErF,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACxE,CAAC;;;OAAA;IAOD,sBAAI,yCAAQ;QALZ;;;;WAIG;aACH;YACI,IAAI,CAAC,qCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YAErF,IAAM,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,WAAY,CAAC,CAAC;YAC1F,IAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,4BAA4B,CAAC,IAAI,CAAC,oBAAqB,CAAC,CAAC;YAC1G,IAAI,CAAC,QAAQ;gBACT,MAAM,IAAI,KAAK,CAAC,iCAA+B,IAAI,CAAC,oBAAoB,8BAA2B,CAAC,CAAC;YACzG,OAAO,QAAQ,CAAC;QACpB,CAAC;;;OAAA;IAKD,sBAAI,8CAAa;QAHjB;;WAEG;aACH;YACU,IAAA,oDAA8D,EAA7D,mBAAW,EAAE,wBAAgD,CAAC;YACrE,OAAO,WAAW,GAAG,GAAG,GAAG,gBAAgB,GAAG,MAAM,CAAC;QACzD,CAAC;;;OAAA;IAMD,sBAAI,iDAAgB;QAJpB;;;WAGG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,sBAAuB,CAAC;QACjD,CAAC;;;OAAA;IAED,sBAAI,yDAAwB;aAA5B;YACI,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACzE,CAAC;;;OAAA;IAED,sBAAI,0DAAyB;aAA7B;YACI,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1E,CAAC;;;OAAA;IAEL,0BAAC;AAAD,CAnHA,AAmHC,IAAA;AAnHY,kDAAmB","file":"RelationIdAttribute.js","sourcesContent":["import {RelationMetadata} from \"../../metadata/RelationMetadata\";\nimport {QueryBuilderUtils} from \"../QueryBuilderUtils\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {QueryExpressionMap} from \"../QueryExpressionMap\";\nimport {SelectQueryBuilder} from \"../SelectQueryBuilder\";\nimport {ObjectUtils} from \"../../util/ObjectUtils\";\n\n/**\n * Stores all join relation id attributes which will be used to build a JOIN query.\n */\nexport class RelationIdAttribute {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Alias of the joined (destination) table.\n */\n alias?: string;\n\n /**\n * Name of relation.\n */\n relationName: string;\n\n /**\n * Property + alias of the object where to joined data should be mapped.\n */\n mapToProperty: string;\n\n /**\n * Extra condition applied to \"ON\" section of join.\n */\n queryBuilderFactory?: (qb: SelectQueryBuilder<any>) => SelectQueryBuilder<any>;\n\n /**\n * Indicates if relation id should NOT be loaded as id map.\n */\n disableMixedMap = false;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private queryExpressionMap: QueryExpressionMap,\n relationIdAttribute?: Partial<RelationIdAttribute>) {\n ObjectUtils.assign(this, relationIdAttribute || {});\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n get joinInverseSideMetadata(): EntityMetadata {\n return this.relation.inverseEntityMetadata;\n }\n\n /**\n * Alias of the parent of this join.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"post\" is a parent alias.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get parentAlias(): string {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(`Given value must be a string representation of alias property`);\n\n return this.relationName.substr(0, this.relationName.indexOf(\".\"));\n }\n\n /**\n * Relation property name of the parent.\n * This is used to understand what is joined.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"category\" is a relation property.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get relationPropertyPath(): string {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(`Given value must be a string representation of alias property`);\n\n return this.relationName.substr(this.relationName.indexOf(\".\") + 1);\n }\n\n /**\n * Relation of the parent.\n * This is used to understand what is joined.\n * This is available when join was made using \"post.category\" syntax.\n */\n get relation(): RelationMetadata {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(`Given value must be a string representation of alias property`);\n\n const relationOwnerSelection = this.queryExpressionMap.findAliasByName(this.parentAlias!);\n const relation = relationOwnerSelection.metadata.findRelationWithPropertyPath(this.relationPropertyPath!);\n if (!relation)\n throw new Error(`Relation with property path ${this.relationPropertyPath} in entity was not found.`);\n return relation;\n }\n\n /**\n * Generates alias of junction table, whose ids we get.\n */\n get junctionAlias(): string {\n const [parentAlias, relationProperty] = this.relationName.split(\".\");\n return parentAlias + \"_\" + relationProperty + \"_rid\";\n }\n\n /**\n * Metadata of the joined entity.\n * If extra condition without entity was joined, then it will return undefined.\n */\n get junctionMetadata(): EntityMetadata {\n return this.relation.junctionEntityMetadata!;\n }\n\n get mapToPropertyParentAlias(): string {\n return this.mapToProperty.substr(0, this.mapToProperty.indexOf(\".\"));\n }\n\n get mapToPropertyPropertyPath(): string {\n return this.mapToProperty.substr(this.mapToProperty.indexOf(\".\") + 1);\n }\n\n}"],"sourceRoot":"../.."}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RelationIdLoader = void 0;
4
3
  var tslib_1 = require("tslib");
5
4
  var DriverUtils_1 = require("../../driver/DriverUtils");
6
5
  var RelationIdLoader = /** @class */ (function () {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/relation-id/RelationIdLoader.ts"],"names":[],"mappings":";;;;AAKA,wDAAqD;AAErD;IAEI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,0BAAsB,UAAsB,EACtB,WAAkC,EAClC,oBAA2C;QAF3C,eAAU,GAAV,UAAU,CAAY;QACtB,gBAAW,GAAX,WAAW,CAAuB;QAClC,yBAAoB,GAApB,oBAAoB,CAAuB;IACjE,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAEtE,+BAAI,GAAV,UAAW,WAAkB;;;;;gBAEnB,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAM,cAAc;;;;;;qCAE3D,CAAA,cAAc,CAAC,QAAQ,CAAC,WAAW,IAAI,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAA,EAA9E,wBAA8E;gCAC9E,wBAAwB;gCACxB,iDAAiD;gCACjD,iCAAiC;gCAEjC,IAAI,cAAc,CAAC,mBAAmB;oCAClC,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;gCAElG,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,UAAA,SAAS;oCACrC,IAAM,MAAM,GAAkB,EAAE,CAAC;oCACjC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,UAAA,UAAU;wCAClD,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,yBAAW,CAAC,gBAAgB,CAAC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAiB,CAAC,CAAC;oCACtO,CAAC,CAAC,CAAC;oCAEH,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,aAAa;wCACvE,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,yBAAW,CAAC,gBAAgB,CAAC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;oCAC7N,CAAC,CAAC,CAAC;oCACH,OAAO,MAAM,CAAC;gCAClB,CAAC,CAAC,CAAC;gCAEH,sBAAO;wCACH,mBAAmB,EAAE,cAAc;wCACnC,OAAO,EAAE,OAAO;qCACnB,EAAC;;qCAEK,CAAA,cAAc,CAAC,QAAQ,CAAC,WAAW,IAAI,cAAc,CAAC,QAAQ,CAAC,kBAAkB,CAAA,EAAjF,wBAAiF;gCAKlF,aAAW,cAAc,CAAC,QAAQ,CAAC;gCACnC,gBAAc,UAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,UAAQ,CAAC,eAAgB,CAAC,WAAW,CAAC;gCAC/F,KAAK,GAAG,UAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC;gCAC9C,SAAS,GAAG,UAAQ,CAAC,qBAAqB,CAAC,SAAS,CAAC;gCACrD,eAAa,cAAc,CAAC,KAAK,IAAI,SAAS,CAAC;gCAE/C,eAA4B,EAAE,CAAC;gCAC/B,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,UAAC,SAAS,EAAE,KAAK;oCAC/C,OAAO,aAAW,CAAC,GAAG,CAAC,UAAA,UAAU;wCAC7B,IAAM,aAAa,GAAG,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC;wCACtD,YAAU,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC,yBAAW,CAAC,gBAAgB,CAAC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,gBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;wCACnK,OAAO,YAAU,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY,GAAG,MAAM,GAAG,aAAa,CAAC;oCAC/E,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gCACrB,CAAC,CAAC,CAAC,GAAG,CAAC,UAAA,SAAS,IAAI,OAAA,GAAG,GAAG,SAAS,GAAG,GAAG,EAArB,CAAqB,CAAC;qCACrC,IAAI,CAAC,MAAM,CAAC,CAAC;gCAElB,6FAA6F;gCAC7F,oGAAoG;gCACpG,IAAI,CAAC,SAAS;oCACV,sBAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,EAAE,EAAC;gCAI1D,OAAK,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gCAEhE,aAAW,CAAC,OAAO,CAAC,UAAA,UAAU;oCAC1B,IAAE,CAAC,SAAS,CAAC,YAAU,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;gCACtF,CAAC,CAAC,CAAC;gCAEH,UAAQ,CAAC,eAAgB,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,aAAa;oCACzE,IAAE,CAAC,SAAS,CAAC,YAAU,GAAG,GAAG,GAAG,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;gCAC5F,CAAC,CAAC,CAAC;gCAEH,IAAE,CAAC,IAAI,CAAC,KAAK,EAAE,YAAU,CAAC;qCACrB,KAAK,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC,uIAAuI;qCACpK,aAAa,CAAC,YAAU,CAAC,CAAC;gCAE/B,iDAAiD;gCACjD,IAAI,cAAc,CAAC,mBAAmB;oCAClC,cAAc,CAAC,mBAAmB,CAAC,IAAE,CAAC,CAAC;gCAE3B,qBAAM,IAAE,CAAC,UAAU,EAAE,EAAA;;gCAA/B,OAAO,GAAG,SAAqB;gCACrC,OAAO,CAAC,OAAO,CAAC,UAAA,MAAM;oCAClB,aAAW,CAAC,OAAO,CAAC,UAAA,MAAM;wCACtB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,gBAAiB,CAAC,CAAC;oCACrI,CAAC,CAAC,CAAC;oCACH,UAAQ,CAAC,eAAgB,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,MAAM;wCAClE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;oCACnH,CAAC,CAAC,CAAC;gCACP,CAAC,CAAC,CAAC;gCAEH,sBAAO;wCACH,mBAAmB,EAAE,cAAc;wCACnC,OAAO,SAAA;qCACV,EAAC;;gCASI,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;gCACnC,gBAAc,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAgB,CAAC,kBAAkB,CAAC;gCACtG,uBAAqB,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAgB,CAAC,WAAW,CAAC;gCAC7G,kBAAgB,cAAc,CAAC,aAAa,CAAC;gCAC7C,oBAAoB,GAAG,cAAc,CAAC,uBAAuB,CAAC,SAAS,CAAC;gCACxE,0BAAwB,cAAc,CAAC,KAAK,IAAI,oBAAoB,CAAC;gCACrE,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAgB,CAAC,sBAAuB,CAAC,SAAS,CAAC;gCAGjJ,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,UAAA,SAAS;oCAC3C,OAAO,aAAW,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,UAAU;wCACtC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,yBAAW,CAAC,gBAAgB,CAAC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,gBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;wCACtK,OAAO,GAAG,CAAC;oCACf,CAAC,EAAE,EAAmB,CAAC,CAAC;gCAC5B,CAAC,CAAC,CAAC;gCAEH,6FAA6F;gCAC7F,oGAAoG;gCACpG,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;oCAC1B,sBAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,EAAE,EAAC;gCAE1D,eAA4B,EAAE,CAAC;gCAC/B,oBAAoB,GAAG,aAAa,CAAC,GAAG,CAAC,UAAC,YAAY,EAAE,KAAK;oCAC/D,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG;wCACpC,IAAM,aAAa,GAAG,GAAG,GAAG,KAAK,CAAC;wCAClC,YAAU,CAAC,aAAa,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;wCAC9C,OAAO,eAAa,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,aAAa,CAAC;oCAC9D,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gCACrB,CAAC,CAAC,CAAC;gCAEG,+BAA6B,oBAAkB,CAAC,GAAG,CAAC,UAAA,UAAU;oCAChE,OAAO,eAAa,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY,GAAG,KAAK,GAAG,uBAAqB,GAAG,GAAG,GAAG,UAAU,CAAC,gBAAiB,CAAC,YAAY,CAAC;gCAC3I,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gCAEX,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC,UAAA,SAAS;oCAChD,OAAO,GAAG,GAAG,SAAS,GAAG,OAAO,GAAG,4BAA0B,GAAG,GAAG,CAAC;gCACxE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gCAEV,OAAK,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gCAEhE,oBAAkB,CAAC,OAAO,CAAC,UAAA,UAAU;oCACjC,IAAE,CAAC,SAAS,CAAC,eAAa,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC;yCACnF,UAAU,CAAC,eAAa,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;gCAC/D,CAAC,CAAC,CAAC;gCAEH,aAAW,CAAC,OAAO,CAAC,UAAA,UAAU;oCAC1B,IAAE,CAAC,SAAS,CAAC,eAAa,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC;yCACnF,UAAU,CAAC,eAAa,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;gCAC/D,CAAC,CAAC,CAAC;gCAEH,IAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,uBAAqB,CAAC;qCAC/C,SAAS,CAAC,iBAAiB,EAAE,eAAa,EAAE,SAAS,CAAC;qCACtD,aAAa,CAAC,YAAU,CAAC,CAAC;gCAE/B,iDAAiD;gCACjD,IAAI,cAAc,CAAC,mBAAmB;oCAClC,cAAc,CAAC,mBAAmB,CAAC,IAAE,CAAC,CAAC;gCAE3B,qBAAM,IAAE,CAAC,UAAU,EAAE,EAAA;;gCAA/B,OAAO,GAAG,SAAqB;gCACrC,OAAO,CAAC,OAAO,CAAC,UAAA,MAAM;oCAClB,iBAAI,aAAW,EAAK,oBAAkB,EAAE,OAAO,CAAC,UAAA,MAAM;wCAClD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,gBAAiB,CAAC,CAAC;oCACrI,CAAC,CAAC,CAAC;gCACP,CAAC,CAAC,CAAC;gCAEH,sBAAO;wCACH,mBAAmB,EAAE,cAAc;wCACnC,OAAO,SAAA;qCACV,EAAC;;;qBAET,CAAC,CAAC;gBAEH,sBAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAC;;;KAChC;IACL,uBAAC;AAAD,CA1LA,AA0LC,IAAA;AA1LY,4CAAgB","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\";\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 Error(\"Additional condition can not be used with ManyToOne or OneToOne owner relations.\");\n\n const results = rawEntities.map(rawEntity => {\n const result: ObjectLiteral = {};\n relationIdAttr.relation.joinColumns.forEach(joinColumn => {\n result[joinColumn.databaseName] = this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils.buildColumnAlias(this.connection.driver, relationIdAttr.parentAlias, joinColumn.databaseName)], joinColumn.referencedColumn!);\n });\n\n relationIdAttr.relation.entityMetadata.primaryColumns.forEach(primaryColumn => {\n result[primaryColumn.databaseName] = this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils.buildColumnAlias(this.connection.driver, relationIdAttr.parentAlias, primaryColumn.databaseName)], primaryColumn);\n });\n return result;\n });\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 parameters: ObjectLiteral = {};\n const condition = rawEntities.map((rawEntity, index) => {\n return joinColumns.map(joinColumn => {\n const parameterName = joinColumn.databaseName + index;\n parameters[parameterName] = rawEntity[DriverUtils.buildColumnAlias(this.connection.driver, relationIdAttr.parentAlias, joinColumn.referencedColumn!.databaseName)];\n return tableAlias + \".\" + joinColumn.propertyPath + \" = :\" + parameterName;\n }).join(\" AND \");\n }).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.buildColumnAlias(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 joinColumnConditions = mappedColumns.map((mappedColumn, index) => {\n return Object.keys(mappedColumn).map(key => {\n const parameterName = key + index;\n parameters[parameterName] = mappedColumn[key];\n return junctionAlias + \".\" + key + \" = :\" + parameterName;\n }).join(\" AND \");\n });\n\n const inverseJoinColumnCondition = inverseJoinColumns.map(joinColumn => {\n return junctionAlias + \".\" + joinColumn.propertyPath + \" = \" + inverseSideTableAlias + \".\" + joinColumn.referencedColumn!.propertyPath;\n }).join(\" AND \");\n\n const condition = joinColumnConditions.map(condition => {\n return \"(\" + condition + \" AND \" + inverseJoinColumnCondition + \")\";\n }).join(\" OR \");\n\n const qb = this.connection.createQueryBuilder(this.queryRunner);\n\n inverseJoinColumns.forEach(joinColumn => {\n qb.addSelect(junctionAlias + \".\" + joinColumn.propertyPath, joinColumn.databaseName)\n .addOrderBy(junctionAlias + \".\" + joinColumn.propertyPath);\n });\n\n joinColumns.forEach(joinColumn => {\n qb.addSelect(junctionAlias + \".\" + joinColumn.propertyPath, joinColumn.databaseName)\n .addOrderBy(junctionAlias + \".\" + joinColumn.propertyPath);\n });\n\n qb.from(inverseSideTableName, inverseSideTableAlias)\n .innerJoin(junctionTableName, junctionAlias, condition)\n .setParameters(parameters);\n\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb);\n\n const results = await qb.getRawMany();\n results.forEach(result => {\n [...joinColumns, ...inverseJoinColumns].forEach(column => {\n result[column.databaseName] = this.connection.driver.prepareHydratedValue(result[column.databaseName], column.referencedColumn!);\n });\n });\n\n return {\n relationIdAttribute: relationIdAttr,\n results\n };\n }\n });\n\n return Promise.all(promises);\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/query-builder/relation-id/RelationIdLoader.ts"],"names":[],"mappings":"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","file":"RelationIdLoader.js","sourcesContent":["import {RelationIdAttribute} from \"./RelationIdAttribute\";\nimport {Connection} from \"../../connection/Connection\";\nimport {RelationIdLoadResult} from \"./RelationIdLoadResult\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\nimport {DriverUtils} from \"../../driver/DriverUtils\";\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 Error(\"Additional condition can not be used with ManyToOne or OneToOne owner relations.\");\n\n const results = rawEntities.map(rawEntity => {\n const result: ObjectLiteral = {};\n relationIdAttr.relation.joinColumns.forEach(joinColumn => {\n result[joinColumn.databaseName] = this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils.buildColumnAlias(this.connection.driver, relationIdAttr.parentAlias, joinColumn.databaseName)], joinColumn.referencedColumn!);\n });\n\n relationIdAttr.relation.entityMetadata.primaryColumns.forEach(primaryColumn => {\n result[primaryColumn.databaseName] = this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils.buildColumnAlias(this.connection.driver, relationIdAttr.parentAlias, primaryColumn.databaseName)], primaryColumn);\n });\n return result;\n });\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 parameters: ObjectLiteral = {};\n const condition = rawEntities.map((rawEntity, index) => {\n return joinColumns.map(joinColumn => {\n const parameterName = joinColumn.databaseName + index;\n parameters[parameterName] = rawEntity[DriverUtils.buildColumnAlias(this.connection.driver, relationIdAttr.parentAlias, joinColumn.referencedColumn!.databaseName)];\n return tableAlias + \".\" + joinColumn.propertyPath + \" = :\" + parameterName;\n }).join(\" AND \");\n }).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.buildColumnAlias(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 joinColumnConditions = mappedColumns.map((mappedColumn, index) => {\n return Object.keys(mappedColumn).map(key => {\n const parameterName = key + index;\n parameters[parameterName] = mappedColumn[key];\n return junctionAlias + \".\" + key + \" = :\" + parameterName;\n }).join(\" AND \");\n });\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,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RelationIdMetadataToAttributeTransformer = void 0;
4
3
  var RelationIdAttribute_1 = require("./RelationIdAttribute");
5
4
  var RelationIdMetadataToAttributeTransformer = /** @class */ (function () {
6
5
  // -------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.ts"],"names":[],"mappings":";;;AAAA,6DAA0D;AAI1D;IAEI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,kDAAsB,aAAiC;QAAjC,kBAAa,GAAb,aAAa,CAAoB;IACvD,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E,4DAAS,GAAT;QAEI,cAAc;QACd,wBAAwB;QACxB,mDAAmD;QACnD,2BAA2B;QAC3B,oDAAoD;QACpD,iCAAiC;QACjC,6EAA6E;QARjF,iBA8BC;QApBG,oHAAoH;QACpH,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YAC9B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,UAAA,UAAU;gBAChE,IAAM,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,KAAI,CAAC,aAAa,CAAC,SAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC3F,KAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;SACN;QAED,mHAAmH;QACnH,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,IAAI;YAE1C,2FAA2F;YAC3F,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAC1C,OAAO;YAEX,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,UAAA,UAAU;gBACxC,IAAM,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBACxE,KAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAEpE,sEAAmB,GAA3B,UAA4B,eAAuB,EAAE,UAA8B;QAC/E,OAAO,IAAI,yCAAmB,CAAC,IAAI,CAAC,aAAa,EAAE;YAC/C,YAAY,EAAE,eAAe,GAAG,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY;YACtE,aAAa,EAAE,eAAe,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY;YAC9D,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;SACtD,CAAC,CAAC;IACP,CAAC;IAEL,+CAAC;AAAD,CA1DA,AA0DC,IAAA;AA1DY,4FAAwC","file":"RelationIdMetadataToAttributeTransformer.js","sourcesContent":["import {RelationIdAttribute} from \"./RelationIdAttribute\";\nimport {QueryExpressionMap} from \"../QueryExpressionMap\";\nimport {RelationIdMetadata} from \"../../metadata/RelationIdMetadata\";\n\nexport class RelationIdMetadataToAttributeTransformer {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected expressionMap: QueryExpressionMap) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transform() {\n\n // by example:\n // post has relation id:\n // @RelationId(post => post.categories) categoryIds\n // category has relation id\n // @RelationId(category => category.images) imageIds\n // we load post and join category\n // we expect post.categoryIds and post.category.imageIds to have relation ids\n\n // first create relation id attributes for all relation id metadatas of the main selected object (post from example)\n if (this.expressionMap.mainAlias) {\n this.expressionMap.mainAlias.metadata.relationIds.forEach(relationId => {\n const attribute = this.metadataToAttribute(this.expressionMap.mainAlias!.name, relationId);\n this.expressionMap.relationIdAttributes.push(attribute);\n });\n }\n\n // second create relation id attributes for all relation id metadatas of all joined objects (category from example)\n this.expressionMap.joinAttributes.forEach(join => {\n\n // ensure this join has a metadata, because relation id can only work for real orm entities\n if (!join.metadata || join.metadata.isJunction)\n return;\n\n join.metadata.relationIds.forEach(relationId => {\n const attribute = this.metadataToAttribute(join.alias.name, relationId);\n this.expressionMap.relationIdAttributes.push(attribute);\n });\n });\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n private metadataToAttribute(parentAliasName: string, relationId: RelationIdMetadata): RelationIdAttribute {\n return new RelationIdAttribute(this.expressionMap, {\n relationName: parentAliasName + \".\" + relationId.relation.propertyName, // category.images\n mapToProperty: parentAliasName + \".\" + relationId.propertyName, // category.imageIds\n alias: relationId.alias,\n queryBuilderFactory: relationId.queryBuilderFactory\n });\n }\n\n}"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.ts"],"names":[],"mappings":";;AAAA,6DAA0D;AAI1D;IAEI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,kDAAsB,aAAiC;QAAjC,kBAAa,GAAb,aAAa,CAAoB;IACvD,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E,4DAAS,GAAT;QAEI,cAAc;QACd,wBAAwB;QACxB,mDAAmD;QACnD,2BAA2B;QAC3B,oDAAoD;QACpD,iCAAiC;QACjC,6EAA6E;QARjF,iBA8BC;QApBG,oHAAoH;QACpH,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YAC9B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,UAAA,UAAU;gBAChE,IAAM,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,KAAI,CAAC,aAAa,CAAC,SAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC3F,KAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;SACN;QAED,mHAAmH;QACnH,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,IAAI;YAE1C,2FAA2F;YAC3F,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAC1C,OAAO;YAEX,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,UAAA,UAAU;gBACxC,IAAM,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBACxE,KAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAEpE,sEAAmB,GAA3B,UAA4B,eAAuB,EAAE,UAA8B;QAC/E,OAAO,IAAI,yCAAmB,CAAC,IAAI,CAAC,aAAa,EAAE;YAC/C,YAAY,EAAE,eAAe,GAAG,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY;YACtE,aAAa,EAAE,eAAe,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY;YAC9D,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;SACtD,CAAC,CAAC;IACP,CAAC;IAEL,+CAAC;AAAD,CA1DA,AA0DC,IAAA;AA1DY,4FAAwC","file":"RelationIdMetadataToAttributeTransformer.js","sourcesContent":["import {RelationIdAttribute} from \"./RelationIdAttribute\";\nimport {QueryExpressionMap} from \"../QueryExpressionMap\";\nimport {RelationIdMetadata} from \"../../metadata/RelationIdMetadata\";\n\nexport class RelationIdMetadataToAttributeTransformer {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected expressionMap: QueryExpressionMap) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transform() {\n\n // by example:\n // post has relation id:\n // @RelationId(post => post.categories) categoryIds\n // category has relation id\n // @RelationId(category => category.images) imageIds\n // we load post and join category\n // we expect post.categoryIds and post.category.imageIds to have relation ids\n\n // first create relation id attributes for all relation id metadatas of the main selected object (post from example)\n if (this.expressionMap.mainAlias) {\n this.expressionMap.mainAlias.metadata.relationIds.forEach(relationId => {\n const attribute = this.metadataToAttribute(this.expressionMap.mainAlias!.name, relationId);\n this.expressionMap.relationIdAttributes.push(attribute);\n });\n }\n\n // second create relation id attributes for all relation id metadatas of all joined objects (category from example)\n this.expressionMap.joinAttributes.forEach(join => {\n\n // ensure this join has a metadata, because relation id can only work for real orm entities\n if (!join.metadata || join.metadata.isJunction)\n return;\n\n join.metadata.relationIds.forEach(relationId => {\n const attribute = this.metadataToAttribute(join.alias.name, relationId);\n this.expressionMap.relationIdAttributes.push(attribute);\n });\n });\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n private metadataToAttribute(parentAliasName: string, relationId: RelationIdMetadata): RelationIdAttribute {\n return new RelationIdAttribute(this.expressionMap, {\n relationName: parentAliasName + \".\" + relationId.relation.propertyName, // category.images\n mapToProperty: parentAliasName + \".\" + relationId.propertyName, // category.imageIds\n alias: relationId.alias,\n queryBuilderFactory: relationId.queryBuilderFactory\n });\n }\n\n}"],"sourceRoot":"../.."}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DeleteResult = void 0;
4
3
  /**
5
4
  * Result object returned by DeleteQueryBuilder execution.
6
5
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/result/DeleteResult.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH;IAAA;IAWA,CAAC;IAAD,mBAAC;AAAD,CAXA,AAWC,IAAA;AAXY,oCAAY","file":"DeleteResult.js","sourcesContent":["/**\n * Result object returned by DeleteQueryBuilder execution.\n */\nexport class DeleteResult {\n /**\n * Raw SQL result returned by executed query.\n */\n raw: any;\n\n /**\n * Number of affected rows/documents\n * Not all drivers support this\n */\n affected?: number|null;\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/query-builder/result/DeleteResult.ts"],"names":[],"mappings":";;AAAA;;GAEG;AACH;IAAA;IAWA,CAAC;IAAD,mBAAC;AAAD,CAXA,AAWC,IAAA;AAXY,oCAAY","file":"DeleteResult.js","sourcesContent":["/**\n * Result object returned by DeleteQueryBuilder execution.\n */\nexport class DeleteResult {\n /**\n * Raw SQL result returned by executed query.\n */\n raw: any;\n\n /**\n * Number of affected rows/documents\n * Not all drivers support this\n */\n affected?: number|null;\n}\n"],"sourceRoot":"../.."}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InsertResult = void 0;
4
3
  /**
5
4
  * Result object returned by InsertQueryBuilder execution.
6
5
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/result/InsertResult.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH;IAAA;QAEI;;;WAGG;QACH,gBAAW,GAAoB,EAAE,CAAC;QAElC;;;WAGG;QACH,kBAAa,GAAoB,EAAE,CAAC;IAOxC,CAAC;IAAD,mBAAC;AAAD,CAnBA,AAmBC,IAAA;AAnBY,oCAAY","file":"InsertResult.js","sourcesContent":["import {ObjectLiteral} from \"../../common/ObjectLiteral\";\n\n/**\n * Result object returned by InsertQueryBuilder execution.\n */\nexport class InsertResult {\n\n /**\n * Contains inserted entity id.\n * Has entity-like structure (not just column database name and values).\n */\n identifiers: ObjectLiteral[] = [];\n\n /**\n * Generated values returned by a database.\n * Has entity-like structure (not just column database name and values).\n */\n generatedMaps: ObjectLiteral[] = [];\n\n /**\n * Raw SQL result returned by executed query.\n */\n raw: any;\n\n}"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/query-builder/result/InsertResult.ts"],"names":[],"mappings":";;AAEA;;GAEG;AACH;IAAA;QAEI;;;WAGG;QACH,gBAAW,GAAoB,EAAE,CAAC;QAElC;;;WAGG;QACH,kBAAa,GAAoB,EAAE,CAAC;IAOxC,CAAC;IAAD,mBAAC;AAAD,CAnBA,AAmBC,IAAA;AAnBY,oCAAY","file":"InsertResult.js","sourcesContent":["import {ObjectLiteral} from \"../../common/ObjectLiteral\";\n\n/**\n * Result object returned by InsertQueryBuilder execution.\n */\nexport class InsertResult {\n\n /**\n * Contains inserted entity id.\n * Has entity-like structure (not just column database name and values).\n */\n identifiers: ObjectLiteral[] = [];\n\n /**\n * Generated values returned by a database.\n * Has entity-like structure (not just column database name and values).\n */\n generatedMaps: ObjectLiteral[] = [];\n\n /**\n * Raw SQL result returned by executed query.\n */\n raw: any;\n\n}"],"sourceRoot":"../.."}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UpdateResult = void 0;
4
3
  /**
5
4
  * Result object returned by UpdateQueryBuilder execution.
6
5
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/result/UpdateResult.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH;IAAA;QAaI;;;WAGG;QACH,oCAAoC;QAEpC;;;WAGG;QACH,kBAAa,GAAoB,EAAE,CAAC;IAExC,CAAC;IAAD,mBAAC;AAAD,CAzBA,AAyBC,IAAA;AAzBY,oCAAY","file":"UpdateResult.js","sourcesContent":["import {ObjectLiteral} from \"../../common/ObjectLiteral\";\n\n/**\n * Result object returned by UpdateQueryBuilder execution.\n */\nexport class UpdateResult {\n\n /**\n * Raw SQL result returned by executed query.\n */\n raw: any;\n\n /**\n * Number of affected rows/documents\n * Not all drivers support this\n */\n affected?: number;\n\n /**\n * Contains inserted entity id.\n * Has entity-like structure (not just column database name and values).\n */\n // identifier: ObjectLiteral[] = [];\n\n /**\n * Generated values returned by a database.\n * Has entity-like structure (not just column database name and values).\n */\n generatedMaps: ObjectLiteral[] = [];\n\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/query-builder/result/UpdateResult.ts"],"names":[],"mappings":";;AAEA;;GAEG;AACH;IAAA;QAaI;;;WAGG;QACH,oCAAoC;QAEpC;;;WAGG;QACH,kBAAa,GAAoB,EAAE,CAAC;IAExC,CAAC;IAAD,mBAAC;AAAD,CAzBA,AAyBC,IAAA;AAzBY,oCAAY","file":"UpdateResult.js","sourcesContent":["import {ObjectLiteral} from \"../../common/ObjectLiteral\";\n\n/**\n * Result object returned by UpdateQueryBuilder execution.\n */\nexport class UpdateResult {\n\n /**\n * Raw SQL result returned by executed query.\n */\n raw: any;\n\n /**\n * Number of affected rows/documents\n * Not all drivers support this\n */\n affected?: number;\n\n /**\n * Contains inserted entity id.\n * Has entity-like structure (not just column database name and values).\n */\n // identifier: ObjectLiteral[] = [];\n\n /**\n * Generated values returned by a database.\n * Has entity-like structure (not just column database name and values).\n */\n generatedMaps: ObjectLiteral[] = [];\n\n}\n"],"sourceRoot":"../.."}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DocumentToEntityTransformer = void 0;
4
3
  /**
5
4
  * Transforms raw document into entity object.
6
5
  * Entity is constructed based on its entity metadata.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/transformer/DocumentToEntityTransformer.ts"],"names":[],"mappings":"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","file":"DocumentToEntityTransformer.js","sourcesContent":["import {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {EmbeddedMetadata} from \"../../metadata/EmbeddedMetadata\";\n\n/**\n * Transforms raw document into entity object.\n * Entity is constructed based on its entity metadata.\n */\nexport class DocumentToEntityTransformer {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(// private selectionMap: AliasMap,\n // private joinMappings: JoinMapping[],\n // private relationCountMetas: RelationCountAttribute[],\n private enableRelationIdValues: boolean = false\n ) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transformAll(documents: ObjectLiteral[], metadata: EntityMetadata) {\n return documents.map(document => this.transform(document, metadata));\n }\n\n transform(document: any, metadata: EntityMetadata) {\n const entity: any = metadata.create();\n let hasData = false;\n\n // handle _id property the special way\n if (metadata.objectIdColumn && document[metadata.objectIdColumn.databaseNameWithoutPrefixes]) {\n // todo: we can't use driver in this class\n // do we really need prepare hydrated value here? If no then no problem. If yes then think maybe prepareHydratedValue process should be extracted out of driver class?\n // entity[metadata.objectIdColumn.propertyName] = this.driver.prepareHydratedValue(document[metadata.objectIdColumn.name\"], metadata.objectIdColumn);\n entity[metadata.objectIdColumn.propertyName] = document[metadata.objectIdColumn.databaseNameWithoutPrefixes];\n hasData = true;\n }\n\n // add special columns that contains relation ids\n if (this.enableRelationIdValues) {\n metadata.columns.filter(column => !!column.relationMetadata).forEach(column => {\n const valueInObject = document[column.databaseNameWithoutPrefixes];\n if (valueInObject !== undefined && valueInObject !== null && column.propertyName) {\n // todo: we can't use driver in this class\n // const value = this.driver.prepareHydratedValue(valueInObject, column);\n entity[column.propertyName] = valueInObject;\n hasData = true;\n }\n });\n }\n\n /*this.joinMappings\n .filter(joinMapping => joinMapping.parentName === alias.name && !joinMapping.alias.relationOwnerSelection && joinMapping.alias.target)\n .map(joinMapping => {\n const relatedEntities = this.transformRawResultsGroup(rawSqlResults, joinMapping.alias);\n const isResultArray = joinMapping.isMany;\n const result = !isResultArray ? relatedEntities[0] : relatedEntities;\n\n if (result && (!isResultArray || result.length > 0)) {\n entity[joinMapping.propertyName] = result;\n hasData = true;\n }\n });*/\n\n // get value from columns selections and put them into object\n metadata.ownColumns.forEach(column => {\n const valueInObject = document[column.databaseNameWithoutPrefixes];\n if (valueInObject !== undefined &&\n valueInObject !== null &&\n column.propertyName &&\n !column.isVirtual) {\n // const value = this.driver.prepareHydratedValue(valueInObject, column);\n\n entity[column.propertyName] = valueInObject;\n hasData = true;\n }\n });\n\n const addEmbeddedValuesRecursively = (entity: any, document: any, embeddeds: EmbeddedMetadata[]) => {\n embeddeds.forEach(embedded => {\n if (!document[embedded.prefix])\n return;\n\n if (embedded.isArray) {\n entity[embedded.propertyName] = (document[embedded.prefix] as any[]).map((subValue: any, index: number) => {\n const newItem = embedded.create();\n embedded.columns.forEach(column => {\n newItem[column.propertyName] = subValue[column.databaseNameWithoutPrefixes];\n });\n addEmbeddedValuesRecursively(newItem, document[embedded.prefix][index], embedded.embeddeds);\n return newItem;\n });\n\n } else {\n if (embedded.embeddeds.length && !entity[embedded.propertyName]) \n entity[embedded.propertyName] = embedded.create();\n \n embedded.columns.forEach(column => {\n const value = document[embedded.prefix][column.databaseNameWithoutPrefixes];\n if (value === undefined) return;\n\n if (!entity[embedded.propertyName])\n entity[embedded.propertyName] = embedded.create();\n\n entity[embedded.propertyName][column.propertyName] = value;\n });\n }\n addEmbeddedValuesRecursively(entity[embedded.propertyName], document[embedded.prefix], embedded.embeddeds);\n });\n };\n\n addEmbeddedValuesRecursively(entity, document, metadata.embeddeds);\n\n // if relation is loaded then go into it recursively and transform its values too\n /*metadata.relations.forEach(relation => {\n const relationAlias = this.selectionMap.findSelectionByParent(alias.name, relation.propertyName);\n if (relationAlias) {\n const joinMapping = this.joinMappings.find(joinMapping => joinMapping.type === \"join\" && joinMapping.alias === relationAlias);\n const relatedEntities = this.transformRawResultsGroup(rawSqlResults, relationAlias);\n const isResultArray = relation.isManyToMany || relation.isOneToMany;\n const result = !isResultArray ? relatedEntities[0] : relatedEntities;\n\n if (result) {\n let propertyName = relation.propertyName;\n if (joinMapping) {\n propertyName = joinMapping.propertyName;\n }\n\n if (relation.isLazy) {\n entity[\"__\" + propertyName + \"__\"] = result;\n } else {\n entity[propertyName] = result;\n }\n\n if (!isResultArray || result.length > 0)\n hasData = true;\n }\n }\n\n // if relation has id field then relation id/ids to that field.\n if (relation.isManyToMany) {\n if (relationAlias) {\n const ids: any[] = [];\n const joinMapping = this.joinMappings.find(joinMapping => joinMapping.type === \"relationId\" && joinMapping.alias === relationAlias);\n\n if (relation.idField || joinMapping) {\n const propertyName = joinMapping ? joinMapping.propertyName : relation.idField as string;\n const junctionMetadata = relation.junctionEntityMetadata;\n const columnName = relation.isOwning ? junctionMetadata.columns[1].name : junctionMetadata.columns[0].name;\n\n rawSqlResults.forEach(results => {\n if (relationAlias) {\n const resultsKey = relationAlias.name + \"_\" + columnName;\n const value = this.driver.prepareHydratedValue(results[resultsKey], relation.referencedColumn);\n if (value !== undefined && value !== null)\n ids.push(value);\n }\n });\n\n if (ids && ids.length)\n entity[propertyName] = ids;\n }\n }\n } else if (relation.idField) {\n const relationName = relation.name;\n entity[relation.idField] = this.driver.prepareHydratedValue(rawSqlResults[0][alias.name + \"_\" + relationName], relation.referencedColumn);\n }\n\n // if relation counter\n this.relationCountMetas.forEach(joinMeta => {\n if (joinMeta.alias === relationAlias) {\n // console.log(\"relation count was found for relation: \", relation);\n // joinMeta.entity = entity;\n joinMeta.entities.push({ entity: entity, metadata: metadata });\n // console.log(joinMeta);\n // console.log(\"---------------------\");\n }\n });\n });*/\n\n return hasData ? entity : null;\n }\n\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/query-builder/transformer/DocumentToEntityTransformer.ts"],"names":[],"mappings":";;AAIA;;;GAGG;AACH;IAEI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,qCAAY,kCAAkC;IAClC,uCAAuC;IACvC,wDAAwD;IAChD,sBAAuC;QAAvC,uCAAA,EAAA,8BAAuC;QAAvC,2BAAsB,GAAtB,sBAAsB,CAAiB;IAE3D,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E,kDAAY,GAAZ,UAAa,SAA0B,EAAE,QAAwB;QAAjE,iBAEC;QADG,OAAO,SAAS,CAAC,GAAG,CAAC,UAAA,QAAQ,IAAI,OAAA,KAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAlC,CAAkC,CAAC,CAAC;IACzE,CAAC;IAED,+CAAS,GAAT,UAAU,QAAa,EAAE,QAAwB;QAC7C,IAAM,MAAM,GAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;QACtC,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,sCAAsC;QACtC,IAAI,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,2BAA2B,CAAC,EAAE;YAC1F,0CAA0C;YAC1C,sKAAsK;YACtK,qJAAqJ;YACrJ,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,2BAA2B,CAAC,CAAC;YAC7G,OAAO,GAAG,IAAI,CAAC;SAClB;QAED,iDAAiD;QACjD,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC7B,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,UAAA,MAAM,IAAI,OAAA,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAzB,CAAyB,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM;gBACvE,IAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;gBACnE,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,IAAI,IAAI,MAAM,CAAC,YAAY,EAAE;oBAC9E,0CAA0C;oBAC1C,yEAAyE;oBACzE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,aAAa,CAAC;oBAC5C,OAAO,GAAG,IAAI,CAAC;iBAClB;YACL,CAAC,CAAC,CAAC;SACN;QAED;;;;;;;;;;;iBAWS;QAET,6DAA6D;QAC7D,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,MAAM;YAC9B,IAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;YACnE,IAAI,aAAa,KAAK,SAAS;gBAC3B,aAAa,KAAK,IAAI;gBACtB,MAAM,CAAC,YAAY;gBACnB,CAAC,MAAM,CAAC,SAAS,EAAE;gBACnB,yEAAyE;gBAEzE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,aAAa,CAAC;gBAC5C,OAAO,GAAG,IAAI,CAAC;aAClB;QACL,CAAC,CAAC,CAAC;QAEH,IAAM,4BAA4B,GAAG,UAAC,MAAW,EAAE,QAAa,EAAE,SAA6B;YAC3F,SAAS,CAAC,OAAO,CAAC,UAAA,QAAQ;gBACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC1B,OAAO;gBAEX,IAAI,QAAQ,CAAC,OAAO,EAAE;oBAClB,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAW,CAAC,GAAG,CAAC,UAAC,QAAa,EAAE,KAAa;wBAClG,IAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;wBAClC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,UAAA,MAAM;4BAC3B,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;wBAChF,CAAC,CAAC,CAAC;wBACH,4BAA4B,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;wBAC5F,OAAO,OAAO,CAAC;oBACnB,CAAC,CAAC,CAAC;iBAEN;qBAAM;oBACH,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;wBAC3D,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;oBAEtD,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,UAAA,MAAM;wBAC3B,IAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;wBAC5E,IAAI,KAAK,KAAK,SAAS;4BAAE,OAAO;wBAEhC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;4BAC9B,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;wBAEtD,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;oBAC/D,CAAC,CAAC,CAAC;iBACN;gBACD,4BAA4B,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC/G,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,4BAA4B,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEnE,iFAAiF;QACjF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAgEK;QAEL,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACnC,CAAC;IAEL,kCAAC;AAAD,CAnLA,AAmLC,IAAA;AAnLY,kEAA2B","file":"DocumentToEntityTransformer.js","sourcesContent":["import {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {EmbeddedMetadata} from \"../../metadata/EmbeddedMetadata\";\n\n/**\n * Transforms raw document into entity object.\n * Entity is constructed based on its entity metadata.\n */\nexport class DocumentToEntityTransformer {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(// private selectionMap: AliasMap,\n // private joinMappings: JoinMapping[],\n // private relationCountMetas: RelationCountAttribute[],\n private enableRelationIdValues: boolean = false\n ) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transformAll(documents: ObjectLiteral[], metadata: EntityMetadata) {\n return documents.map(document => this.transform(document, metadata));\n }\n\n transform(document: any, metadata: EntityMetadata) {\n const entity: any = metadata.create();\n let hasData = false;\n\n // handle _id property the special way\n if (metadata.objectIdColumn && document[metadata.objectIdColumn.databaseNameWithoutPrefixes]) {\n // todo: we can't use driver in this class\n // do we really need prepare hydrated value here? If no then no problem. If yes then think maybe prepareHydratedValue process should be extracted out of driver class?\n // entity[metadata.objectIdColumn.propertyName] = this.driver.prepareHydratedValue(document[metadata.objectIdColumn.name\"], metadata.objectIdColumn);\n entity[metadata.objectIdColumn.propertyName] = document[metadata.objectIdColumn.databaseNameWithoutPrefixes];\n hasData = true;\n }\n\n // add special columns that contains relation ids\n if (this.enableRelationIdValues) {\n metadata.columns.filter(column => !!column.relationMetadata).forEach(column => {\n const valueInObject = document[column.databaseNameWithoutPrefixes];\n if (valueInObject !== undefined && valueInObject !== null && column.propertyName) {\n // todo: we can't use driver in this class\n // const value = this.driver.prepareHydratedValue(valueInObject, column);\n entity[column.propertyName] = valueInObject;\n hasData = true;\n }\n });\n }\n\n /*this.joinMappings\n .filter(joinMapping => joinMapping.parentName === alias.name && !joinMapping.alias.relationOwnerSelection && joinMapping.alias.target)\n .map(joinMapping => {\n const relatedEntities = this.transformRawResultsGroup(rawSqlResults, joinMapping.alias);\n const isResultArray = joinMapping.isMany;\n const result = !isResultArray ? relatedEntities[0] : relatedEntities;\n\n if (result && (!isResultArray || result.length > 0)) {\n entity[joinMapping.propertyName] = result;\n hasData = true;\n }\n });*/\n\n // get value from columns selections and put them into object\n metadata.ownColumns.forEach(column => {\n const valueInObject = document[column.databaseNameWithoutPrefixes];\n if (valueInObject !== undefined &&\n valueInObject !== null &&\n column.propertyName &&\n !column.isVirtual) {\n // const value = this.driver.prepareHydratedValue(valueInObject, column);\n\n entity[column.propertyName] = valueInObject;\n hasData = true;\n }\n });\n\n const addEmbeddedValuesRecursively = (entity: any, document: any, embeddeds: EmbeddedMetadata[]) => {\n embeddeds.forEach(embedded => {\n if (!document[embedded.prefix])\n return;\n\n if (embedded.isArray) {\n entity[embedded.propertyName] = (document[embedded.prefix] as any[]).map((subValue: any, index: number) => {\n const newItem = embedded.create();\n embedded.columns.forEach(column => {\n newItem[column.propertyName] = subValue[column.databaseNameWithoutPrefixes];\n });\n addEmbeddedValuesRecursively(newItem, document[embedded.prefix][index], embedded.embeddeds);\n return newItem;\n });\n\n } else {\n if (embedded.embeddeds.length && !entity[embedded.propertyName]) \n entity[embedded.propertyName] = embedded.create();\n \n embedded.columns.forEach(column => {\n const value = document[embedded.prefix][column.databaseNameWithoutPrefixes];\n if (value === undefined) return;\n\n if (!entity[embedded.propertyName])\n entity[embedded.propertyName] = embedded.create();\n\n entity[embedded.propertyName][column.propertyName] = value;\n });\n }\n addEmbeddedValuesRecursively(entity[embedded.propertyName], document[embedded.prefix], embedded.embeddeds);\n });\n };\n\n addEmbeddedValuesRecursively(entity, document, metadata.embeddeds);\n\n // if relation is loaded then go into it recursively and transform its values too\n /*metadata.relations.forEach(relation => {\n const relationAlias = this.selectionMap.findSelectionByParent(alias.name, relation.propertyName);\n if (relationAlias) {\n const joinMapping = this.joinMappings.find(joinMapping => joinMapping.type === \"join\" && joinMapping.alias === relationAlias);\n const relatedEntities = this.transformRawResultsGroup(rawSqlResults, relationAlias);\n const isResultArray = relation.isManyToMany || relation.isOneToMany;\n const result = !isResultArray ? relatedEntities[0] : relatedEntities;\n\n if (result) {\n let propertyName = relation.propertyName;\n if (joinMapping) {\n propertyName = joinMapping.propertyName;\n }\n\n if (relation.isLazy) {\n entity[\"__\" + propertyName + \"__\"] = result;\n } else {\n entity[propertyName] = result;\n }\n\n if (!isResultArray || result.length > 0)\n hasData = true;\n }\n }\n\n // if relation has id field then relation id/ids to that field.\n if (relation.isManyToMany) {\n if (relationAlias) {\n const ids: any[] = [];\n const joinMapping = this.joinMappings.find(joinMapping => joinMapping.type === \"relationId\" && joinMapping.alias === relationAlias);\n\n if (relation.idField || joinMapping) {\n const propertyName = joinMapping ? joinMapping.propertyName : relation.idField as string;\n const junctionMetadata = relation.junctionEntityMetadata;\n const columnName = relation.isOwning ? junctionMetadata.columns[1].name : junctionMetadata.columns[0].name;\n\n rawSqlResults.forEach(results => {\n if (relationAlias) {\n const resultsKey = relationAlias.name + \"_\" + columnName;\n const value = this.driver.prepareHydratedValue(results[resultsKey], relation.referencedColumn);\n if (value !== undefined && value !== null)\n ids.push(value);\n }\n });\n\n if (ids && ids.length)\n entity[propertyName] = ids;\n }\n }\n } else if (relation.idField) {\n const relationName = relation.name;\n entity[relation.idField] = this.driver.prepareHydratedValue(rawSqlResults[0][alias.name + \"_\" + relationName], relation.referencedColumn);\n }\n\n // if relation counter\n this.relationCountMetas.forEach(joinMeta => {\n if (joinMeta.alias === relationAlias) {\n // console.log(\"relation count was found for relation: \", relation);\n // joinMeta.entity = entity;\n joinMeta.entities.push({ entity: entity, metadata: metadata });\n // console.log(joinMeta);\n // console.log(\"---------------------\");\n }\n });\n });*/\n\n return hasData ? entity : null;\n }\n\n}\n"],"sourceRoot":"../.."}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PlainObjectToDatabaseEntityTransformer = void 0;
4
3
  var tslib_1 = require("tslib");
5
4
  /**
6
5
  */
@@ -15,14 +14,14 @@ var LoadMapItem = /** @class */ (function () {
15
14
  get: function () {
16
15
  return this.metadata.target;
17
16
  },
18
- enumerable: false,
17
+ enumerable: true,
19
18
  configurable: true
20
19
  });
21
20
  Object.defineProperty(LoadMapItem.prototype, "id", {
22
21
  get: function () {
23
22
  return this.metadata.getEntityIdMixedMap(this.plainEntity);
24
23
  },
25
- enumerable: false,
24
+ enumerable: true,
26
25
  configurable: true
27
26
  });
28
27
  return LoadMapItem;
@@ -35,7 +34,7 @@ var LoadMap = /** @class */ (function () {
35
34
  get: function () {
36
35
  return this.loadMapItems.find(function (item) { return !item.relation && !item.parentLoadMapItem; });
37
36
  },
38
- enumerable: false,
37
+ enumerable: true,
39
38
  configurable: true
40
39
  });
41
40
  LoadMap.prototype.addLoadMap = function (newLoadMap) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.ts"],"names":[],"mappings":"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","file":"PlainObjectToDatabaseEntityTransformer.js","sourcesContent":["import {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {EntityManager} from \"../../entity-manager/EntityManager\";\nimport {RelationMetadata} from \"../../metadata/RelationMetadata\";\n\n/**\n */\nclass LoadMapItem {\n\n entity?: ObjectLiteral;\n plainEntity: ObjectLiteral;\n metadata: EntityMetadata;\n parentLoadMapItem?: LoadMapItem;\n relation?: RelationMetadata;\n\n constructor(plainEntity: ObjectLiteral,\n metadata: EntityMetadata,\n parentLoadMapItem?: LoadMapItem,\n relation?: RelationMetadata) {\n this.plainEntity = plainEntity;\n this.metadata = metadata;\n this.parentLoadMapItem = parentLoadMapItem;\n this.relation = relation;\n }\n\n get target(): Function|string {\n return this.metadata.target;\n }\n\n get id(): any {\n return this.metadata.getEntityIdMixedMap(this.plainEntity);\n }\n\n}\n\nclass LoadMap {\n\n loadMapItems: LoadMapItem[] = [];\n\n get mainLoadMapItem(): LoadMapItem|undefined {\n return this.loadMapItems.find(item => !item.relation && !item.parentLoadMapItem);\n }\n\n addLoadMap(newLoadMap: LoadMapItem) {\n const item = this.loadMapItems.find(item => item.target === newLoadMap.target && item.id === newLoadMap.id);\n if (!item)\n this.loadMapItems.push(newLoadMap);\n }\n\n fillEntities(target: Function|string, entities: any[]) {\n entities.forEach(entity => {\n const item = this.loadMapItems.find(loadMapItem => {\n return loadMapItem.target === target && loadMapItem.metadata.compareEntities(entity, loadMapItem.plainEntity);\n });\n if (item)\n item.entity = entity;\n });\n }\n\n groupByTargetIds(): { target: Function|string, ids: any[] }[] {\n const groups: { target: Function|string, ids: any[] }[] = [];\n this.loadMapItems.forEach(loadMapItem => {\n let group = groups.find(group => group.target === loadMapItem.target);\n if (!group) {\n group = { target: loadMapItem.target, ids: [] };\n groups.push(group);\n }\n\n group.ids.push(loadMapItem.id);\n });\n return groups;\n }\n\n}\n\n/**\n * Transforms plain old javascript object\n * Entity is constructed based on its entity metadata.\n */\nexport class PlainObjectToDatabaseEntityTransformer {\n\n constructor(private manager: EntityManager) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async transform(plainObject: ObjectLiteral, metadata: EntityMetadata): Promise<ObjectLiteral|undefined> {\n\n // if plain object does not have id then nothing to load really\n if (!metadata.hasAllPrimaryKeys(plainObject))\n return Promise.reject(\"Given object does not have a primary column, cannot transform it to database entity.\");\n\n // create a special load map that will hold all metadata that will be used to operate with entities easily\n const loadMap = new LoadMap();\n const fillLoadMap = (entity: ObjectLiteral, entityMetadata: EntityMetadata, parentLoadMapItem?: LoadMapItem, relation?: RelationMetadata) => {\n const item = new LoadMapItem(entity, entityMetadata, parentLoadMapItem, relation);\n loadMap.addLoadMap(item);\n\n entityMetadata\n .extractRelationValuesFromEntity(entity, metadata.relations)\n .filter(value => value !== null && value !== undefined)\n .forEach(([relation, value, inverseEntityMetadata]) => fillLoadMap(value, inverseEntityMetadata, item, relation));\n };\n fillLoadMap(plainObject, metadata);\n // load all entities and store them in the load map\n await Promise.all(loadMap.groupByTargetIds().map(targetWithIds => { // todo: fix type hinting\n return this.manager\n .findByIds<ObjectLiteral>(targetWithIds.target as any, targetWithIds.ids)\n .then(entities => loadMap.fillEntities(targetWithIds.target, entities));\n }));\n\n // go through each item in the load map and set their entity relationship using metadata stored in load map\n loadMap.loadMapItems.forEach(loadMapItem => {\n if (!loadMapItem.relation ||\n !loadMapItem.entity ||\n !loadMapItem.parentLoadMapItem ||\n !loadMapItem.parentLoadMapItem.entity)\n return;\n\n if (loadMapItem.relation.isManyToMany || loadMapItem.relation.isOneToMany) {\n if (!loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName])\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName] = [];\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName].push(loadMapItem.entity);\n\n } else {\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName] = loadMapItem.entity;\n }\n });\n\n return loadMap.mainLoadMapItem ? loadMap.mainLoadMapItem.entity : undefined;\n }\n\n}"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.ts"],"names":[],"mappings":"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","file":"PlainObjectToDatabaseEntityTransformer.js","sourcesContent":["import {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {EntityManager} from \"../../entity-manager/EntityManager\";\nimport {RelationMetadata} from \"../../metadata/RelationMetadata\";\n\n/**\n */\nclass LoadMapItem {\n\n entity?: ObjectLiteral;\n plainEntity: ObjectLiteral;\n metadata: EntityMetadata;\n parentLoadMapItem?: LoadMapItem;\n relation?: RelationMetadata;\n\n constructor(plainEntity: ObjectLiteral,\n metadata: EntityMetadata,\n parentLoadMapItem?: LoadMapItem,\n relation?: RelationMetadata) {\n this.plainEntity = plainEntity;\n this.metadata = metadata;\n this.parentLoadMapItem = parentLoadMapItem;\n this.relation = relation;\n }\n\n get target(): Function|string {\n return this.metadata.target;\n }\n\n get id(): any {\n return this.metadata.getEntityIdMixedMap(this.plainEntity);\n }\n\n}\n\nclass LoadMap {\n\n loadMapItems: LoadMapItem[] = [];\n\n get mainLoadMapItem(): LoadMapItem|undefined {\n return this.loadMapItems.find(item => !item.relation && !item.parentLoadMapItem);\n }\n\n addLoadMap(newLoadMap: LoadMapItem) {\n const item = this.loadMapItems.find(item => item.target === newLoadMap.target && item.id === newLoadMap.id);\n if (!item)\n this.loadMapItems.push(newLoadMap);\n }\n\n fillEntities(target: Function|string, entities: any[]) {\n entities.forEach(entity => {\n const item = this.loadMapItems.find(loadMapItem => {\n return loadMapItem.target === target && loadMapItem.metadata.compareEntities(entity, loadMapItem.plainEntity);\n });\n if (item)\n item.entity = entity;\n });\n }\n\n groupByTargetIds(): { target: Function|string, ids: any[] }[] {\n const groups: { target: Function|string, ids: any[] }[] = [];\n this.loadMapItems.forEach(loadMapItem => {\n let group = groups.find(group => group.target === loadMapItem.target);\n if (!group) {\n group = { target: loadMapItem.target, ids: [] };\n groups.push(group);\n }\n\n group.ids.push(loadMapItem.id);\n });\n return groups;\n }\n\n}\n\n/**\n * Transforms plain old javascript object\n * Entity is constructed based on its entity metadata.\n */\nexport class PlainObjectToDatabaseEntityTransformer {\n\n constructor(private manager: EntityManager) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async transform(plainObject: ObjectLiteral, metadata: EntityMetadata): Promise<ObjectLiteral|undefined> {\n\n // if plain object does not have id then nothing to load really\n if (!metadata.hasAllPrimaryKeys(plainObject))\n return Promise.reject(\"Given object does not have a primary column, cannot transform it to database entity.\");\n\n // create a special load map that will hold all metadata that will be used to operate with entities easily\n const loadMap = new LoadMap();\n const fillLoadMap = (entity: ObjectLiteral, entityMetadata: EntityMetadata, parentLoadMapItem?: LoadMapItem, relation?: RelationMetadata) => {\n const item = new LoadMapItem(entity, entityMetadata, parentLoadMapItem, relation);\n loadMap.addLoadMap(item);\n\n entityMetadata\n .extractRelationValuesFromEntity(entity, metadata.relations)\n .filter(value => value !== null && value !== undefined)\n .forEach(([relation, value, inverseEntityMetadata]) => fillLoadMap(value, inverseEntityMetadata, item, relation));\n };\n fillLoadMap(plainObject, metadata);\n // load all entities and store them in the load map\n await Promise.all(loadMap.groupByTargetIds().map(targetWithIds => { // todo: fix type hinting\n return this.manager\n .findByIds<ObjectLiteral>(targetWithIds.target as any, targetWithIds.ids)\n .then(entities => loadMap.fillEntities(targetWithIds.target, entities));\n }));\n\n // go through each item in the load map and set their entity relationship using metadata stored in load map\n loadMap.loadMapItems.forEach(loadMapItem => {\n if (!loadMapItem.relation ||\n !loadMapItem.entity ||\n !loadMapItem.parentLoadMapItem ||\n !loadMapItem.parentLoadMapItem.entity)\n return;\n\n if (loadMapItem.relation.isManyToMany || loadMapItem.relation.isOneToMany) {\n if (!loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName])\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName] = [];\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName].push(loadMapItem.entity);\n\n } else {\n loadMapItem.parentLoadMapItem.entity[loadMapItem.relation.propertyName] = loadMapItem.entity;\n }\n });\n\n return loadMap.mainLoadMapItem ? loadMap.mainLoadMapItem.entity : undefined;\n }\n\n}"],"sourceRoot":"../.."}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PlainObjectToNewEntityTransformer = void 0;
4
3
  /**
5
4
  * Transforms plain old javascript object
6
5
  * Entity is constructed based on its entity metadata.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/transformer/PlainObjectToNewEntityTransformer.ts"],"names":[],"mappings":"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","file":"PlainObjectToNewEntityTransformer.js","sourcesContent":["import {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\n\n/**\n * Transforms plain old javascript object\n * Entity is constructed based on its entity metadata.\n */\nexport class PlainObjectToNewEntityTransformer {\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transform<T>(newEntity: T, object: ObjectLiteral, metadata: EntityMetadata, getLazyRelationsPromiseValue: boolean = false): T {\n // console.log(\"groupAndTransform entity:\", newEntity);\n // console.log(\"groupAndTransform object:\", object);\n this.groupAndTransform(newEntity, object, metadata, getLazyRelationsPromiseValue);\n // console.log(\"result:\", newEntity);\n return newEntity;\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n /**\n * Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated\n * we need to group our result and we must have some unique id (primary key in our case)\n */\n private groupAndTransform(entity: ObjectLiteral, object: ObjectLiteral, metadata: EntityMetadata, getLazyRelationsPromiseValue: boolean = false): void {\n\n // console.log(\"groupAndTransform entity:\", entity);\n // console.log(\"groupAndTransform object:\", object);\n\n // copy regular column properties from the given object\n metadata.nonVirtualColumns.forEach(column => {\n const objectColumnValue = column.getEntityValue(object);\n if (objectColumnValue !== undefined)\n column.setEntityValue(entity, objectColumnValue);\n });\n\n // // copy relation properties from the given object\n if (metadata.relations.length) {\n metadata.relations.forEach(relation => {\n\n let entityRelatedValue = relation.getEntityValue(entity);\n const objectRelatedValue = relation.getEntityValue(object, getLazyRelationsPromiseValue);\n if (objectRelatedValue === undefined)\n return;\n\n if (relation.isOneToMany || relation.isManyToMany) {\n if (!Array.isArray(objectRelatedValue))\n return;\n\n if (!entityRelatedValue) {\n entityRelatedValue = [];\n relation.setEntityValue(entity, entityRelatedValue);\n }\n\n objectRelatedValue.forEach(objectRelatedValueItem => {\n\n // check if we have this item from the merging object in the original entity we merge into\n let objectRelatedValueEntity = (entityRelatedValue as any[]).find(entityRelatedValueItem => {\n return relation.inverseEntityMetadata.compareEntities(objectRelatedValueItem, entityRelatedValueItem);\n });\n\n // if such item already exist then merge new data into it, if its not we create a new entity and merge it into the array\n if (!objectRelatedValueEntity) {\n objectRelatedValueEntity = relation.inverseEntityMetadata.create();\n entityRelatedValue.push(objectRelatedValueEntity);\n }\n\n this.groupAndTransform(objectRelatedValueEntity, objectRelatedValueItem, relation.inverseEntityMetadata, getLazyRelationsPromiseValue);\n });\n\n } else {\n\n // if related object isn't an object (direct relation id for example)\n // we just set it to the entity relation, we don't need anything more from it\n // however we do it only if original entity does not have this relation set to object\n // to prevent full overriding of objects\n if (!(objectRelatedValue instanceof Object)) {\n if (!(entityRelatedValue instanceof Object))\n relation.setEntityValue(entity, objectRelatedValue);\n return;\n }\n\n if (!entityRelatedValue) {\n entityRelatedValue = relation.inverseEntityMetadata.create();\n relation.setEntityValue(entity, entityRelatedValue);\n }\n\n this.groupAndTransform(entityRelatedValue, objectRelatedValue, relation.inverseEntityMetadata, getLazyRelationsPromiseValue);\n }\n });\n }\n }\n\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/query-builder/transformer/PlainObjectToNewEntityTransformer.ts"],"names":[],"mappings":"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","file":"PlainObjectToNewEntityTransformer.js","sourcesContent":["import {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\n\n/**\n * Transforms plain old javascript object\n * Entity is constructed based on its entity metadata.\n */\nexport class PlainObjectToNewEntityTransformer {\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transform<T>(newEntity: T, object: ObjectLiteral, metadata: EntityMetadata, getLazyRelationsPromiseValue: boolean = false): T {\n // console.log(\"groupAndTransform entity:\", newEntity);\n // console.log(\"groupAndTransform object:\", object);\n this.groupAndTransform(newEntity, object, metadata, getLazyRelationsPromiseValue);\n // console.log(\"result:\", newEntity);\n return newEntity;\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n /**\n * Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated\n * we need to group our result and we must have some unique id (primary key in our case)\n */\n private groupAndTransform(entity: ObjectLiteral, object: ObjectLiteral, metadata: EntityMetadata, getLazyRelationsPromiseValue: boolean = false): void {\n\n // console.log(\"groupAndTransform entity:\", entity);\n // console.log(\"groupAndTransform object:\", object);\n\n // copy regular column properties from the given object\n metadata.nonVirtualColumns.forEach(column => {\n const objectColumnValue = column.getEntityValue(object);\n if (objectColumnValue !== undefined)\n column.setEntityValue(entity, objectColumnValue);\n });\n\n // // copy relation properties from the given object\n if (metadata.relations.length) {\n metadata.relations.forEach(relation => {\n\n let entityRelatedValue = relation.getEntityValue(entity);\n const objectRelatedValue = relation.getEntityValue(object, getLazyRelationsPromiseValue);\n if (objectRelatedValue === undefined)\n return;\n\n if (relation.isOneToMany || relation.isManyToMany) {\n if (!Array.isArray(objectRelatedValue))\n return;\n\n if (!entityRelatedValue) {\n entityRelatedValue = [];\n relation.setEntityValue(entity, entityRelatedValue);\n }\n\n objectRelatedValue.forEach(objectRelatedValueItem => {\n\n // check if we have this item from the merging object in the original entity we merge into\n let objectRelatedValueEntity = (entityRelatedValue as any[]).find(entityRelatedValueItem => {\n return relation.inverseEntityMetadata.compareEntities(objectRelatedValueItem, entityRelatedValueItem);\n });\n\n // if such item already exist then merge new data into it, if its not we create a new entity and merge it into the array\n if (!objectRelatedValueEntity) {\n objectRelatedValueEntity = relation.inverseEntityMetadata.create();\n entityRelatedValue.push(objectRelatedValueEntity);\n }\n\n this.groupAndTransform(objectRelatedValueEntity, objectRelatedValueItem, relation.inverseEntityMetadata, getLazyRelationsPromiseValue);\n });\n\n } else {\n\n // if related object isn't an object (direct relation id for example)\n // we just set it to the entity relation, we don't need anything more from it\n // however we do it only if original entity does not have this relation set to object\n // to prevent full overriding of objects\n if (!(objectRelatedValue instanceof Object)) {\n if (!(entityRelatedValue instanceof Object))\n relation.setEntityValue(entity, objectRelatedValue);\n return;\n }\n\n if (!entityRelatedValue) {\n entityRelatedValue = relation.inverseEntityMetadata.create();\n relation.setEntityValue(entity, entityRelatedValue);\n }\n\n this.groupAndTransform(entityRelatedValue, objectRelatedValue, relation.inverseEntityMetadata, getLazyRelationsPromiseValue);\n }\n });\n }\n }\n\n}\n"],"sourceRoot":"../.."}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RawSqlResultsToEntityTransformer = void 0;
4
3
  var tslib_1 = require("tslib");
5
4
  var OrmUtils_1 = require("../../util/OrmUtils");
6
5
  var DriverUtils_1 = require("../../driver/DriverUtils");