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,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SoftDeleteQueryBuilder = void 0;
4
3
  var tslib_1 = require("tslib");
5
4
  var CockroachDriver_1 = require("../driver/cockroachdb/CockroachDriver");
6
5
  var QueryBuilder_1 = require("./QueryBuilder");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/SoftDeleteQueryBuilder.ts"],"names":[],"mappings":"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","file":"SoftDeleteQueryBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {QueryBuilder} from \"./QueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {EntityTarget} from \"../common/EntityTarget\";\nimport {Connection} from \"../connection/Connection\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {WhereExpression} from \"./WhereExpression\";\nimport {Brackets} from \"./Brackets\";\nimport {UpdateResult} from \"./result/UpdateResult\";\nimport {ReturningStatementNotSupportedError} from \"../error/ReturningStatementNotSupportedError\";\nimport {ReturningResultsEntityUpdator} from \"./ReturningResultsEntityUpdator\";\nimport {SqljsDriver} from \"../driver/sqljs/SqljsDriver\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {BroadcasterResult} from \"../subscriber/BroadcasterResult\";\nimport {AbstractSqliteDriver} from \"../driver/sqlite-abstract/AbstractSqliteDriver\";\nimport {OrderByCondition} from \"../find-options/OrderByCondition\";\nimport {LimitOnUpdateNotSupportedError} from \"../error/LimitOnUpdateNotSupportedError\";\nimport {MissingDeleteDateColumnError} from \"../error/MissingDeleteDateColumnError\";\nimport {OracleDriver} from \"../driver/oracle/OracleDriver\";\nimport {UpdateValuesMissingError} from \"../error/UpdateValuesMissingError\";\nimport {EntitySchema} from \"../entity-schema/EntitySchema\";\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nexport class SoftDeleteQueryBuilder<Entity> extends QueryBuilder<Entity> implements WhereExpression {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connectionOrQueryBuilder: Connection|QueryBuilder<any>, queryRunner?: QueryRunner) {\n super(connectionOrQueryBuilder as any, queryRunner);\n this.expressionMap.aliasNamePrefixingEnabled = false;\n }\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated sql query without parameters being replaced.\n */\n getQuery(): string {\n let sql = this.createUpdateExpression();\n sql += this.createOrderByExpression();\n sql += this.createLimitExpression();\n return sql.trim();\n }\n\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n async execute(): Promise<UpdateResult> {\n const queryRunner = this.obtainQueryRunner();\n let transactionStartedByUs: boolean = false;\n\n try {\n\n // start transaction if it was enabled\n if (this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false) {\n await queryRunner.startTransaction();\n transactionStartedByUs = true;\n }\n\n // call before updation methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n const broadcastResult = new BroadcasterResult();\n queryRunner.broadcaster.broadcastBeforeUpdateEvent(broadcastResult, this.expressionMap.mainAlias!.metadata);\n if (broadcastResult.promises.length > 0) await Promise.all(broadcastResult.promises);\n }\n\n // if update entity mode is enabled we may need extra columns for the returning statement\n const returningResultsEntityUpdator = new ReturningResultsEntityUpdator(queryRunner, this.expressionMap);\n if (this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap.whereEntities.length > 0) {\n this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getUpdationReturningColumns();\n }\n\n // execute update query\n const [sql, parameters] = this.getQueryAndParameters();\n const updateResult = new UpdateResult();\n const result = await queryRunner.query(sql, parameters);\n\n const driver = queryRunner.connection.driver;\n if (driver instanceof PostgresDriver) {\n updateResult.raw = result[0];\n updateResult.affected = result[1];\n }\n else {\n updateResult.raw = result;\n }\n\n // if we are updating entities and entity updation is enabled we must update some of entity columns (like version, update date, etc.)\n if (this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap.whereEntities.length > 0) {\n await returningResultsEntityUpdator.update(updateResult, this.expressionMap.whereEntities);\n }\n\n // call after updation methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n const broadcastResult = new BroadcasterResult();\n queryRunner.broadcaster.broadcastAfterUpdateEvent(broadcastResult, this.expressionMap.mainAlias!.metadata);\n if (broadcastResult.promises.length > 0) await Promise.all(broadcastResult.promises);\n }\n\n // close transaction if we started it\n if (transactionStartedByUs)\n await queryRunner.commitTransaction();\n\n return updateResult;\n\n } catch (error) {\n\n // rollback transaction if we started it\n if (transactionStartedByUs) {\n try {\n await queryRunner.rollbackTransaction();\n } catch (rollbackError) { }\n }\n throw error;\n\n } finally {\n if (queryRunner !== this.queryRunner) { // means we created our own query runner\n await queryRunner.release();\n }\n if (this.connection.driver instanceof SqljsDriver && !queryRunner.isTransactionActive) {\n await this.connection.driver.autoSave();\n }\n }\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Specifies FROM which entity's table select/update/delete/soft-delete will be executed.\n * Also sets a main string alias of the selection data.\n */\n from<T>(entityTarget: EntityTarget<T>, aliasName?: string): SoftDeleteQueryBuilder<T> {\n entityTarget = entityTarget instanceof EntitySchema ? entityTarget.options.name : entityTarget;\n const mainAlias = this.createFromAlias(entityTarget, aliasName);\n this.expressionMap.setMainAlias(mainAlias);\n return (this as any) as SoftDeleteQueryBuilder<T>;\n }\n\n /**\n * Sets WHERE condition in the query builder.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n * Additionally you can add parameters used in where expression.\n */\n where(where: string|((qb: this) => string)|Brackets|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n const condition = this.computeWhereParameter(where);\n if (condition)\n this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n if (parameters)\n this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n andWhere(where: string|((qb: this) => string)|Brackets, parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"and\", condition: this.computeWhereParameter(where) });\n if (parameters) this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n orWhere(where: string|((qb: this) => string)|Brackets, parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"or\", condition: this.computeWhereParameter(where) });\n if (parameters) this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n whereInIds(ids: any|any[]): this {\n return this.where(this.createWhereIdsExpression(ids));\n }\n\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n andWhereInIds(ids: any|any[]): this {\n return this.andWhere(this.createWhereIdsExpression(ids));\n }\n\n /**\n * Adds new OR WHERE with conditions for the given ids.\n */\n orWhereInIds(ids: any|any[]): this {\n return this.orWhere(this.createWhereIdsExpression(ids));\n }\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n output(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n output(output: string): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this {\n return this.returning(output);\n }\n\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n returning(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n returning(returning: string): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this {\n\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported())\n throw new ReturningStatementNotSupportedError();\n\n this.expressionMap.returning = returning;\n return this;\n }\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n *\n * Calling order by without order set will remove all previously set order bys.\n */\n orderBy(): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(sort: string, order?: \"ASC\"|\"DESC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(order: OrderByCondition): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(sort?: string|OrderByCondition, order: \"ASC\"|\"DESC\" = \"ASC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this {\n if (sort) {\n if (sort instanceof Object) {\n this.expressionMap.orderBys = sort as OrderByCondition;\n } else {\n if (nulls) {\n this.expressionMap.orderBys = { [sort as string]: { order, nulls } };\n } else {\n this.expressionMap.orderBys = { [sort as string]: order };\n }\n }\n } else {\n this.expressionMap.orderBys = {};\n }\n return this;\n }\n\n /**\n * Adds ORDER BY condition in the query builder.\n */\n addOrderBy(sort: string, order: \"ASC\"|\"DESC\" = \"ASC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this {\n if (nulls) {\n this.expressionMap.orderBys[sort] = { order, nulls };\n } else {\n this.expressionMap.orderBys[sort] = order;\n }\n return this;\n }\n\n /**\n * Sets LIMIT - maximum number of rows to be selected.\n */\n limit(limit?: number): this {\n this.expressionMap.limit = limit;\n return this;\n }\n\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n whereEntity(entity: Entity|Entity[]): this {\n if (!this.expressionMap.mainAlias!.hasMetadata)\n throw new Error(`.whereEntity method can only be used on queries which update real entity table.`);\n\n this.expressionMap.wheres = [];\n const entities: Entity[] = Array.isArray(entity) ? entity : [entity];\n entities.forEach(entity => {\n\n const entityIdMap = this.expressionMap.mainAlias!.metadata.getEntityIdMap(entity);\n if (!entityIdMap)\n throw new Error(`Provided entity does not have ids set, cannot perform operation.`);\n\n this.orWhereInIds(entityIdMap);\n });\n\n this.expressionMap.whereEntities = entities;\n return this;\n }\n\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n updateEntity(enabled: boolean): this {\n this.expressionMap.updateEntity = enabled;\n return this;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates UPDATE express used to perform insert query.\n */\n protected createUpdateExpression() {\n const metadata = this.expressionMap.mainAlias!.hasMetadata ? this.expressionMap.mainAlias!.metadata : undefined;\n if (!metadata)\n throw new Error(`Cannot get entity metadata for the given alias \"${this.expressionMap.mainAlias}\"`);\n if (!metadata.deleteDateColumn) {\n throw new MissingDeleteDateColumnError(metadata);\n }\n\n // prepare columns and values to be updated\n const updateColumnAndValues: string[] = [];\n const newParameters: ObjectLiteral = {};\n\n switch (this.expressionMap.queryType) {\n case \"soft-delete\":\n updateColumnAndValues.push(this.escape(metadata.deleteDateColumn.databaseName) + \" = CURRENT_TIMESTAMP\");\n break;\n case \"restore\":\n updateColumnAndValues.push(this.escape(metadata.deleteDateColumn.databaseName) + \" = NULL\");\n break;\n default:\n throw new Error(`The queryType must be \"soft-delete\" or \"restore\"`);\n }\n if (metadata.versionColumn)\n updateColumnAndValues.push(this.escape(metadata.versionColumn.databaseName) + \" = \" + this.escape(metadata.versionColumn.databaseName) + \" + 1\");\n if (metadata.updateDateColumn)\n updateColumnAndValues.push(this.escape(metadata.updateDateColumn.databaseName) + \" = CURRENT_TIMESTAMP\"); // todo: fix issue with CURRENT_TIMESTAMP(6) being used, can \"DEFAULT\" be used?!\n\n if (updateColumnAndValues.length <= 0) {\n throw new UpdateValuesMissingError();\n }\n\n // we re-write parameters this way because we want our \"UPDATE ... SET\" parameters to be first in the list of \"nativeParameters\"\n // because some drivers like mysql depend on order of parameters\n if (this.connection.driver instanceof MysqlDriver ||\n this.connection.driver instanceof OracleDriver ||\n this.connection.driver instanceof AbstractSqliteDriver) {\n this.expressionMap.nativeParameters = Object.assign(newParameters, this.expressionMap.nativeParameters);\n }\n\n // get a table name and all column database names\n const whereExpression = this.createWhereExpression();\n const returningExpression = this.createReturningExpression();\n\n // generate and return sql update query\n if (returningExpression && (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof OracleDriver || this.connection.driver instanceof CockroachDriver)) {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")}${whereExpression} RETURNING ${returningExpression}`;\n\n } else if (returningExpression && this.connection.driver instanceof SqlServerDriver) {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")} OUTPUT ${returningExpression}${whereExpression}`;\n\n } else {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")}${whereExpression}`; // todo: how do we replace aliases in where to nothing?\n }\n }\n\n /**\n * Creates \"ORDER BY\" part of SQL query.\n */\n protected createOrderByExpression() {\n const orderBys = this.expressionMap.orderBys;\n if (Object.keys(orderBys).length > 0)\n return \" ORDER BY \" + Object.keys(orderBys)\n .map(columnName => {\n if (typeof orderBys[columnName] === \"string\") {\n return this.replacePropertyNames(columnName) + \" \" + orderBys[columnName];\n } else {\n return this.replacePropertyNames(columnName) + \" \" + (orderBys[columnName] as any).order + \" \" + (orderBys[columnName] as any).nulls;\n }\n })\n .join(\", \");\n\n return \"\";\n }\n\n /**\n * Creates \"LIMIT\" parts of SQL query.\n */\n protected createLimitExpression(): string {\n let limit: number|undefined = this.expressionMap.limit;\n\n if (limit) {\n if (this.connection.driver instanceof MysqlDriver) {\n return \" LIMIT \" + limit;\n } else {\n throw new LimitOnUpdateNotSupportedError();\n }\n }\n\n return \"\";\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/query-builder/SoftDeleteQueryBuilder.ts"],"names":[],"mappings":"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","file":"SoftDeleteQueryBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {QueryBuilder} from \"./QueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {EntityTarget} from \"../common/EntityTarget\";\nimport {Connection} from \"../connection/Connection\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {WhereExpression} from \"./WhereExpression\";\nimport {Brackets} from \"./Brackets\";\nimport {UpdateResult} from \"./result/UpdateResult\";\nimport {ReturningStatementNotSupportedError} from \"../error/ReturningStatementNotSupportedError\";\nimport {ReturningResultsEntityUpdator} from \"./ReturningResultsEntityUpdator\";\nimport {SqljsDriver} from \"../driver/sqljs/SqljsDriver\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {BroadcasterResult} from \"../subscriber/BroadcasterResult\";\nimport {AbstractSqliteDriver} from \"../driver/sqlite-abstract/AbstractSqliteDriver\";\nimport {OrderByCondition} from \"../find-options/OrderByCondition\";\nimport {LimitOnUpdateNotSupportedError} from \"../error/LimitOnUpdateNotSupportedError\";\nimport {MissingDeleteDateColumnError} from \"../error/MissingDeleteDateColumnError\";\nimport {OracleDriver} from \"../driver/oracle/OracleDriver\";\nimport {UpdateValuesMissingError} from \"../error/UpdateValuesMissingError\";\nimport {EntitySchema} from \"../entity-schema/EntitySchema\";\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nexport class SoftDeleteQueryBuilder<Entity> extends QueryBuilder<Entity> implements WhereExpression {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connectionOrQueryBuilder: Connection|QueryBuilder<any>, queryRunner?: QueryRunner) {\n super(connectionOrQueryBuilder as any, queryRunner);\n this.expressionMap.aliasNamePrefixingEnabled = false;\n }\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated sql query without parameters being replaced.\n */\n getQuery(): string {\n let sql = this.createUpdateExpression();\n sql += this.createOrderByExpression();\n sql += this.createLimitExpression();\n return sql.trim();\n }\n\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n async execute(): Promise<UpdateResult> {\n const queryRunner = this.obtainQueryRunner();\n let transactionStartedByUs: boolean = false;\n\n try {\n\n // start transaction if it was enabled\n if (this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false) {\n await queryRunner.startTransaction();\n transactionStartedByUs = true;\n }\n\n // call before updation methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n const broadcastResult = new BroadcasterResult();\n queryRunner.broadcaster.broadcastBeforeUpdateEvent(broadcastResult, this.expressionMap.mainAlias!.metadata);\n if (broadcastResult.promises.length > 0) await Promise.all(broadcastResult.promises);\n }\n\n // if update entity mode is enabled we may need extra columns for the returning statement\n const returningResultsEntityUpdator = new ReturningResultsEntityUpdator(queryRunner, this.expressionMap);\n if (this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap.whereEntities.length > 0) {\n this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getUpdationReturningColumns();\n }\n\n // execute update query\n const [sql, parameters] = this.getQueryAndParameters();\n const updateResult = new UpdateResult();\n const result = await queryRunner.query(sql, parameters);\n\n const driver = queryRunner.connection.driver;\n if (driver instanceof PostgresDriver) {\n updateResult.raw = result[0];\n updateResult.affected = result[1];\n }\n else {\n updateResult.raw = result;\n }\n\n // if we are updating entities and entity updation is enabled we must update some of entity columns (like version, update date, etc.)\n if (this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap.whereEntities.length > 0) {\n await returningResultsEntityUpdator.update(updateResult, this.expressionMap.whereEntities);\n }\n\n // call after updation methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n const broadcastResult = new BroadcasterResult();\n queryRunner.broadcaster.broadcastAfterUpdateEvent(broadcastResult, this.expressionMap.mainAlias!.metadata);\n if (broadcastResult.promises.length > 0) await Promise.all(broadcastResult.promises);\n }\n\n // close transaction if we started it\n if (transactionStartedByUs)\n await queryRunner.commitTransaction();\n\n return updateResult;\n\n } catch (error) {\n\n // rollback transaction if we started it\n if (transactionStartedByUs) {\n try {\n await queryRunner.rollbackTransaction();\n } catch (rollbackError) { }\n }\n throw error;\n\n } finally {\n if (queryRunner !== this.queryRunner) { // means we created our own query runner\n await queryRunner.release();\n }\n if (this.connection.driver instanceof SqljsDriver && !queryRunner.isTransactionActive) {\n await this.connection.driver.autoSave();\n }\n }\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Specifies FROM which entity's table select/update/delete/soft-delete will be executed.\n * Also sets a main string alias of the selection data.\n */\n from<T>(entityTarget: EntityTarget<T>, aliasName?: string): SoftDeleteQueryBuilder<T> {\n entityTarget = entityTarget instanceof EntitySchema ? entityTarget.options.name : entityTarget;\n const mainAlias = this.createFromAlias(entityTarget, aliasName);\n this.expressionMap.setMainAlias(mainAlias);\n return (this as any) as SoftDeleteQueryBuilder<T>;\n }\n\n /**\n * Sets WHERE condition in the query builder.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n * Additionally you can add parameters used in where expression.\n */\n where(where: string|((qb: this) => string)|Brackets|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n const condition = this.computeWhereParameter(where);\n if (condition)\n this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n if (parameters)\n this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n andWhere(where: string|((qb: this) => string)|Brackets, parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"and\", condition: this.computeWhereParameter(where) });\n if (parameters) this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n orWhere(where: string|((qb: this) => string)|Brackets, parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"or\", condition: this.computeWhereParameter(where) });\n if (parameters) this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n whereInIds(ids: any|any[]): this {\n return this.where(this.createWhereIdsExpression(ids));\n }\n\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n andWhereInIds(ids: any|any[]): this {\n return this.andWhere(this.createWhereIdsExpression(ids));\n }\n\n /**\n * Adds new OR WHERE with conditions for the given ids.\n */\n orWhereInIds(ids: any|any[]): this {\n return this.orWhere(this.createWhereIdsExpression(ids));\n }\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n output(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n output(output: string): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this {\n return this.returning(output);\n }\n\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n returning(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n returning(returning: string): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this {\n\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported())\n throw new ReturningStatementNotSupportedError();\n\n this.expressionMap.returning = returning;\n return this;\n }\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n *\n * Calling order by without order set will remove all previously set order bys.\n */\n orderBy(): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(sort: string, order?: \"ASC\"|\"DESC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(order: OrderByCondition): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(sort?: string|OrderByCondition, order: \"ASC\"|\"DESC\" = \"ASC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this {\n if (sort) {\n if (sort instanceof Object) {\n this.expressionMap.orderBys = sort as OrderByCondition;\n } else {\n if (nulls) {\n this.expressionMap.orderBys = { [sort as string]: { order, nulls } };\n } else {\n this.expressionMap.orderBys = { [sort as string]: order };\n }\n }\n } else {\n this.expressionMap.orderBys = {};\n }\n return this;\n }\n\n /**\n * Adds ORDER BY condition in the query builder.\n */\n addOrderBy(sort: string, order: \"ASC\"|\"DESC\" = \"ASC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this {\n if (nulls) {\n this.expressionMap.orderBys[sort] = { order, nulls };\n } else {\n this.expressionMap.orderBys[sort] = order;\n }\n return this;\n }\n\n /**\n * Sets LIMIT - maximum number of rows to be selected.\n */\n limit(limit?: number): this {\n this.expressionMap.limit = limit;\n return this;\n }\n\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n whereEntity(entity: Entity|Entity[]): this {\n if (!this.expressionMap.mainAlias!.hasMetadata)\n throw new Error(`.whereEntity method can only be used on queries which update real entity table.`);\n\n this.expressionMap.wheres = [];\n const entities: Entity[] = Array.isArray(entity) ? entity : [entity];\n entities.forEach(entity => {\n\n const entityIdMap = this.expressionMap.mainAlias!.metadata.getEntityIdMap(entity);\n if (!entityIdMap)\n throw new Error(`Provided entity does not have ids set, cannot perform operation.`);\n\n this.orWhereInIds(entityIdMap);\n });\n\n this.expressionMap.whereEntities = entities;\n return this;\n }\n\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n updateEntity(enabled: boolean): this {\n this.expressionMap.updateEntity = enabled;\n return this;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates UPDATE express used to perform insert query.\n */\n protected createUpdateExpression() {\n const metadata = this.expressionMap.mainAlias!.hasMetadata ? this.expressionMap.mainAlias!.metadata : undefined;\n if (!metadata)\n throw new Error(`Cannot get entity metadata for the given alias \"${this.expressionMap.mainAlias}\"`);\n if (!metadata.deleteDateColumn) {\n throw new MissingDeleteDateColumnError(metadata);\n }\n\n // prepare columns and values to be updated\n const updateColumnAndValues: string[] = [];\n const newParameters: ObjectLiteral = {};\n\n switch (this.expressionMap.queryType) {\n case \"soft-delete\":\n updateColumnAndValues.push(this.escape(metadata.deleteDateColumn.databaseName) + \" = CURRENT_TIMESTAMP\");\n break;\n case \"restore\":\n updateColumnAndValues.push(this.escape(metadata.deleteDateColumn.databaseName) + \" = NULL\");\n break;\n default:\n throw new Error(`The queryType must be \"soft-delete\" or \"restore\"`);\n }\n if (metadata.versionColumn)\n updateColumnAndValues.push(this.escape(metadata.versionColumn.databaseName) + \" = \" + this.escape(metadata.versionColumn.databaseName) + \" + 1\");\n if (metadata.updateDateColumn)\n updateColumnAndValues.push(this.escape(metadata.updateDateColumn.databaseName) + \" = CURRENT_TIMESTAMP\"); // todo: fix issue with CURRENT_TIMESTAMP(6) being used, can \"DEFAULT\" be used?!\n\n if (updateColumnAndValues.length <= 0) {\n throw new UpdateValuesMissingError();\n }\n\n // we re-write parameters this way because we want our \"UPDATE ... SET\" parameters to be first in the list of \"nativeParameters\"\n // because some drivers like mysql depend on order of parameters\n if (this.connection.driver instanceof MysqlDriver ||\n this.connection.driver instanceof OracleDriver ||\n this.connection.driver instanceof AbstractSqliteDriver) {\n this.expressionMap.nativeParameters = Object.assign(newParameters, this.expressionMap.nativeParameters);\n }\n\n // get a table name and all column database names\n const whereExpression = this.createWhereExpression();\n const returningExpression = this.createReturningExpression();\n\n // generate and return sql update query\n if (returningExpression && (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof OracleDriver || this.connection.driver instanceof CockroachDriver)) {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")}${whereExpression} RETURNING ${returningExpression}`;\n\n } else if (returningExpression && this.connection.driver instanceof SqlServerDriver) {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")} OUTPUT ${returningExpression}${whereExpression}`;\n\n } else {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")}${whereExpression}`; // todo: how do we replace aliases in where to nothing?\n }\n }\n\n /**\n * Creates \"ORDER BY\" part of SQL query.\n */\n protected createOrderByExpression() {\n const orderBys = this.expressionMap.orderBys;\n if (Object.keys(orderBys).length > 0)\n return \" ORDER BY \" + Object.keys(orderBys)\n .map(columnName => {\n if (typeof orderBys[columnName] === \"string\") {\n return this.replacePropertyNames(columnName) + \" \" + orderBys[columnName];\n } else {\n return this.replacePropertyNames(columnName) + \" \" + (orderBys[columnName] as any).order + \" \" + (orderBys[columnName] as any).nulls;\n }\n })\n .join(\", \");\n\n return \"\";\n }\n\n /**\n * Creates \"LIMIT\" parts of SQL query.\n */\n protected createLimitExpression(): string {\n let limit: number|undefined = this.expressionMap.limit;\n\n if (limit) {\n if (this.connection.driver instanceof MysqlDriver) {\n return \" LIMIT \" + limit;\n } else {\n throw new LimitOnUpdateNotSupportedError();\n }\n }\n\n return \"\";\n }\n\n}\n"],"sourceRoot":".."}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UpdateQueryBuilder = void 0;
4
3
  var tslib_1 = require("tslib");
5
4
  var CockroachDriver_1 = require("../driver/cockroachdb/CockroachDriver");
6
5
  var SapDriver_1 = require("../driver/sap/SapDriver");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/UpdateQueryBuilder.ts"],"names":[],"mappings":"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","file":"UpdateQueryBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {SapDriver} from \"../driver/sap/SapDriver\";\nimport { ColumnMetadata } from \"../metadata/ColumnMetadata\";\nimport {QueryBuilder} from \"./QueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {Connection} from \"../connection/Connection\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {WhereExpression} from \"./WhereExpression\";\nimport {Brackets} from \"./Brackets\";\nimport {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {UpdateResult} from \"./result/UpdateResult\";\nimport {ReturningStatementNotSupportedError} from \"../error/ReturningStatementNotSupportedError\";\nimport {ReturningResultsEntityUpdator} from \"./ReturningResultsEntityUpdator\";\nimport {SqljsDriver} from \"../driver/sqljs/SqljsDriver\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {BroadcasterResult} from \"../subscriber/BroadcasterResult\";\nimport {AbstractSqliteDriver} from \"../driver/sqlite-abstract/AbstractSqliteDriver\";\nimport {OrderByCondition} from \"../find-options/OrderByCondition\";\nimport {LimitOnUpdateNotSupportedError} from \"../error/LimitOnUpdateNotSupportedError\";\nimport {OracleDriver} from \"../driver/oracle/OracleDriver\";\nimport {UpdateValuesMissingError} from \"../error/UpdateValuesMissingError\";\nimport {EntityColumnNotFound} from \"../error/EntityColumnNotFound\";\nimport {QueryDeepPartialEntity} from \"./QueryPartialEntity\";\nimport {AuroraDataApiDriver} from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport {BetterSqlite3Driver} from \"../driver/better-sqlite3/BetterSqlite3Driver\";\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nexport class UpdateQueryBuilder<Entity> extends QueryBuilder<Entity> implements WhereExpression {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connectionOrQueryBuilder: Connection|QueryBuilder<any>, queryRunner?: QueryRunner) {\n super(connectionOrQueryBuilder as any, queryRunner);\n this.expressionMap.aliasNamePrefixingEnabled = false;\n }\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated sql query without parameters being replaced.\n */\n getQuery(): string {\n let sql = this.createUpdateExpression();\n sql += this.createOrderByExpression();\n sql += this.createLimitExpression();\n return sql.trim();\n }\n\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n async execute(): Promise<UpdateResult> {\n const queryRunner = this.obtainQueryRunner();\n let transactionStartedByUs: boolean = false;\n\n try {\n\n // start transaction if it was enabled\n if (this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false) {\n await queryRunner.startTransaction();\n transactionStartedByUs = true;\n }\n\n // call before updation methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n const broadcastResult = new BroadcasterResult();\n queryRunner.broadcaster.broadcastBeforeUpdateEvent(broadcastResult, this.expressionMap.mainAlias!.metadata, this.expressionMap.valuesSet);\n if (broadcastResult.promises.length > 0) await Promise.all(broadcastResult.promises);\n }\n\n let declareSql: string | null = null;\n let selectOutputSql: string | null = null;\n\n // if update entity mode is enabled we may need extra columns for the returning statement\n const returningResultsEntityUpdator = new ReturningResultsEntityUpdator(queryRunner, this.expressionMap);\n if (this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap.whereEntities.length > 0) {\n this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getUpdationReturningColumns();\n\n if (this.expressionMap.extraReturningColumns.length > 0 && this.connection.driver instanceof SqlServerDriver) {\n declareSql = this.connection.driver.buildTableVariableDeclaration(\"@OutputTable\", this.expressionMap.extraReturningColumns);\n selectOutputSql = `SELECT * FROM @OutputTable`;\n }\n }\n\n // execute update query\n const [updateSql, parameters] = this.getQueryAndParameters();\n const updateResult = new UpdateResult();\n const statements = [declareSql, updateSql, selectOutputSql];\n const result = await queryRunner.query(\n statements.filter(sql => sql != null).join(\";\\n\\n\"),\n parameters,\n );\n\n if (this.connection.driver instanceof PostgresDriver) {\n updateResult.raw = result[0];\n updateResult.affected = result[1];\n }\n else if (this.connection.driver instanceof MysqlDriver) {\n updateResult.raw = result;\n updateResult.affected = result.affectedRows;\n }\n else if (this.connection.driver instanceof BetterSqlite3Driver) { // only works for better-sqlite3\n updateResult.raw = result;\n updateResult.affected = result.changes;\n }\n else {\n updateResult.raw = result;\n }\n\n // if we are updating entities and entity updation is enabled we must update some of entity columns (like version, update date, etc.)\n if (this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap.whereEntities.length > 0) {\n await returningResultsEntityUpdator.update(updateResult, this.expressionMap.whereEntities);\n }\n\n // call after updation methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n const broadcastResult = new BroadcasterResult();\n queryRunner.broadcaster.broadcastAfterUpdateEvent(broadcastResult, this.expressionMap.mainAlias!.metadata);\n if (broadcastResult.promises.length > 0) await Promise.all(broadcastResult.promises);\n }\n\n // close transaction if we started it\n if (transactionStartedByUs)\n await queryRunner.commitTransaction();\n\n return updateResult;\n\n } catch (error) {\n\n // rollback transaction if we started it\n if (transactionStartedByUs) {\n try {\n await queryRunner.rollbackTransaction();\n } catch (rollbackError) { }\n }\n throw error;\n\n } finally {\n if (queryRunner !== this.queryRunner) { // means we created our own query runner\n await queryRunner.release();\n }\n if (this.connection.driver instanceof SqljsDriver && !queryRunner.isTransactionActive) {\n await this.connection.driver.autoSave();\n }\n }\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Values needs to be updated.\n */\n set(values: QueryDeepPartialEntity<Entity>): this {\n this.expressionMap.valuesSet = values;\n return this;\n }\n\n /**\n * Sets WHERE condition in the query builder.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n * Additionally you can add parameters used in where expression.\n */\n where(where: string|((qb: this) => string)|Brackets|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n const condition = this.computeWhereParameter(where);\n if (condition)\n this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n if (parameters)\n this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n andWhere(where: string|((qb: this) => string)|Brackets, parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"and\", condition: this.computeWhereParameter(where) });\n if (parameters) this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n orWhere(where: string|((qb: this) => string)|Brackets, parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"or\", condition: this.computeWhereParameter(where) });\n if (parameters) this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n whereInIds(ids: any|any[]): this {\n return this.where(this.createWhereIdsExpression(ids));\n }\n\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n andWhereInIds(ids: any|any[]): this {\n return this.andWhere(this.createWhereIdsExpression(ids));\n }\n\n /**\n * Adds new OR WHERE with conditions for the given ids.\n */\n orWhereInIds(ids: any|any[]): this {\n return this.orWhere(this.createWhereIdsExpression(ids));\n }\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n output(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n output(output: string): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this {\n return this.returning(output);\n }\n\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n returning(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n returning(returning: string): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this {\n\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported())\n throw new ReturningStatementNotSupportedError();\n\n this.expressionMap.returning = returning;\n return this;\n }\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n *\n * Calling order by without order set will remove all previously set order bys.\n */\n orderBy(): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(sort: string, order?: \"ASC\"|\"DESC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(order: OrderByCondition): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(sort?: string|OrderByCondition, order: \"ASC\"|\"DESC\" = \"ASC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this {\n if (sort) {\n if (sort instanceof Object) {\n this.expressionMap.orderBys = sort as OrderByCondition;\n } else {\n if (nulls) {\n this.expressionMap.orderBys = { [sort as string]: { order, nulls } };\n } else {\n this.expressionMap.orderBys = { [sort as string]: order };\n }\n }\n } else {\n this.expressionMap.orderBys = {};\n }\n return this;\n }\n\n /**\n * Adds ORDER BY condition in the query builder.\n */\n addOrderBy(sort: string, order: \"ASC\"|\"DESC\" = \"ASC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this {\n if (nulls) {\n this.expressionMap.orderBys[sort] = { order, nulls };\n } else {\n this.expressionMap.orderBys[sort] = order;\n }\n return this;\n }\n\n /**\n * Sets LIMIT - maximum number of rows to be selected.\n */\n limit(limit?: number): this {\n this.expressionMap.limit = limit;\n return this;\n }\n\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n whereEntity(entity: Entity|Entity[]): this {\n if (!this.expressionMap.mainAlias!.hasMetadata)\n throw new Error(`.whereEntity method can only be used on queries which update real entity table.`);\n\n this.expressionMap.wheres = [];\n const entities: Entity[] = Array.isArray(entity) ? entity : [entity];\n entities.forEach(entity => {\n\n const entityIdMap = this.expressionMap.mainAlias!.metadata.getEntityIdMap(entity);\n if (!entityIdMap)\n throw new Error(`Provided entity does not have ids set, cannot perform operation.`);\n\n this.orWhereInIds(entityIdMap);\n });\n\n this.expressionMap.whereEntities = entities;\n return this;\n }\n\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n updateEntity(enabled: boolean): this {\n this.expressionMap.updateEntity = enabled;\n return this;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates UPDATE express used to perform insert query.\n */\n protected createUpdateExpression() {\n const valuesSet = this.getValueSet();\n const metadata = this.expressionMap.mainAlias!.hasMetadata ? this.expressionMap.mainAlias!.metadata : undefined;\n\n // prepare columns and values to be updated\n const updateColumnAndValues: string[] = [];\n const updatedColumns: ColumnMetadata[] = [];\n const newParameters: ObjectLiteral = {};\n let parametersCount = this.connection.driver instanceof MysqlDriver ||\n this.connection.driver instanceof AuroraDataApiDriver ||\n this.connection.driver instanceof OracleDriver ||\n this.connection.driver instanceof AbstractSqliteDriver ||\n this.connection.driver instanceof SapDriver\n ? 0 : Object.keys(this.expressionMap.nativeParameters).length;\n if (metadata) {\n EntityMetadata.createPropertyPath(metadata, valuesSet).forEach(propertyPath => {\n // todo: make this and other query builder to work with properly with tables without metadata\n const columns = metadata.findColumnsWithPropertyPath(propertyPath);\n\n if (columns.length <= 0) {\n throw new EntityColumnNotFound(propertyPath);\n }\n\n columns.forEach(column => {\n if (!column.isUpdate) { return; }\n updatedColumns.push(column);\n\n const paramName = \"upd_\" + column.databaseName;\n\n //\n let value = column.getEntityValue(valuesSet);\n if (column.referencedColumn && value instanceof Object) {\n value = column.referencedColumn.getEntityValue(value);\n }\n else if (!(value instanceof Function)) {\n value = this.connection.driver.preparePersistentValue(value, column);\n }\n\n // todo: duplication zone\n if (value instanceof Function) { // support for SQL expressions in update query\n updateColumnAndValues.push(this.escape(column.databaseName) + \" = \" + value());\n } else if (this.connection.driver instanceof SapDriver && value === null) {\n updateColumnAndValues.push(this.escape(column.databaseName) + \" = NULL\");\n } else {\n if (this.connection.driver instanceof SqlServerDriver) {\n value = this.connection.driver.parametrizeValue(column, value);\n\n // } else if (value instanceof Array) {\n // value = new ArrayParameter(value);\n }\n\n if (this.connection.driver instanceof MysqlDriver ||\n this.connection.driver instanceof AuroraDataApiDriver ||\n this.connection.driver instanceof OracleDriver ||\n this.connection.driver instanceof AbstractSqliteDriver ||\n this.connection.driver instanceof SapDriver) {\n newParameters[paramName] = value;\n } else {\n this.expressionMap.nativeParameters[paramName] = value;\n }\n\n let expression = null;\n if ((this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n const useLegacy = this.connection.driver.options.legacySpatialSupport;\n const geomFromText = useLegacy ? \"GeomFromText\" : \"ST_GeomFromText\";\n if (column.srid != null) {\n expression = `${geomFromText}(${this.connection.driver.createParameter(paramName, parametersCount)}, ${column.srid})`;\n } else {\n expression = `${geomFromText}(${this.connection.driver.createParameter(paramName, parametersCount)})`;\n }\n } else if (this.connection.driver instanceof PostgresDriver && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n if (column.srid != null) {\n expression = `ST_SetSRID(ST_GeomFromGeoJSON(${this.connection.driver.createParameter(paramName, parametersCount)}), ${column.srid})::${column.type}`;\n } else {\n expression = `ST_GeomFromGeoJSON(${this.connection.driver.createParameter(paramName, parametersCount)})::${column.type}`;\n }\n } else if (this.connection.driver instanceof SqlServerDriver && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n expression = column.type + \"::STGeomFromText(\" + this.connection.driver.createParameter(paramName, parametersCount) + \", \" + (column.srid || \"0\") + \")\";\n } else {\n expression = this.connection.driver.createParameter(paramName, parametersCount);\n }\n updateColumnAndValues.push(this.escape(column.databaseName) + \" = \" + expression);\n parametersCount++;\n }\n });\n });\n\n if (metadata.versionColumn && updatedColumns.indexOf(metadata.versionColumn) === -1)\n updateColumnAndValues.push(this.escape(metadata.versionColumn.databaseName) + \" = \" + this.escape(metadata.versionColumn.databaseName) + \" + 1\");\n if (metadata.updateDateColumn && updatedColumns.indexOf(metadata.updateDateColumn) === -1)\n updateColumnAndValues.push(this.escape(metadata.updateDateColumn.databaseName) + \" = CURRENT_TIMESTAMP\"); // todo: fix issue with CURRENT_TIMESTAMP(6) being used, can \"DEFAULT\" be used?!\n\n } else {\n Object.keys(valuesSet).map(key => {\n let value = valuesSet[key];\n\n // todo: duplication zone\n if (value instanceof Function) { // support for SQL expressions in update query\n updateColumnAndValues.push(this.escape(key) + \" = \" + value());\n } else if (this.connection.driver instanceof SapDriver && value === null) {\n updateColumnAndValues.push(this.escape(key) + \" = NULL\");\n } else {\n\n // we need to store array values in a special class to make sure parameter replacement will work correctly\n // if (value instanceof Array)\n // value = new ArrayParameter(value);\n\n if (this.connection.driver instanceof MysqlDriver ||\n this.connection.driver instanceof AuroraDataApiDriver ||\n this.connection.driver instanceof OracleDriver ||\n this.connection.driver instanceof AbstractSqliteDriver ||\n this.connection.driver instanceof SapDriver) {\n newParameters[key] = value;\n } else {\n this.expressionMap.nativeParameters[key] = value;\n }\n\n updateColumnAndValues.push(this.escape(key) + \" = \" + this.connection.driver.createParameter(key, parametersCount));\n parametersCount++;\n }\n });\n }\n\n if (updateColumnAndValues.length <= 0) {\n throw new UpdateValuesMissingError();\n }\n\n // we re-write parameters this way because we want our \"UPDATE ... SET\" parameters to be first in the list of \"nativeParameters\"\n // because some drivers like mysql depend on order of parameters\n if (this.connection.driver instanceof MysqlDriver ||\n this.connection.driver instanceof AuroraDataApiDriver ||\n this.connection.driver instanceof OracleDriver ||\n this.connection.driver instanceof AbstractSqliteDriver ||\n this.connection.driver instanceof SapDriver) {\n this.expressionMap.nativeParameters = Object.assign(newParameters, this.expressionMap.nativeParameters);\n }\n\n // get a table name and all column database names\n const whereExpression = this.createWhereExpression();\n const returningExpression = this.createReturningExpression();\n\n // generate and return sql update query\n if (returningExpression && (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof OracleDriver || this.connection.driver instanceof CockroachDriver)) {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")}${whereExpression} RETURNING ${returningExpression}`;\n\n } else if (returningExpression && this.connection.driver instanceof SqlServerDriver) {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")} OUTPUT ${returningExpression}${whereExpression}`;\n\n } else {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")}${whereExpression}`; // todo: how do we replace aliases in where to nothing?\n }\n }\n\n /**\n * Creates \"ORDER BY\" part of SQL query.\n */\n protected createOrderByExpression() {\n const orderBys = this.expressionMap.orderBys;\n if (Object.keys(orderBys).length > 0)\n return \" ORDER BY \" + Object.keys(orderBys)\n .map(columnName => {\n if (typeof orderBys[columnName] === \"string\") {\n return this.replacePropertyNames(columnName) + \" \" + orderBys[columnName];\n } else {\n return this.replacePropertyNames(columnName) + \" \" + (orderBys[columnName] as any).order + \" \" + (orderBys[columnName] as any).nulls;\n }\n })\n .join(\", \");\n\n return \"\";\n }\n\n /**\n * Creates \"LIMIT\" parts of SQL query.\n */\n protected createLimitExpression(): string {\n let limit: number|undefined = this.expressionMap.limit;\n\n if (limit) {\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) {\n return \" LIMIT \" + limit;\n } else {\n throw new LimitOnUpdateNotSupportedError();\n }\n }\n\n return \"\";\n }\n\n /**\n * Gets array of values need to be inserted into the target table.\n */\n protected getValueSet(): ObjectLiteral {\n if (this.expressionMap.valuesSet instanceof Object)\n return this.expressionMap.valuesSet;\n\n throw new UpdateValuesMissingError();\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/query-builder/UpdateQueryBuilder.ts"],"names":[],"mappings":"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","file":"UpdateQueryBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {SapDriver} from \"../driver/sap/SapDriver\";\nimport { ColumnMetadata } from \"../metadata/ColumnMetadata\";\nimport {QueryBuilder} from \"./QueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {Connection} from \"../connection/Connection\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {WhereExpression} from \"./WhereExpression\";\nimport {Brackets} from \"./Brackets\";\nimport {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {UpdateResult} from \"./result/UpdateResult\";\nimport {ReturningStatementNotSupportedError} from \"../error/ReturningStatementNotSupportedError\";\nimport {ReturningResultsEntityUpdator} from \"./ReturningResultsEntityUpdator\";\nimport {SqljsDriver} from \"../driver/sqljs/SqljsDriver\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {BroadcasterResult} from \"../subscriber/BroadcasterResult\";\nimport {AbstractSqliteDriver} from \"../driver/sqlite-abstract/AbstractSqliteDriver\";\nimport {OrderByCondition} from \"../find-options/OrderByCondition\";\nimport {LimitOnUpdateNotSupportedError} from \"../error/LimitOnUpdateNotSupportedError\";\nimport {OracleDriver} from \"../driver/oracle/OracleDriver\";\nimport {UpdateValuesMissingError} from \"../error/UpdateValuesMissingError\";\nimport {EntityColumnNotFound} from \"../error/EntityColumnNotFound\";\nimport {QueryDeepPartialEntity} from \"./QueryPartialEntity\";\nimport {AuroraDataApiDriver} from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport {BetterSqlite3Driver} from \"../driver/better-sqlite3/BetterSqlite3Driver\";\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nexport class UpdateQueryBuilder<Entity> extends QueryBuilder<Entity> implements WhereExpression {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connectionOrQueryBuilder: Connection|QueryBuilder<any>, queryRunner?: QueryRunner) {\n super(connectionOrQueryBuilder as any, queryRunner);\n this.expressionMap.aliasNamePrefixingEnabled = false;\n }\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated sql query without parameters being replaced.\n */\n getQuery(): string {\n let sql = this.createUpdateExpression();\n sql += this.createOrderByExpression();\n sql += this.createLimitExpression();\n return sql.trim();\n }\n\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n async execute(): Promise<UpdateResult> {\n const queryRunner = this.obtainQueryRunner();\n let transactionStartedByUs: boolean = false;\n\n try {\n\n // start transaction if it was enabled\n if (this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false) {\n await queryRunner.startTransaction();\n transactionStartedByUs = true;\n }\n\n // call before updation methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n const broadcastResult = new BroadcasterResult();\n queryRunner.broadcaster.broadcastBeforeUpdateEvent(broadcastResult, this.expressionMap.mainAlias!.metadata, this.expressionMap.valuesSet);\n if (broadcastResult.promises.length > 0) await Promise.all(broadcastResult.promises);\n }\n\n let declareSql: string | null = null;\n let selectOutputSql: string | null = null;\n\n // if update entity mode is enabled we may need extra columns for the returning statement\n const returningResultsEntityUpdator = new ReturningResultsEntityUpdator(queryRunner, this.expressionMap);\n if (this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap.whereEntities.length > 0) {\n this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getUpdationReturningColumns();\n\n if (this.expressionMap.extraReturningColumns.length > 0 && this.connection.driver instanceof SqlServerDriver) {\n declareSql = this.connection.driver.buildTableVariableDeclaration(\"@OutputTable\", this.expressionMap.extraReturningColumns);\n selectOutputSql = `SELECT * FROM @OutputTable`;\n }\n }\n\n // execute update query\n const [updateSql, parameters] = this.getQueryAndParameters();\n const updateResult = new UpdateResult();\n const statements = [declareSql, updateSql, selectOutputSql];\n const result = await queryRunner.query(\n statements.filter(sql => sql != null).join(\";\\n\\n\"),\n parameters,\n );\n\n if (this.connection.driver instanceof PostgresDriver) {\n updateResult.raw = result[0];\n updateResult.affected = result[1];\n }\n else if (this.connection.driver instanceof MysqlDriver) {\n updateResult.raw = result;\n updateResult.affected = result.affectedRows;\n }\n else if (this.connection.driver instanceof BetterSqlite3Driver) { // only works for better-sqlite3\n updateResult.raw = result;\n updateResult.affected = result.changes;\n }\n else {\n updateResult.raw = result;\n }\n\n // if we are updating entities and entity updation is enabled we must update some of entity columns (like version, update date, etc.)\n if (this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap.whereEntities.length > 0) {\n await returningResultsEntityUpdator.update(updateResult, this.expressionMap.whereEntities);\n }\n\n // call after updation methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n const broadcastResult = new BroadcasterResult();\n queryRunner.broadcaster.broadcastAfterUpdateEvent(broadcastResult, this.expressionMap.mainAlias!.metadata);\n if (broadcastResult.promises.length > 0) await Promise.all(broadcastResult.promises);\n }\n\n // close transaction if we started it\n if (transactionStartedByUs)\n await queryRunner.commitTransaction();\n\n return updateResult;\n\n } catch (error) {\n\n // rollback transaction if we started it\n if (transactionStartedByUs) {\n try {\n await queryRunner.rollbackTransaction();\n } catch (rollbackError) { }\n }\n throw error;\n\n } finally {\n if (queryRunner !== this.queryRunner) { // means we created our own query runner\n await queryRunner.release();\n }\n if (this.connection.driver instanceof SqljsDriver && !queryRunner.isTransactionActive) {\n await this.connection.driver.autoSave();\n }\n }\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Values needs to be updated.\n */\n set(values: QueryDeepPartialEntity<Entity>): this {\n this.expressionMap.valuesSet = values;\n return this;\n }\n\n /**\n * Sets WHERE condition in the query builder.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n * Additionally you can add parameters used in where expression.\n */\n where(where: string|((qb: this) => string)|Brackets|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n const condition = this.computeWhereParameter(where);\n if (condition)\n this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n if (parameters)\n this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n andWhere(where: string|((qb: this) => string)|Brackets, parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"and\", condition: this.computeWhereParameter(where) });\n if (parameters) this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n orWhere(where: string|((qb: this) => string)|Brackets, parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"or\", condition: this.computeWhereParameter(where) });\n if (parameters) this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n whereInIds(ids: any|any[]): this {\n return this.where(this.createWhereIdsExpression(ids));\n }\n\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n andWhereInIds(ids: any|any[]): this {\n return this.andWhere(this.createWhereIdsExpression(ids));\n }\n\n /**\n * Adds new OR WHERE with conditions for the given ids.\n */\n orWhereInIds(ids: any|any[]): this {\n return this.orWhere(this.createWhereIdsExpression(ids));\n }\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n output(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n output(output: string): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this {\n return this.returning(output);\n }\n\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n returning(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n returning(returning: string): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this {\n\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported())\n throw new ReturningStatementNotSupportedError();\n\n this.expressionMap.returning = returning;\n return this;\n }\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n *\n * Calling order by without order set will remove all previously set order bys.\n */\n orderBy(): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(sort: string, order?: \"ASC\"|\"DESC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(order: OrderByCondition): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(sort?: string|OrderByCondition, order: \"ASC\"|\"DESC\" = \"ASC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this {\n if (sort) {\n if (sort instanceof Object) {\n this.expressionMap.orderBys = sort as OrderByCondition;\n } else {\n if (nulls) {\n this.expressionMap.orderBys = { [sort as string]: { order, nulls } };\n } else {\n this.expressionMap.orderBys = { [sort as string]: order };\n }\n }\n } else {\n this.expressionMap.orderBys = {};\n }\n return this;\n }\n\n /**\n * Adds ORDER BY condition in the query builder.\n */\n addOrderBy(sort: string, order: \"ASC\"|\"DESC\" = \"ASC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this {\n if (nulls) {\n this.expressionMap.orderBys[sort] = { order, nulls };\n } else {\n this.expressionMap.orderBys[sort] = order;\n }\n return this;\n }\n\n /**\n * Sets LIMIT - maximum number of rows to be selected.\n */\n limit(limit?: number): this {\n this.expressionMap.limit = limit;\n return this;\n }\n\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n whereEntity(entity: Entity|Entity[]): this {\n if (!this.expressionMap.mainAlias!.hasMetadata)\n throw new Error(`.whereEntity method can only be used on queries which update real entity table.`);\n\n this.expressionMap.wheres = [];\n const entities: Entity[] = Array.isArray(entity) ? entity : [entity];\n entities.forEach(entity => {\n\n const entityIdMap = this.expressionMap.mainAlias!.metadata.getEntityIdMap(entity);\n if (!entityIdMap)\n throw new Error(`Provided entity does not have ids set, cannot perform operation.`);\n\n this.orWhereInIds(entityIdMap);\n });\n\n this.expressionMap.whereEntities = entities;\n return this;\n }\n\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n updateEntity(enabled: boolean): this {\n this.expressionMap.updateEntity = enabled;\n return this;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates UPDATE express used to perform insert query.\n */\n protected createUpdateExpression() {\n const valuesSet = this.getValueSet();\n const metadata = this.expressionMap.mainAlias!.hasMetadata ? this.expressionMap.mainAlias!.metadata : undefined;\n\n // prepare columns and values to be updated\n const updateColumnAndValues: string[] = [];\n const updatedColumns: ColumnMetadata[] = [];\n const newParameters: ObjectLiteral = {};\n let parametersCount = this.connection.driver instanceof MysqlDriver ||\n this.connection.driver instanceof AuroraDataApiDriver ||\n this.connection.driver instanceof OracleDriver ||\n this.connection.driver instanceof AbstractSqliteDriver ||\n this.connection.driver instanceof SapDriver\n ? 0 : Object.keys(this.expressionMap.nativeParameters).length;\n if (metadata) {\n EntityMetadata.createPropertyPath(metadata, valuesSet).forEach(propertyPath => {\n // todo: make this and other query builder to work with properly with tables without metadata\n const columns = metadata.findColumnsWithPropertyPath(propertyPath);\n\n if (columns.length <= 0) {\n throw new EntityColumnNotFound(propertyPath);\n }\n\n columns.forEach(column => {\n if (!column.isUpdate) { return; }\n updatedColumns.push(column);\n\n const paramName = \"upd_\" + column.databaseName;\n\n //\n let value = column.getEntityValue(valuesSet);\n if (column.referencedColumn && value instanceof Object) {\n value = column.referencedColumn.getEntityValue(value);\n }\n else if (!(value instanceof Function)) {\n value = this.connection.driver.preparePersistentValue(value, column);\n }\n\n // todo: duplication zone\n if (value instanceof Function) { // support for SQL expressions in update query\n updateColumnAndValues.push(this.escape(column.databaseName) + \" = \" + value());\n } else if (this.connection.driver instanceof SapDriver && value === null) {\n updateColumnAndValues.push(this.escape(column.databaseName) + \" = NULL\");\n } else {\n if (this.connection.driver instanceof SqlServerDriver) {\n value = this.connection.driver.parametrizeValue(column, value);\n\n // } else if (value instanceof Array) {\n // value = new ArrayParameter(value);\n }\n\n if (this.connection.driver instanceof MysqlDriver ||\n this.connection.driver instanceof AuroraDataApiDriver ||\n this.connection.driver instanceof OracleDriver ||\n this.connection.driver instanceof AbstractSqliteDriver ||\n this.connection.driver instanceof SapDriver) {\n newParameters[paramName] = value;\n } else {\n this.expressionMap.nativeParameters[paramName] = value;\n }\n\n let expression = null;\n if ((this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n const useLegacy = this.connection.driver.options.legacySpatialSupport;\n const geomFromText = useLegacy ? \"GeomFromText\" : \"ST_GeomFromText\";\n if (column.srid != null) {\n expression = `${geomFromText}(${this.connection.driver.createParameter(paramName, parametersCount)}, ${column.srid})`;\n } else {\n expression = `${geomFromText}(${this.connection.driver.createParameter(paramName, parametersCount)})`;\n }\n } else if (this.connection.driver instanceof PostgresDriver && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n if (column.srid != null) {\n expression = `ST_SetSRID(ST_GeomFromGeoJSON(${this.connection.driver.createParameter(paramName, parametersCount)}), ${column.srid})::${column.type}`;\n } else {\n expression = `ST_GeomFromGeoJSON(${this.connection.driver.createParameter(paramName, parametersCount)})::${column.type}`;\n }\n } else if (this.connection.driver instanceof SqlServerDriver && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n expression = column.type + \"::STGeomFromText(\" + this.connection.driver.createParameter(paramName, parametersCount) + \", \" + (column.srid || \"0\") + \")\";\n } else {\n expression = this.connection.driver.createParameter(paramName, parametersCount);\n }\n updateColumnAndValues.push(this.escape(column.databaseName) + \" = \" + expression);\n parametersCount++;\n }\n });\n });\n\n if (metadata.versionColumn && updatedColumns.indexOf(metadata.versionColumn) === -1)\n updateColumnAndValues.push(this.escape(metadata.versionColumn.databaseName) + \" = \" + this.escape(metadata.versionColumn.databaseName) + \" + 1\");\n if (metadata.updateDateColumn && updatedColumns.indexOf(metadata.updateDateColumn) === -1)\n updateColumnAndValues.push(this.escape(metadata.updateDateColumn.databaseName) + \" = CURRENT_TIMESTAMP\"); // todo: fix issue with CURRENT_TIMESTAMP(6) being used, can \"DEFAULT\" be used?!\n\n } else {\n Object.keys(valuesSet).map(key => {\n let value = valuesSet[key];\n\n // todo: duplication zone\n if (value instanceof Function) { // support for SQL expressions in update query\n updateColumnAndValues.push(this.escape(key) + \" = \" + value());\n } else if (this.connection.driver instanceof SapDriver && value === null) {\n updateColumnAndValues.push(this.escape(key) + \" = NULL\");\n } else {\n\n // we need to store array values in a special class to make sure parameter replacement will work correctly\n // if (value instanceof Array)\n // value = new ArrayParameter(value);\n\n if (this.connection.driver instanceof MysqlDriver ||\n this.connection.driver instanceof AuroraDataApiDriver ||\n this.connection.driver instanceof OracleDriver ||\n this.connection.driver instanceof AbstractSqliteDriver ||\n this.connection.driver instanceof SapDriver) {\n newParameters[key] = value;\n } else {\n this.expressionMap.nativeParameters[key] = value;\n }\n\n updateColumnAndValues.push(this.escape(key) + \" = \" + this.connection.driver.createParameter(key, parametersCount));\n parametersCount++;\n }\n });\n }\n\n if (updateColumnAndValues.length <= 0) {\n throw new UpdateValuesMissingError();\n }\n\n // we re-write parameters this way because we want our \"UPDATE ... SET\" parameters to be first in the list of \"nativeParameters\"\n // because some drivers like mysql depend on order of parameters\n if (this.connection.driver instanceof MysqlDriver ||\n this.connection.driver instanceof AuroraDataApiDriver ||\n this.connection.driver instanceof OracleDriver ||\n this.connection.driver instanceof AbstractSqliteDriver ||\n this.connection.driver instanceof SapDriver) {\n this.expressionMap.nativeParameters = Object.assign(newParameters, this.expressionMap.nativeParameters);\n }\n\n // get a table name and all column database names\n const whereExpression = this.createWhereExpression();\n const returningExpression = this.createReturningExpression();\n\n // generate and return sql update query\n if (returningExpression && (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof OracleDriver || this.connection.driver instanceof CockroachDriver)) {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")}${whereExpression} RETURNING ${returningExpression}`;\n\n } else if (returningExpression && this.connection.driver instanceof SqlServerDriver) {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")} OUTPUT ${returningExpression}${whereExpression}`;\n\n } else {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")}${whereExpression}`; // todo: how do we replace aliases in where to nothing?\n }\n }\n\n /**\n * Creates \"ORDER BY\" part of SQL query.\n */\n protected createOrderByExpression() {\n const orderBys = this.expressionMap.orderBys;\n if (Object.keys(orderBys).length > 0)\n return \" ORDER BY \" + Object.keys(orderBys)\n .map(columnName => {\n if (typeof orderBys[columnName] === \"string\") {\n return this.replacePropertyNames(columnName) + \" \" + orderBys[columnName];\n } else {\n return this.replacePropertyNames(columnName) + \" \" + (orderBys[columnName] as any).order + \" \" + (orderBys[columnName] as any).nulls;\n }\n })\n .join(\", \");\n\n return \"\";\n }\n\n /**\n * Creates \"LIMIT\" parts of SQL query.\n */\n protected createLimitExpression(): string {\n let limit: number|undefined = this.expressionMap.limit;\n\n if (limit) {\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) {\n return \" LIMIT \" + limit;\n } else {\n throw new LimitOnUpdateNotSupportedError();\n }\n }\n\n return \"\";\n }\n\n /**\n * Gets array of values need to be inserted into the target table.\n */\n protected getValueSet(): ObjectLiteral {\n if (this.expressionMap.valuesSet instanceof Object)\n return this.expressionMap.valuesSet;\n\n throw new UpdateValuesMissingError();\n }\n\n}\n"],"sourceRoot":".."}
@@ -21,14 +21,14 @@ export declare class RelationCountAttribute {
21
21
  */
22
22
  queryBuilderFactory?: (qb: SelectQueryBuilder<any>) => SelectQueryBuilder<any>;
23
23
  constructor(expressionMap: QueryExpressionMap, relationCountAttribute?: Partial<RelationCountAttribute>);
24
- get joinInverseSideMetadata(): EntityMetadata;
24
+ readonly joinInverseSideMetadata: EntityMetadata;
25
25
  /**
26
26
  * Alias of the parent of this join.
27
27
  * For example, if we join ("post.category", "categoryAlias") then "post" is a parent alias.
28
28
  * This value is extracted from entityOrProperty value.
29
29
  * This is available when join was made using "post.category" syntax.
30
30
  */
31
- get parentAlias(): string;
31
+ readonly parentAlias: string;
32
32
  /**
33
33
  * Relation property name of the parent.
34
34
  * This is used to understand what is joined.
@@ -36,18 +36,18 @@ export declare class RelationCountAttribute {
36
36
  * This value is extracted from entityOrProperty value.
37
37
  * This is available when join was made using "post.category" syntax.
38
38
  */
39
- get relationProperty(): string | undefined;
40
- get junctionAlias(): string;
39
+ readonly relationProperty: string | undefined;
40
+ readonly junctionAlias: string;
41
41
  /**
42
42
  * Relation of the parent.
43
43
  * This is used to understand what is joined.
44
44
  * This is available when join was made using "post.category" syntax.
45
45
  */
46
- get relation(): RelationMetadata;
46
+ readonly relation: RelationMetadata;
47
47
  /**
48
48
  * Metadata of the joined entity.
49
49
  * If table without entity was joined, then it will return undefined.
50
50
  */
51
- get metadata(): EntityMetadata;
52
- get mapToPropertyPropertyName(): string;
51
+ readonly metadata: EntityMetadata;
52
+ readonly mapToPropertyPropertyName: string;
53
53
  }
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RelationCountAttribute = void 0;
4
3
  var tslib_1 = require("tslib");
5
4
  var QueryBuilderUtils_1 = require("../QueryBuilderUtils");
6
5
  var ObjectUtils_1 = require("../../util/ObjectUtils");
@@ -19,7 +18,7 @@ var RelationCountAttribute = /** @class */ (function () {
19
18
  get: function () {
20
19
  return this.relation.inverseEntityMetadata;
21
20
  },
22
- enumerable: false,
21
+ enumerable: true,
23
22
  configurable: true
24
23
  });
25
24
  Object.defineProperty(RelationCountAttribute.prototype, "parentAlias", {
@@ -34,7 +33,7 @@ var RelationCountAttribute = /** @class */ (function () {
34
33
  throw new Error("Given value must be a string representation of alias property");
35
34
  return this.relationName.split(".")[0];
36
35
  },
37
- enumerable: false,
36
+ enumerable: true,
38
37
  configurable: true
39
38
  });
40
39
  Object.defineProperty(RelationCountAttribute.prototype, "relationProperty", {
@@ -50,7 +49,7 @@ var RelationCountAttribute = /** @class */ (function () {
50
49
  throw new Error("Given value is a string representation of alias property");
51
50
  return this.relationName.split(".")[1];
52
51
  },
53
- enumerable: false,
52
+ enumerable: true,
54
53
  configurable: true
55
54
  });
56
55
  Object.defineProperty(RelationCountAttribute.prototype, "junctionAlias", {
@@ -58,7 +57,7 @@ var RelationCountAttribute = /** @class */ (function () {
58
57
  var _a = tslib_1.__read(this.relationName.split("."), 2), parentAlias = _a[0], relationProperty = _a[1];
59
58
  return parentAlias + "_" + relationProperty + "_rc";
60
59
  },
61
- enumerable: false,
60
+ enumerable: true,
62
61
  configurable: true
63
62
  });
64
63
  Object.defineProperty(RelationCountAttribute.prototype, "relation", {
@@ -77,7 +76,7 @@ var RelationCountAttribute = /** @class */ (function () {
77
76
  throw new Error("Relation with property path " + propertyPath + " in entity was not found.");
78
77
  return relation;
79
78
  },
80
- enumerable: false,
79
+ enumerable: true,
81
80
  configurable: true
82
81
  });
83
82
  Object.defineProperty(RelationCountAttribute.prototype, "metadata", {
@@ -92,14 +91,14 @@ var RelationCountAttribute = /** @class */ (function () {
92
91
  var selection = this.expressionMap.findAliasByName(parentAlias);
93
92
  return selection.metadata;
94
93
  },
95
- enumerable: false,
94
+ enumerable: true,
96
95
  configurable: true
97
96
  });
98
97
  Object.defineProperty(RelationCountAttribute.prototype, "mapToPropertyPropertyName", {
99
98
  get: function () {
100
99
  return this.mapToProperty.split(".")[1];
101
100
  },
102
- enumerable: false,
101
+ enumerable: true,
103
102
  configurable: true
104
103
  });
105
104
  return RelationCountAttribute;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/relation-count/RelationCountAttribute.ts"],"names":[],"mappings":";;;;AACA,0DAAuD;AAIvD,sDAAmD;AAEnD;IAsBI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,gCAAoB,aAAiC,EACzC,sBAAwD;QADhD,kBAAa,GAAb,aAAa,CAAoB;QAEjD,yBAAW,CAAC,MAAM,CAAC,IAAI,EAAE,sBAAsB,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAMD,sBAAI,2DAAuB;QAJ3B,4EAA4E;QAC5E,iBAAiB;QACjB,4EAA4E;aAE5E;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC/C,CAAC;;;OAAA;IAQD,sBAAI,+CAAW;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,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;;;OAAA;IASD,sBAAI,oDAAgB;QAPpB;;;;;;WAMG;aACH;YACI,IAAI,CAAC,qCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAEhF,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;;;OAAA;IAED,sBAAI,iDAAa;aAAjB;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,KAAK,CAAC;QACxD,CAAC;;;OAAA;IAOD,sBAAI,4CAAQ;QALZ;;;;WAIG;aACH;YACI,IAAI,CAAC,qCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAE1E,IAAA,KAAA,eAA8B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,IAAA,EAAzD,WAAW,QAAA,EAAE,YAAY,QAAgC,CAAC;YACjE,IAAM,sBAAsB,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAC/E,IAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,4BAA4B,CAAC,YAAY,CAAC,CAAC;YAC5F,IAAI,CAAC,QAAQ;gBACT,MAAM,IAAI,KAAK,CAAC,iCAA+B,YAAY,8BAA2B,CAAC,CAAC;YAC5F,OAAO,QAAQ,CAAC;QACpB,CAAC;;;OAAA;IAMD,sBAAI,4CAAQ;QAJZ;;;WAGG;aACH;YACI,IAAI,CAAC,qCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAEhF,IAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,IAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAClE,OAAO,SAAS,CAAC,QAAQ,CAAC;QAC9B,CAAC;;;OAAA;IAED,sBAAI,6DAAyB;aAA7B;YACI,OAAO,IAAI,CAAC,aAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;;;OAAA;IAEL,6BAAC;AAAD,CAzGA,AAyGC,IAAA;AAzGY,wDAAsB","file":"RelationCountAttribute.js","sourcesContent":["import {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {QueryBuilderUtils} from \"../QueryBuilderUtils\";\nimport {RelationMetadata} from \"../../metadata/RelationMetadata\";\nimport {QueryExpressionMap} from \"../QueryExpressionMap\";\nimport {SelectQueryBuilder} from \"../SelectQueryBuilder\";\nimport {ObjectUtils} from \"../../util/ObjectUtils\";\n\nexport class RelationCountAttribute {\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 // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private expressionMap: QueryExpressionMap,\n relationCountAttribute?: Partial<RelationCountAttribute>) {\n ObjectUtils.assign(this, relationCountAttribute || {});\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.split(\".\")[0];\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 relationProperty(): string|undefined {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(`Given value is a string representation of alias property`);\n\n return this.relationName.split(\".\")[1];\n }\n\n get junctionAlias(): string {\n const [parentAlias, relationProperty] = this.relationName.split(\".\");\n return parentAlias + \"_\" + relationProperty + \"_rc\";\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 is a string representation of alias property`);\n\n const [parentAlias, propertyPath] = this.relationName.split(\".\");\n const relationOwnerSelection = this.expressionMap.findAliasByName(parentAlias);\n const relation = relationOwnerSelection.metadata.findRelationWithPropertyPath(propertyPath);\n if (!relation)\n throw new Error(`Relation with property path ${propertyPath} in entity was not found.`);\n return relation;\n }\n\n /**\n * Metadata of the joined entity.\n * If table without entity was joined, then it will return undefined.\n */\n get metadata(): EntityMetadata {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(`Given value is a string representation of alias property`);\n\n const parentAlias = this.relationName.split(\".\")[0];\n const selection = this.expressionMap.findAliasByName(parentAlias);\n return selection.metadata;\n }\n\n get mapToPropertyPropertyName(): string {\n return this.mapToProperty!.split(\".\")[1];\n }\n\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/query-builder/relation-count/RelationCountAttribute.ts"],"names":[],"mappings":";;;AACA,0DAAuD;AAIvD,sDAAmD;AAEnD;IAsBI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,gCAAoB,aAAiC,EACzC,sBAAwD;QADhD,kBAAa,GAAb,aAAa,CAAoB;QAEjD,yBAAW,CAAC,MAAM,CAAC,IAAI,EAAE,sBAAsB,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAMD,sBAAI,2DAAuB;QAJ3B,4EAA4E;QAC5E,iBAAiB;QACjB,4EAA4E;aAE5E;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC/C,CAAC;;;OAAA;IAQD,sBAAI,+CAAW;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,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;;;OAAA;IASD,sBAAI,oDAAgB;QAPpB;;;;;;WAMG;aACH;YACI,IAAI,CAAC,qCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAEhF,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;;;OAAA;IAED,sBAAI,iDAAa;aAAjB;YACU,IAAA,oDAA8D,EAA7D,mBAAW,EAAE,wBAAgD,CAAC;YACrE,OAAO,WAAW,GAAG,GAAG,GAAG,gBAAgB,GAAG,KAAK,CAAC;QACxD,CAAC;;;OAAA;IAOD,sBAAI,4CAAQ;QALZ;;;;WAIG;aACH;YACI,IAAI,CAAC,qCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAE1E,IAAA,oDAA0D,EAAzD,mBAAW,EAAE,oBAA4C,CAAC;YACjE,IAAM,sBAAsB,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAC/E,IAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,4BAA4B,CAAC,YAAY,CAAC,CAAC;YAC5F,IAAI,CAAC,QAAQ;gBACT,MAAM,IAAI,KAAK,CAAC,iCAA+B,YAAY,8BAA2B,CAAC,CAAC;YAC5F,OAAO,QAAQ,CAAC;QACpB,CAAC;;;OAAA;IAMD,sBAAI,4CAAQ;QAJZ;;;WAGG;aACH;YACI,IAAI,CAAC,qCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAEhF,IAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,IAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAClE,OAAO,SAAS,CAAC,QAAQ,CAAC;QAC9B,CAAC;;;OAAA;IAED,sBAAI,6DAAyB;aAA7B;YACI,OAAO,IAAI,CAAC,aAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;;;OAAA;IAEL,6BAAC;AAAD,CAzGA,AAyGC,IAAA;AAzGY,wDAAsB","file":"RelationCountAttribute.js","sourcesContent":["import {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {QueryBuilderUtils} from \"../QueryBuilderUtils\";\nimport {RelationMetadata} from \"../../metadata/RelationMetadata\";\nimport {QueryExpressionMap} from \"../QueryExpressionMap\";\nimport {SelectQueryBuilder} from \"../SelectQueryBuilder\";\nimport {ObjectUtils} from \"../../util/ObjectUtils\";\n\nexport class RelationCountAttribute {\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 // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private expressionMap: QueryExpressionMap,\n relationCountAttribute?: Partial<RelationCountAttribute>) {\n ObjectUtils.assign(this, relationCountAttribute || {});\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.split(\".\")[0];\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 relationProperty(): string|undefined {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(`Given value is a string representation of alias property`);\n\n return this.relationName.split(\".\")[1];\n }\n\n get junctionAlias(): string {\n const [parentAlias, relationProperty] = this.relationName.split(\".\");\n return parentAlias + \"_\" + relationProperty + \"_rc\";\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 is a string representation of alias property`);\n\n const [parentAlias, propertyPath] = this.relationName.split(\".\");\n const relationOwnerSelection = this.expressionMap.findAliasByName(parentAlias);\n const relation = relationOwnerSelection.metadata.findRelationWithPropertyPath(propertyPath);\n if (!relation)\n throw new Error(`Relation with property path ${propertyPath} in entity was not found.`);\n return relation;\n }\n\n /**\n * Metadata of the joined entity.\n * If table without entity was joined, then it will return undefined.\n */\n get metadata(): EntityMetadata {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(`Given value is a string representation of alias property`);\n\n const parentAlias = this.relationName.split(\".\")[0];\n const selection = this.expressionMap.findAliasByName(parentAlias);\n return selection.metadata;\n }\n\n get mapToPropertyPropertyName(): string {\n return this.mapToProperty!.split(\".\")[1];\n }\n\n}\n"],"sourceRoot":"../.."}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RelationCountLoader = void 0;
4
3
  var tslib_1 = require("tslib");
5
4
  var RelationCountLoader = /** @class */ (function () {
6
5
  // -------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/relation-count/RelationCountLoader.ts"],"names":[],"mappings":"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","file":"RelationCountLoader.js","sourcesContent":["import {ColumnMetadata} from \"../../metadata/ColumnMetadata\";\nimport {Connection} from \"../../connection/Connection\";\nimport {RelationCountAttribute} from \"./RelationCountAttribute\";\nimport {RelationCountLoadResult} from \"./RelationCountLoadResult\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\n\nexport class RelationCountLoader {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection,\n protected queryRunner: QueryRunner|undefined,\n protected relationCountAttributes: RelationCountAttribute[]) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async load(rawEntities: any[]): Promise<RelationCountLoadResult[]> {\n\n const onlyUnique = (value: any, index: number, self: any) => {\n return self.indexOf(value) === index;\n };\n\n const promises = this.relationCountAttributes.map(async relationCountAttr => {\n\n if (relationCountAttr.relation.isOneToMany) {\n // example: Post and Category\n // loadRelationCountAndMap(\"post.categoryCount\", \"post.categories\")\n // we expect it to load array of post ids\n\n // todo(dima): fix issues wit multiple primary keys and remove joinColumns[0]\n const relation = relationCountAttr.relation; // \"category.posts\"\n const inverseRelation = relation.inverseRelation!; // \"post.category\"\n const referenceColumnName = inverseRelation.joinColumns[0].referencedColumn!.propertyName; // post id\n const inverseSideTable = relation.inverseEntityMetadata.target; // Post\n const inverseSideTableName = relation.inverseEntityMetadata.tableName; // post\n const inverseSideTableAlias = relationCountAttr.alias || inverseSideTableName; // if condition (custom query builder factory) is set then relationIdAttr.alias defined\n const inverseSidePropertyName = inverseRelation.propertyName; // \"category\" from \"post.category\"\n\n let referenceColumnValues = rawEntities\n .map(rawEntity => rawEntity[relationCountAttr.parentAlias + \"_\" + referenceColumnName])\n .filter(value => !!value);\n referenceColumnValues = referenceColumnValues.filter(onlyUnique);\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 (referenceColumnValues.length === 0)\n return { relationCountAttribute: relationCountAttr, results: [] };\n\n // generate query:\n // SELECT category.post as parentId, COUNT(*) AS cnt FROM category category WHERE category.post IN (1, 2) GROUP BY category.post\n const qb = this.connection.createQueryBuilder(this.queryRunner);\n qb.select(inverseSideTableAlias + \".\" + inverseSidePropertyName, \"parentId\")\n .addSelect(\"COUNT(*)\", \"cnt\")\n .from(inverseSideTable, inverseSideTableAlias)\n .where(inverseSideTableAlias + \".\" + inverseSidePropertyName + \" IN (:...ids)\")\n .addGroupBy(inverseSideTableAlias + \".\" + inverseSidePropertyName)\n .setParameter(\"ids\", referenceColumnValues);\n\n // apply condition (custom query builder factory)\n if (relationCountAttr.queryBuilderFactory)\n relationCountAttr.queryBuilderFactory(qb);\n\n return {\n relationCountAttribute: relationCountAttr,\n results: await qb.getRawMany()\n };\n\n } else {\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 let joinTableColumnName: string;\n let inverseJoinColumnName: string;\n let firstJunctionColumn: ColumnMetadata;\n let secondJunctionColumn: ColumnMetadata;\n\n if (relationCountAttr.relation.isOwning) { // todo fix joinColumns[0] and inverseJoinColumns[0].\n joinTableColumnName = relationCountAttr.relation.joinColumns[0].referencedColumn!.databaseName;\n inverseJoinColumnName = relationCountAttr.relation.inverseJoinColumns[0].referencedColumn!.databaseName;\n firstJunctionColumn = relationCountAttr.relation.junctionEntityMetadata!.columns[0];\n secondJunctionColumn = relationCountAttr.relation.junctionEntityMetadata!.columns[1];\n\n } else {\n joinTableColumnName = relationCountAttr.relation.inverseRelation!.inverseJoinColumns[0].referencedColumn!.databaseName;\n inverseJoinColumnName = relationCountAttr.relation.inverseRelation!.joinColumns[0].referencedColumn!.databaseName;\n firstJunctionColumn = relationCountAttr.relation.junctionEntityMetadata!.columns[1];\n secondJunctionColumn = relationCountAttr.relation.junctionEntityMetadata!.columns[0];\n }\n\n let referenceColumnValues = rawEntities\n .map(rawEntity => rawEntity[relationCountAttr.parentAlias + \"_\" + joinTableColumnName])\n .filter(value => !!value);\n referenceColumnValues = referenceColumnValues.filter(onlyUnique);\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 (referenceColumnValues.length === 0)\n return { relationCountAttribute: relationCountAttr, results: [] };\n\n const junctionAlias = relationCountAttr.junctionAlias;\n const inverseSideTableName = relationCountAttr.joinInverseSideMetadata.tableName;\n const inverseSideTableAlias = relationCountAttr.alias || inverseSideTableName;\n const junctionTableName = relationCountAttr.relation.junctionEntityMetadata!.tableName;\n \n const condition = junctionAlias + \".\" + firstJunctionColumn.propertyName + \" IN (\" + referenceColumnValues.map(vals => isNaN(vals) ? \"'\" + vals + \"'\" : vals) + \")\" +\n \" AND \" + junctionAlias + \".\" + secondJunctionColumn.propertyName + \" = \" + inverseSideTableAlias + \".\" + inverseJoinColumnName;\n\n const qb = this.connection.createQueryBuilder(this.queryRunner);\n qb.select(junctionAlias + \".\" + firstJunctionColumn.propertyName, \"parentId\")\n .addSelect(\"COUNT(\" + qb.escape(inverseSideTableAlias) + \".\" + qb.escape(inverseJoinColumnName) + \")\", \"cnt\")\n .from(inverseSideTableName, inverseSideTableAlias)\n .innerJoin(junctionTableName, junctionAlias, condition)\n .addGroupBy(junctionAlias + \".\" + firstJunctionColumn.propertyName);\n\n // apply condition (custom query builder factory)\n if (relationCountAttr.queryBuilderFactory)\n relationCountAttr.queryBuilderFactory(qb);\n\n return {\n relationCountAttribute: relationCountAttr,\n results: await qb.getRawMany()\n };\n }\n });\n\n return Promise.all(promises);\n }\n\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/query-builder/relation-count/RelationCountLoader.ts"],"names":[],"mappings":"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","file":"RelationCountLoader.js","sourcesContent":["import {ColumnMetadata} from \"../../metadata/ColumnMetadata\";\nimport {Connection} from \"../../connection/Connection\";\nimport {RelationCountAttribute} from \"./RelationCountAttribute\";\nimport {RelationCountLoadResult} from \"./RelationCountLoadResult\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\n\nexport class RelationCountLoader {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection,\n protected queryRunner: QueryRunner|undefined,\n protected relationCountAttributes: RelationCountAttribute[]) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async load(rawEntities: any[]): Promise<RelationCountLoadResult[]> {\n\n const onlyUnique = (value: any, index: number, self: any) => {\n return self.indexOf(value) === index;\n };\n\n const promises = this.relationCountAttributes.map(async relationCountAttr => {\n\n if (relationCountAttr.relation.isOneToMany) {\n // example: Post and Category\n // loadRelationCountAndMap(\"post.categoryCount\", \"post.categories\")\n // we expect it to load array of post ids\n\n // todo(dima): fix issues wit multiple primary keys and remove joinColumns[0]\n const relation = relationCountAttr.relation; // \"category.posts\"\n const inverseRelation = relation.inverseRelation!; // \"post.category\"\n const referenceColumnName = inverseRelation.joinColumns[0].referencedColumn!.propertyName; // post id\n const inverseSideTable = relation.inverseEntityMetadata.target; // Post\n const inverseSideTableName = relation.inverseEntityMetadata.tableName; // post\n const inverseSideTableAlias = relationCountAttr.alias || inverseSideTableName; // if condition (custom query builder factory) is set then relationIdAttr.alias defined\n const inverseSidePropertyName = inverseRelation.propertyName; // \"category\" from \"post.category\"\n\n let referenceColumnValues = rawEntities\n .map(rawEntity => rawEntity[relationCountAttr.parentAlias + \"_\" + referenceColumnName])\n .filter(value => !!value);\n referenceColumnValues = referenceColumnValues.filter(onlyUnique);\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 (referenceColumnValues.length === 0)\n return { relationCountAttribute: relationCountAttr, results: [] };\n\n // generate query:\n // SELECT category.post as parentId, COUNT(*) AS cnt FROM category category WHERE category.post IN (1, 2) GROUP BY category.post\n const qb = this.connection.createQueryBuilder(this.queryRunner);\n qb.select(inverseSideTableAlias + \".\" + inverseSidePropertyName, \"parentId\")\n .addSelect(\"COUNT(*)\", \"cnt\")\n .from(inverseSideTable, inverseSideTableAlias)\n .where(inverseSideTableAlias + \".\" + inverseSidePropertyName + \" IN (:...ids)\")\n .addGroupBy(inverseSideTableAlias + \".\" + inverseSidePropertyName)\n .setParameter(\"ids\", referenceColumnValues);\n\n // apply condition (custom query builder factory)\n if (relationCountAttr.queryBuilderFactory)\n relationCountAttr.queryBuilderFactory(qb);\n\n return {\n relationCountAttribute: relationCountAttr,\n results: await qb.getRawMany()\n };\n\n } else {\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 let joinTableColumnName: string;\n let inverseJoinColumnName: string;\n let firstJunctionColumn: ColumnMetadata;\n let secondJunctionColumn: ColumnMetadata;\n\n if (relationCountAttr.relation.isOwning) { // todo fix joinColumns[0] and inverseJoinColumns[0].\n joinTableColumnName = relationCountAttr.relation.joinColumns[0].referencedColumn!.databaseName;\n inverseJoinColumnName = relationCountAttr.relation.inverseJoinColumns[0].referencedColumn!.databaseName;\n firstJunctionColumn = relationCountAttr.relation.junctionEntityMetadata!.columns[0];\n secondJunctionColumn = relationCountAttr.relation.junctionEntityMetadata!.columns[1];\n\n } else {\n joinTableColumnName = relationCountAttr.relation.inverseRelation!.inverseJoinColumns[0].referencedColumn!.databaseName;\n inverseJoinColumnName = relationCountAttr.relation.inverseRelation!.joinColumns[0].referencedColumn!.databaseName;\n firstJunctionColumn = relationCountAttr.relation.junctionEntityMetadata!.columns[1];\n secondJunctionColumn = relationCountAttr.relation.junctionEntityMetadata!.columns[0];\n }\n\n let referenceColumnValues = rawEntities\n .map(rawEntity => rawEntity[relationCountAttr.parentAlias + \"_\" + joinTableColumnName])\n .filter(value => !!value);\n referenceColumnValues = referenceColumnValues.filter(onlyUnique);\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 (referenceColumnValues.length === 0)\n return { relationCountAttribute: relationCountAttr, results: [] };\n\n const junctionAlias = relationCountAttr.junctionAlias;\n const inverseSideTableName = relationCountAttr.joinInverseSideMetadata.tableName;\n const inverseSideTableAlias = relationCountAttr.alias || inverseSideTableName;\n const junctionTableName = relationCountAttr.relation.junctionEntityMetadata!.tableName;\n \n const condition = junctionAlias + \".\" + firstJunctionColumn.propertyName + \" IN (\" + referenceColumnValues.map(vals => isNaN(vals) ? \"'\" + vals + \"'\" : vals) + \")\" +\n \" AND \" + junctionAlias + \".\" + secondJunctionColumn.propertyName + \" = \" + inverseSideTableAlias + \".\" + inverseJoinColumnName;\n\n const qb = this.connection.createQueryBuilder(this.queryRunner);\n qb.select(junctionAlias + \".\" + firstJunctionColumn.propertyName, \"parentId\")\n .addSelect(\"COUNT(\" + qb.escape(inverseSideTableAlias) + \".\" + qb.escape(inverseJoinColumnName) + \")\", \"cnt\")\n .from(inverseSideTableName, inverseSideTableAlias)\n .innerJoin(junctionTableName, junctionAlias, condition)\n .addGroupBy(junctionAlias + \".\" + firstJunctionColumn.propertyName);\n\n // apply condition (custom query builder factory)\n if (relationCountAttr.queryBuilderFactory)\n relationCountAttr.queryBuilderFactory(qb);\n\n return {\n relationCountAttribute: relationCountAttr,\n results: await qb.getRawMany()\n };\n }\n });\n\n return Promise.all(promises);\n }\n\n}\n"],"sourceRoot":"../.."}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RelationCountMetadataToAttributeTransformer = void 0;
4
3
  var RelationCountAttribute_1 = require("./RelationCountAttribute");
5
4
  var RelationCountMetadataToAttributeTransformer = /** @class */ (function () {
6
5
  // -------------------------------------------------------------------------