typeorm 0.2.27 → 0.2.31

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 (907) hide show
  1. package/README.md +9 -4
  2. package/browser/common/EntityFieldsNames.d.ts +6 -0
  3. package/browser/common/EntityFieldsNames.js +3 -0
  4. package/browser/common/EntityFieldsNames.js.map +1 -0
  5. package/browser/connection/Connection.d.ts +2 -2
  6. package/browser/connection/Connection.js +2 -2
  7. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  8. package/browser/connection/ConnectionOptionsReader.d.ts +3 -3
  9. package/browser/connection/ConnectionOptionsReader.js +30 -30
  10. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  11. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js +1 -1
  12. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  13. package/browser/decorator/columns/PrimaryColumn.d.ts +9 -2
  14. package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
  15. package/browser/decorator/entity/ChildEntity.js +1 -1
  16. package/browser/decorator/entity/ChildEntity.js.map +1 -1
  17. package/browser/decorator/options/RelationOptions.d.ts +10 -0
  18. package/browser/decorator/options/RelationOptions.js.map +1 -1
  19. package/browser/decorator/relations/ManyToOne.d.ts +6 -6
  20. package/browser/decorator/relations/ManyToOne.js +5 -5
  21. package/browser/decorator/relations/ManyToOne.js.map +1 -1
  22. package/browser/decorator/relations/OneToMany.d.ts +3 -2
  23. package/browser/decorator/relations/OneToMany.js +4 -3
  24. package/browser/decorator/relations/OneToMany.js.map +1 -1
  25. package/browser/decorator/transaction/Transaction.d.ts +1 -1
  26. package/browser/decorator/transaction/Transaction.js +2 -2
  27. package/browser/decorator/transaction/Transaction.js.map +1 -1
  28. package/browser/decorator/tree/Tree.d.ts +2 -1
  29. package/browser/decorator/tree/Tree.js +3 -2
  30. package/browser/decorator/tree/Tree.js.map +1 -1
  31. package/browser/driver/DriverFactory.js.map +1 -1
  32. package/browser/driver/DriverUtils.js +20 -12
  33. package/browser/driver/DriverUtils.js.map +1 -1
  34. package/browser/driver/aurora-data-api/AuroraDataApiDriver.d.ts +0 -1
  35. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js +2 -3
  36. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  37. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.d.ts +2 -1
  38. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +57 -9
  39. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  40. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.d.ts +1 -2
  41. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +3 -3
  42. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
  43. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.d.ts +2 -1
  44. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +59 -11
  45. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  46. package/browser/driver/cockroachdb/CockroachDriver.js +3 -3
  47. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  48. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +4 -0
  49. package/browser/driver/cockroachdb/CockroachQueryRunner.js +112 -42
  50. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  51. package/browser/driver/expo/ExpoQueryRunner.js +72 -14
  52. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  53. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  54. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  55. package/browser/driver/mongodb/MongoDriver.d.ts +7 -3
  56. package/browser/driver/mongodb/MongoDriver.js +19 -14
  57. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  58. package/browser/driver/mongodb/MongoQueryRunner.d.ts +3 -3
  59. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  60. package/browser/driver/mysql/MysqlDriver.js +4 -4
  61. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  62. package/browser/driver/mysql/MysqlQueryRunner.d.ts +4 -0
  63. package/browser/driver/mysql/MysqlQueryRunner.js +117 -42
  64. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  65. package/browser/driver/oracle/OracleConnectionOptions.d.ts +4 -0
  66. package/browser/driver/oracle/OracleConnectionOptions.js.map +1 -1
  67. package/browser/driver/oracle/OracleDriver.js +3 -0
  68. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  69. package/browser/driver/oracle/OracleQueryRunner.js +52 -6
  70. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  71. package/browser/driver/postgres/PostgresConnectionOptions.d.ts +4 -0
  72. package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  73. package/browser/driver/postgres/PostgresDriver.d.ts +1 -1
  74. package/browser/driver/postgres/PostgresDriver.js +11 -8
  75. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  76. package/browser/driver/postgres/PostgresQueryRunner.d.ts +8 -0
  77. package/browser/driver/postgres/PostgresQueryRunner.js +154 -60
  78. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  79. package/browser/driver/react-native/ReactNativeDriver.js +1 -2
  80. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  81. package/browser/driver/sap/SapQueryRunner.js +56 -8
  82. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  83. package/browser/driver/sqlite/SqliteQueryRunner.js +4 -0
  84. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  85. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +55 -7
  86. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  87. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  88. package/browser/driver/sqlserver/SqlServerQueryRunner.js +140 -67
  89. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  90. package/browser/driver/types/ColumnTypes.d.ts +1 -1
  91. package/browser/driver/types/ColumnTypes.js.map +1 -1
  92. package/browser/entity-manager/EntityManager.d.ts +13 -13
  93. package/browser/entity-manager/EntityManager.js +5 -16
  94. package/browser/entity-manager/EntityManager.js.map +1 -1
  95. package/browser/entity-manager/MongoEntityManager.d.ts +1 -1
  96. package/browser/entity-manager/MongoEntityManager.js +15 -4
  97. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  98. package/browser/error/index.d.ts +61 -0
  99. package/browser/error/index.js +63 -0
  100. package/browser/error/index.js.map +1 -0
  101. package/browser/find-options/FindOneOptions.d.ts +6 -1
  102. package/browser/find-options/FindOneOptions.js.map +1 -1
  103. package/browser/find-options/FindOperator.d.ts +25 -6
  104. package/browser/find-options/FindOperator.js +32 -6
  105. package/browser/find-options/FindOperator.js.map +1 -1
  106. package/browser/find-options/FindOperatorType.d.ts +1 -1
  107. package/browser/find-options/FindOperatorType.js.map +1 -1
  108. package/browser/find-options/FindOptionsUtils.d.ts +2 -2
  109. package/browser/find-options/FindOptionsUtils.js +5 -1
  110. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  111. package/browser/find-options/operator/ILike.d.ts +6 -0
  112. package/browser/find-options/operator/ILike.js +10 -0
  113. package/browser/find-options/operator/ILike.js.map +1 -0
  114. package/browser/find-options/operator/Raw.d.ts +14 -2
  115. package/browser/find-options/operator/Raw.js +5 -6
  116. package/browser/find-options/operator/Raw.js.map +1 -1
  117. package/browser/index.d.ts +3 -1
  118. package/browser/index.js +2 -23
  119. package/browser/index.js.map +1 -1
  120. package/browser/logger/Logger.d.ts +1 -1
  121. package/browser/logger/Logger.js.map +1 -1
  122. package/browser/metadata/ColumnMetadata.js +16 -3
  123. package/browser/metadata/ColumnMetadata.js.map +1 -1
  124. package/browser/metadata/EntityMetadata.d.ts +5 -0
  125. package/browser/metadata/EntityMetadata.js +1 -0
  126. package/browser/metadata/EntityMetadata.js.map +1 -1
  127. package/browser/metadata/RelationMetadata.d.ts +15 -0
  128. package/browser/metadata/RelationMetadata.js +18 -2
  129. package/browser/metadata/RelationMetadata.js.map +1 -1
  130. package/browser/metadata/types/ClosureTreeOptions.d.ts +10 -0
  131. package/browser/metadata/types/ClosureTreeOptions.js +3 -0
  132. package/browser/metadata/types/ClosureTreeOptions.js.map +1 -0
  133. package/browser/metadata/types/EventListenerTypes.d.ts +7 -7
  134. package/browser/metadata/types/EventListenerTypes.js.map +1 -1
  135. package/browser/metadata-args/TreeMetadataArgs.d.ts +5 -0
  136. package/browser/metadata-args/TreeMetadataArgs.js.map +1 -1
  137. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +3 -3
  138. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  139. package/browser/metadata-builder/EntityMetadataBuilder.js +19 -9
  140. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  141. package/browser/metadata-builder/EntityMetadataValidator.js +8 -5
  142. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  143. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +2 -2
  144. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  145. package/browser/metadata-builder/RelationJoinColumnBuilder.d.ts +1 -0
  146. package/browser/metadata-builder/RelationJoinColumnBuilder.js +5 -5
  147. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  148. package/browser/persistence/EntityPersistExecutor.js +55 -52
  149. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  150. package/browser/persistence/Subject.d.ts +4 -4
  151. package/browser/persistence/Subject.js +6 -5
  152. package/browser/persistence/Subject.js.map +1 -1
  153. package/browser/persistence/SubjectExecutor.js +9 -5
  154. package/browser/persistence/SubjectExecutor.js.map +1 -1
  155. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  156. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +9 -4
  157. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  158. package/browser/persistence/tree/ClosureSubjectExecutor.d.ts +1 -1
  159. package/browser/persistence/tree/ClosureSubjectExecutor.js +5 -5
  160. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  161. package/browser/query-builder/Alias.d.ts +3 -4
  162. package/browser/query-builder/Alias.js +3 -3
  163. package/browser/query-builder/DeleteQueryBuilder.js +2 -1
  164. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  165. package/browser/query-builder/InsertQueryBuilder.d.ts +6 -0
  166. package/browser/query-builder/InsertQueryBuilder.js +62 -13
  167. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  168. package/browser/query-builder/JoinAttribute.d.ts +10 -10
  169. package/browser/query-builder/JoinAttribute.js +10 -10
  170. package/browser/query-builder/QueryBuilder.d.ts +8 -1
  171. package/browser/query-builder/QueryBuilder.js +168 -33
  172. package/browser/query-builder/QueryBuilder.js.map +1 -1
  173. package/browser/query-builder/QueryBuilderUtils.js.map +1 -1
  174. package/browser/query-builder/QueryExpressionMap.d.ts +6 -2
  175. package/browser/query-builder/QueryExpressionMap.js +3 -2
  176. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  177. package/browser/query-builder/RelationLoader.js +1 -1
  178. package/browser/query-builder/RelationLoader.js.map +1 -1
  179. package/browser/query-builder/SelectQueryBuilder.d.ts +5 -0
  180. package/browser/query-builder/SelectQueryBuilder.js +98 -56
  181. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  182. package/browser/query-builder/UpdateQueryBuilder.js +2 -1
  183. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  184. package/browser/query-builder/relation-count/RelationCountAttribute.d.ts +7 -7
  185. package/browser/query-builder/relation-count/RelationCountAttribute.js +7 -7
  186. package/browser/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  187. package/browser/query-builder/relation-id/RelationIdAttribute.d.ts +8 -8
  188. package/browser/query-builder/relation-id/RelationIdAttribute.js +8 -8
  189. package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  190. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +3 -3
  191. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  192. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +6 -3
  193. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  194. package/browser/query-runner/QueryRunner.d.ts +1 -1
  195. package/browser/query-runner/QueryRunner.js.map +1 -1
  196. package/browser/repository/AbstractRepository.d.ts +2 -2
  197. package/browser/repository/AbstractRepository.js +2 -2
  198. package/browser/repository/BaseEntity.d.ts +1 -1
  199. package/browser/repository/BaseEntity.js +1 -1
  200. package/browser/repository/Repository.d.ts +4 -4
  201. package/browser/repository/Repository.js +1 -1
  202. package/browser/repository/Repository.js.map +1 -1
  203. package/browser/repository/TreeRepository.js +2 -2
  204. package/browser/repository/TreeRepository.js.map +1 -1
  205. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +2 -2
  206. package/browser/schema-builder/RdbmsSchemaBuilder.js +4 -3
  207. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  208. package/browser/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  209. package/browser/schema-builder/table/Table.d.ts +1 -1
  210. package/browser/schema-builder/table/Table.js +1 -1
  211. package/browser/subscriber/Broadcaster.d.ts +24 -0
  212. package/browser/subscriber/Broadcaster.js +120 -0
  213. package/browser/subscriber/Broadcaster.js.map +1 -1
  214. package/browser/subscriber/EntitySubscriberInterface.d.ts +27 -0
  215. package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
  216. package/browser/subscriber/event/TransactionCommitEvent.d.ts +22 -0
  217. package/browser/subscriber/event/TransactionCommitEvent.js +3 -0
  218. package/browser/subscriber/event/TransactionCommitEvent.js.map +1 -0
  219. package/browser/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
  220. package/browser/subscriber/event/TransactionRollbackEvent.js +3 -0
  221. package/browser/subscriber/event/TransactionRollbackEvent.js.map +1 -0
  222. package/browser/subscriber/event/TransactionStartEvent.d.ts +22 -0
  223. package/browser/subscriber/event/TransactionStartEvent.js +3 -0
  224. package/browser/subscriber/event/TransactionStartEvent.js.map +1 -0
  225. package/browser/util/DateUtils.d.ts +1 -1
  226. package/browser/util/DateUtils.js +1 -7
  227. package/browser/util/DateUtils.js.map +1 -1
  228. package/browser/util/StringUtils.js.map +1 -1
  229. package/cache/DbQueryResultCache.js +0 -1
  230. package/cache/DbQueryResultCache.js.map +1 -1
  231. package/cache/QueryResultCacheFactory.js +0 -1
  232. package/cache/QueryResultCacheFactory.js.map +1 -1
  233. package/cache/RedisQueryResultCache.js +0 -1
  234. package/cache/RedisQueryResultCache.js.map +1 -1
  235. package/cli.js +2 -2
  236. package/cli.js.map +1 -1
  237. package/commands/CacheClearCommand.js +0 -1
  238. package/commands/CacheClearCommand.js.map +1 -1
  239. package/commands/CommandUtils.js +0 -1
  240. package/commands/CommandUtils.js.map +1 -1
  241. package/commands/EntityCreateCommand.js +5 -3
  242. package/commands/EntityCreateCommand.js.map +1 -1
  243. package/commands/InitCommand.js +1 -2
  244. package/commands/InitCommand.js.map +1 -1
  245. package/commands/MigrationCreateCommand.d.ts +6 -0
  246. package/commands/MigrationCreateCommand.js +22 -5
  247. package/commands/MigrationCreateCommand.js.map +1 -1
  248. package/commands/MigrationGenerateCommand.d.ts +6 -0
  249. package/commands/MigrationGenerateCommand.js +44 -31
  250. package/commands/MigrationGenerateCommand.js.map +1 -1
  251. package/commands/MigrationRevertCommand.js +0 -1
  252. package/commands/MigrationRevertCommand.js.map +1 -1
  253. package/commands/MigrationRunCommand.js +0 -1
  254. package/commands/MigrationRunCommand.js.map +1 -1
  255. package/commands/MigrationShowCommand.js +0 -1
  256. package/commands/MigrationShowCommand.js.map +1 -1
  257. package/commands/QueryCommand.d.ts +2 -0
  258. package/commands/QueryCommand.js +16 -7
  259. package/commands/QueryCommand.js.map +1 -1
  260. package/commands/SchemaDropCommand.js +0 -1
  261. package/commands/SchemaDropCommand.js.map +1 -1
  262. package/commands/SchemaLogCommand.js +0 -1
  263. package/commands/SchemaLogCommand.js.map +1 -1
  264. package/commands/SchemaSyncCommand.js +0 -1
  265. package/commands/SchemaSyncCommand.js.map +1 -1
  266. package/commands/SubscriberCreateCommand.js +5 -3
  267. package/commands/SubscriberCreateCommand.js.map +1 -1
  268. package/commands/VersionCommand.js +0 -1
  269. package/commands/VersionCommand.js.map +1 -1
  270. package/common/EntityFieldsNames.d.ts +6 -0
  271. package/common/EntityFieldsNames.js +4 -0
  272. package/common/EntityFieldsNames.js.map +1 -0
  273. package/connection/Connection.d.ts +2 -2
  274. package/connection/Connection.js +2 -3
  275. package/connection/Connection.js.map +1 -1
  276. package/connection/ConnectionManager.js +0 -1
  277. package/connection/ConnectionManager.js.map +1 -1
  278. package/connection/ConnectionMetadataBuilder.js +0 -1
  279. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  280. package/connection/ConnectionOptionsReader.d.ts +3 -3
  281. package/connection/ConnectionOptionsReader.js +30 -31
  282. package/connection/ConnectionOptionsReader.js.map +1 -1
  283. package/connection/options-reader/ConnectionOptionsEnvReader.js +1 -2
  284. package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  285. package/connection/options-reader/ConnectionOptionsXmlReader.js +0 -1
  286. package/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
  287. package/connection/options-reader/ConnectionOptionsYmlReader.js +0 -1
  288. package/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  289. package/container.js +0 -1
  290. package/container.js.map +1 -1
  291. package/decorator/Check.js +0 -1
  292. package/decorator/Check.js.map +1 -1
  293. package/decorator/EntityRepository.js +0 -1
  294. package/decorator/EntityRepository.js.map +1 -1
  295. package/decorator/Exclusion.js +0 -1
  296. package/decorator/Exclusion.js.map +1 -1
  297. package/decorator/Generated.js +0 -1
  298. package/decorator/Generated.js.map +1 -1
  299. package/decorator/Index.js +0 -1
  300. package/decorator/Index.js.map +1 -1
  301. package/decorator/Unique.js +0 -1
  302. package/decorator/Unique.js.map +1 -1
  303. package/decorator/columns/Column.js +0 -1
  304. package/decorator/columns/Column.js.map +1 -1
  305. package/decorator/columns/CreateDateColumn.js +0 -1
  306. package/decorator/columns/CreateDateColumn.js.map +1 -1
  307. package/decorator/columns/DeleteDateColumn.js +0 -1
  308. package/decorator/columns/DeleteDateColumn.js.map +1 -1
  309. package/decorator/columns/ObjectIdColumn.js +0 -1
  310. package/decorator/columns/ObjectIdColumn.js.map +1 -1
  311. package/decorator/columns/PrimaryColumn.d.ts +9 -2
  312. package/decorator/columns/PrimaryColumn.js +0 -1
  313. package/decorator/columns/PrimaryColumn.js.map +1 -1
  314. package/decorator/columns/PrimaryGeneratedColumn.js +0 -1
  315. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  316. package/decorator/columns/UpdateDateColumn.js +0 -1
  317. package/decorator/columns/UpdateDateColumn.js.map +1 -1
  318. package/decorator/columns/VersionColumn.js +0 -1
  319. package/decorator/columns/VersionColumn.js.map +1 -1
  320. package/decorator/columns/ViewColumn.js +0 -1
  321. package/decorator/columns/ViewColumn.js.map +1 -1
  322. package/decorator/entity/ChildEntity.js +1 -2
  323. package/decorator/entity/ChildEntity.js.map +1 -1
  324. package/decorator/entity/Entity.js +0 -1
  325. package/decorator/entity/Entity.js.map +1 -1
  326. package/decorator/entity/TableInheritance.js +0 -1
  327. package/decorator/entity/TableInheritance.js.map +1 -1
  328. package/decorator/entity-view/ViewEntity.js +0 -1
  329. package/decorator/entity-view/ViewEntity.js.map +1 -1
  330. package/decorator/listeners/AfterInsert.js +0 -1
  331. package/decorator/listeners/AfterInsert.js.map +1 -1
  332. package/decorator/listeners/AfterLoad.js +0 -1
  333. package/decorator/listeners/AfterLoad.js.map +1 -1
  334. package/decorator/listeners/AfterRemove.js +0 -1
  335. package/decorator/listeners/AfterRemove.js.map +1 -1
  336. package/decorator/listeners/AfterUpdate.js +0 -1
  337. package/decorator/listeners/AfterUpdate.js.map +1 -1
  338. package/decorator/listeners/BeforeInsert.js +0 -1
  339. package/decorator/listeners/BeforeInsert.js.map +1 -1
  340. package/decorator/listeners/BeforeRemove.js +0 -1
  341. package/decorator/listeners/BeforeRemove.js.map +1 -1
  342. package/decorator/listeners/BeforeUpdate.js +0 -1
  343. package/decorator/listeners/BeforeUpdate.js.map +1 -1
  344. package/decorator/listeners/EventSubscriber.js +0 -1
  345. package/decorator/listeners/EventSubscriber.js.map +1 -1
  346. package/decorator/options/RelationOptions.d.ts +10 -0
  347. package/decorator/options/RelationOptions.js.map +1 -1
  348. package/decorator/relations/JoinColumn.js +0 -1
  349. package/decorator/relations/JoinColumn.js.map +1 -1
  350. package/decorator/relations/JoinTable.js +0 -1
  351. package/decorator/relations/JoinTable.js.map +1 -1
  352. package/decorator/relations/ManyToMany.js +0 -1
  353. package/decorator/relations/ManyToMany.js.map +1 -1
  354. package/decorator/relations/ManyToOne.d.ts +6 -6
  355. package/decorator/relations/ManyToOne.js +5 -6
  356. package/decorator/relations/ManyToOne.js.map +1 -1
  357. package/decorator/relations/OneToMany.d.ts +3 -2
  358. package/decorator/relations/OneToMany.js +4 -4
  359. package/decorator/relations/OneToMany.js.map +1 -1
  360. package/decorator/relations/OneToOne.js +0 -1
  361. package/decorator/relations/OneToOne.js.map +1 -1
  362. package/decorator/relations/RelationCount.js +0 -1
  363. package/decorator/relations/RelationCount.js.map +1 -1
  364. package/decorator/relations/RelationId.js +0 -1
  365. package/decorator/relations/RelationId.js.map +1 -1
  366. package/decorator/transaction/Transaction.d.ts +1 -1
  367. package/decorator/transaction/Transaction.js +2 -3
  368. package/decorator/transaction/Transaction.js.map +1 -1
  369. package/decorator/transaction/TransactionManager.js +0 -1
  370. package/decorator/transaction/TransactionManager.js.map +1 -1
  371. package/decorator/transaction/TransactionRepository.js +0 -1
  372. package/decorator/transaction/TransactionRepository.js.map +1 -1
  373. package/decorator/tree/Tree.d.ts +2 -1
  374. package/decorator/tree/Tree.js +3 -3
  375. package/decorator/tree/Tree.js.map +1 -1
  376. package/decorator/tree/TreeChildren.js +0 -1
  377. package/decorator/tree/TreeChildren.js.map +1 -1
  378. package/decorator/tree/TreeLevelColumn.js +0 -1
  379. package/decorator/tree/TreeLevelColumn.js.map +1 -1
  380. package/decorator/tree/TreeParent.js +0 -1
  381. package/decorator/tree/TreeParent.js.map +1 -1
  382. package/driver/DriverFactory.js +0 -1
  383. package/driver/DriverFactory.js.map +1 -1
  384. package/driver/DriverUtils.js +19 -12
  385. package/driver/DriverUtils.js.map +1 -1
  386. package/driver/Query.js +0 -1
  387. package/driver/Query.js.map +1 -1
  388. package/driver/SqlInMemory.js +0 -1
  389. package/driver/SqlInMemory.js.map +1 -1
  390. package/driver/aurora-data-api/AuroraDataApiConnection.js +0 -1
  391. package/driver/aurora-data-api/AuroraDataApiConnection.js.map +1 -1
  392. package/driver/aurora-data-api/AuroraDataApiDriver.d.ts +0 -1
  393. package/driver/aurora-data-api/AuroraDataApiDriver.js +2 -4
  394. package/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  395. package/driver/aurora-data-api/AuroraDataApiQueryRunner.d.ts +2 -1
  396. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +57 -10
  397. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  398. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.d.ts +1 -2
  399. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +3 -4
  400. package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
  401. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.d.ts +2 -1
  402. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +59 -12
  403. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  404. package/driver/better-sqlite3/BetterSqlite3Driver.js +0 -1
  405. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  406. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +0 -1
  407. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  408. package/driver/cockroachdb/CockroachDriver.js +3 -4
  409. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  410. package/driver/cockroachdb/CockroachQueryRunner.d.ts +4 -0
  411. package/driver/cockroachdb/CockroachQueryRunner.js +112 -43
  412. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  413. package/driver/cordova/CordovaDriver.js +0 -1
  414. package/driver/cordova/CordovaDriver.js.map +1 -1
  415. package/driver/cordova/CordovaQueryRunner.js +0 -1
  416. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  417. package/driver/expo/ExpoDriver.js +0 -1
  418. package/driver/expo/ExpoDriver.js.map +1 -1
  419. package/driver/expo/ExpoQueryRunner.js +72 -15
  420. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  421. package/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  422. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  423. package/driver/mongodb/MongoDriver.d.ts +7 -3
  424. package/driver/mongodb/MongoDriver.js +19 -15
  425. package/driver/mongodb/MongoDriver.js.map +1 -1
  426. package/driver/mongodb/MongoQueryRunner.d.ts +3 -3
  427. package/driver/mongodb/MongoQueryRunner.js +0 -1
  428. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  429. package/driver/mysql/MysqlDriver.js +4 -5
  430. package/driver/mysql/MysqlDriver.js.map +1 -1
  431. package/driver/mysql/MysqlQueryRunner.d.ts +4 -0
  432. package/driver/mysql/MysqlQueryRunner.js +117 -43
  433. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  434. package/driver/nativescript/NativescriptDriver.js +0 -1
  435. package/driver/nativescript/NativescriptDriver.js.map +1 -1
  436. package/driver/nativescript/NativescriptQueryRunner.js +0 -1
  437. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  438. package/driver/oracle/OracleConnectionOptions.d.ts +4 -0
  439. package/driver/oracle/OracleConnectionOptions.js.map +1 -1
  440. package/driver/oracle/OracleDriver.js +3 -1
  441. package/driver/oracle/OracleDriver.js.map +1 -1
  442. package/driver/oracle/OracleQueryRunner.js +52 -7
  443. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  444. package/driver/postgres/PostgresConnectionOptions.d.ts +4 -0
  445. package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  446. package/driver/postgres/PostgresDriver.d.ts +1 -1
  447. package/driver/postgres/PostgresDriver.js +11 -9
  448. package/driver/postgres/PostgresDriver.js.map +1 -1
  449. package/driver/postgres/PostgresQueryRunner.d.ts +8 -0
  450. package/driver/postgres/PostgresQueryRunner.js +155 -61
  451. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  452. package/driver/react-native/ReactNativeDriver.js +1 -3
  453. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  454. package/driver/react-native/ReactNativeQueryRunner.js +0 -1
  455. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  456. package/driver/sap/SapDriver.js +0 -1
  457. package/driver/sap/SapDriver.js.map +1 -1
  458. package/driver/sap/SapQueryRunner.js +56 -9
  459. package/driver/sap/SapQueryRunner.js.map +1 -1
  460. package/driver/sqlite/SqliteDriver.js +0 -1
  461. package/driver/sqlite/SqliteDriver.js.map +1 -1
  462. package/driver/sqlite/SqliteQueryRunner.js +4 -1
  463. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  464. package/driver/sqlite-abstract/AbstractSqliteDriver.js +0 -1
  465. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  466. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +55 -8
  467. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  468. package/driver/sqljs/SqljsDriver.js +0 -1
  469. package/driver/sqljs/SqljsDriver.js.map +1 -1
  470. package/driver/sqljs/SqljsQueryRunner.js +0 -1
  471. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  472. package/driver/sqlserver/MssqlParameter.js +0 -1
  473. package/driver/sqlserver/MssqlParameter.js.map +1 -1
  474. package/driver/sqlserver/SqlServerDriver.js +0 -1
  475. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  476. package/driver/sqlserver/SqlServerQueryRunner.js +140 -68
  477. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  478. package/driver/types/ColumnTypes.d.ts +1 -1
  479. package/driver/types/ColumnTypes.js.map +1 -1
  480. package/entity-manager/EntityManager.d.ts +13 -13
  481. package/entity-manager/EntityManager.js +5 -17
  482. package/entity-manager/EntityManager.js.map +1 -1
  483. package/entity-manager/EntityManagerFactory.js +0 -1
  484. package/entity-manager/EntityManagerFactory.js.map +1 -1
  485. package/entity-manager/MongoEntityManager.d.ts +1 -1
  486. package/entity-manager/MongoEntityManager.js +15 -5
  487. package/entity-manager/MongoEntityManager.js.map +1 -1
  488. package/entity-manager/SqljsEntityManager.js +0 -1
  489. package/entity-manager/SqljsEntityManager.js.map +1 -1
  490. package/entity-schema/EntitySchema.js +0 -1
  491. package/entity-schema/EntitySchema.js.map +1 -1
  492. package/entity-schema/EntitySchemaOptions.js +0 -1
  493. package/entity-schema/EntitySchemaOptions.js.map +1 -1
  494. package/entity-schema/EntitySchemaTransformer.js +0 -1
  495. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  496. package/error/AlreadyHasActiveConnectionError.js +0 -1
  497. package/error/AlreadyHasActiveConnectionError.js.map +1 -1
  498. package/error/CannotAttachTreeChildrenEntityError.js +0 -1
  499. package/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  500. package/error/CannotConnectAlreadyConnectedError.js +0 -1
  501. package/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  502. package/error/CannotCreateEntityIdMapError.js +0 -1
  503. package/error/CannotCreateEntityIdMapError.js.map +1 -1
  504. package/error/CannotDetermineEntityError.js +0 -1
  505. package/error/CannotDetermineEntityError.js.map +1 -1
  506. package/error/CannotExecuteNotConnectedError.js +0 -1
  507. package/error/CannotExecuteNotConnectedError.js.map +1 -1
  508. package/error/CannotGetEntityManagerNotConnectedError.js +0 -1
  509. package/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  510. package/error/CannotReflectMethodParameterTypeError.js +0 -1
  511. package/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  512. package/error/CircularRelationsError.js +0 -1
  513. package/error/CircularRelationsError.js.map +1 -1
  514. package/error/ColumnTypeUndefinedError.js +0 -1
  515. package/error/ColumnTypeUndefinedError.js.map +1 -1
  516. package/error/ConnectionIsNotSetError.js +0 -1
  517. package/error/ConnectionIsNotSetError.js.map +1 -1
  518. package/error/ConnectionNotFoundError.js +0 -1
  519. package/error/ConnectionNotFoundError.js.map +1 -1
  520. package/error/CustomRepositoryCannotInheritRepositoryError.js +0 -1
  521. package/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  522. package/error/CustomRepositoryDoesNotHaveEntityError.js +0 -1
  523. package/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  524. package/error/CustomRepositoryNotFoundError.js +0 -1
  525. package/error/CustomRepositoryNotFoundError.js.map +1 -1
  526. package/error/DataTypeNotSupportedError.js +0 -1
  527. package/error/DataTypeNotSupportedError.js.map +1 -1
  528. package/error/DriverOptionNotSetError.js +0 -1
  529. package/error/DriverOptionNotSetError.js.map +1 -1
  530. package/error/DriverPackageNotInstalledError.js +0 -1
  531. package/error/DriverPackageNotInstalledError.js.map +1 -1
  532. package/error/EntityColumnNotFound.js +0 -1
  533. package/error/EntityColumnNotFound.js.map +1 -1
  534. package/error/EntityMetadataNotFoundError.js +0 -1
  535. package/error/EntityMetadataNotFoundError.js.map +1 -1
  536. package/error/EntityNotFoundError.js +0 -1
  537. package/error/EntityNotFoundError.js.map +1 -1
  538. package/error/FindRelationsNotFoundError.js +0 -1
  539. package/error/FindRelationsNotFoundError.js.map +1 -1
  540. package/error/InitializedRelationError.js +0 -1
  541. package/error/InitializedRelationError.js.map +1 -1
  542. package/error/InsertValuesMissingError.js +0 -1
  543. package/error/InsertValuesMissingError.js.map +1 -1
  544. package/error/LimitOnUpdateNotSupportedError.js +0 -1
  545. package/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  546. package/error/LockNotSupportedOnGivenDriverError.js +0 -1
  547. package/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  548. package/error/MetadataAlreadyExistsError.js +0 -1
  549. package/error/MetadataAlreadyExistsError.js.map +1 -1
  550. package/error/MetadataWithSuchNameAlreadyExistsError.js +0 -1
  551. package/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  552. package/error/MissingDeleteDateColumnError.js +0 -1
  553. package/error/MissingDeleteDateColumnError.js.map +1 -1
  554. package/error/MissingDriverError.js +0 -1
  555. package/error/MissingDriverError.js.map +1 -1
  556. package/error/MissingJoinColumnError.js +0 -1
  557. package/error/MissingJoinColumnError.js.map +1 -1
  558. package/error/MissingJoinTableError.js +0 -1
  559. package/error/MissingJoinTableError.js.map +1 -1
  560. package/error/MissingPrimaryColumnError.js +0 -1
  561. package/error/MissingPrimaryColumnError.js.map +1 -1
  562. package/error/MustBeEntityError.js +0 -1
  563. package/error/MustBeEntityError.js.map +1 -1
  564. package/error/NamingStrategyNotFoundError.js +0 -1
  565. package/error/NamingStrategyNotFoundError.js.map +1 -1
  566. package/error/NoConnectionForRepositoryError.js +0 -1
  567. package/error/NoConnectionForRepositoryError.js.map +1 -1
  568. package/error/NoConnectionOptionError.js +0 -1
  569. package/error/NoConnectionOptionError.js.map +1 -1
  570. package/error/NoNeedToReleaseEntityManagerError.js +0 -1
  571. package/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  572. package/error/NoVersionOrUpdateDateColumnError.js +0 -1
  573. package/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  574. package/error/OffsetWithoutLimitNotSupportedError.js +0 -1
  575. package/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  576. package/error/OptimisticLockCanNotBeUsedError.js +0 -1
  577. package/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  578. package/error/OptimisticLockVersionMismatchError.js +0 -1
  579. package/error/OptimisticLockVersionMismatchError.js.map +1 -1
  580. package/error/PersistedEntityNotFoundError.js +0 -1
  581. package/error/PersistedEntityNotFoundError.js.map +1 -1
  582. package/error/PessimisticLockTransactionRequiredError.js +0 -1
  583. package/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  584. package/error/PrimaryColumnCannotBeNullableError.js +0 -1
  585. package/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  586. package/error/QueryFailedError.js +0 -1
  587. package/error/QueryFailedError.js.map +1 -1
  588. package/error/QueryRunnerAlreadyReleasedError.js +0 -1
  589. package/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  590. package/error/QueryRunnerProviderAlreadyReleasedError.js +0 -1
  591. package/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  592. package/error/RepositoryNotFoundError.js +0 -1
  593. package/error/RepositoryNotFoundError.js.map +1 -1
  594. package/error/RepositoryNotTreeError.js +0 -1
  595. package/error/RepositoryNotTreeError.js.map +1 -1
  596. package/error/ReturningStatementNotSupportedError.js +0 -1
  597. package/error/ReturningStatementNotSupportedError.js.map +1 -1
  598. package/error/SubjectRemovedAndUpdatedError.js +0 -1
  599. package/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  600. package/error/SubjectWithoutIdentifierError.js +0 -1
  601. package/error/SubjectWithoutIdentifierError.js.map +1 -1
  602. package/error/TransactionAlreadyStartedError.js +0 -1
  603. package/error/TransactionAlreadyStartedError.js.map +1 -1
  604. package/error/TransactionNotStartedError.js +0 -1
  605. package/error/TransactionNotStartedError.js.map +1 -1
  606. package/error/TreeRepositoryNotSupportedError.js +0 -1
  607. package/error/TreeRepositoryNotSupportedError.js.map +1 -1
  608. package/error/UpdateValuesMissingError.js +0 -1
  609. package/error/UpdateValuesMissingError.js.map +1 -1
  610. package/error/UsingJoinColumnIsNotAllowedError.js +0 -1
  611. package/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  612. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +0 -1
  613. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  614. package/error/UsingJoinTableIsNotAllowedError.js +0 -1
  615. package/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  616. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js +0 -1
  617. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  618. package/error/index.d.ts +61 -0
  619. package/error/index.js +66 -0
  620. package/error/index.js.map +1 -0
  621. package/find-options/FindOneOptions.d.ts +6 -1
  622. package/find-options/FindOneOptions.js.map +1 -1
  623. package/find-options/FindOperator.d.ts +25 -6
  624. package/find-options/FindOperator.js +32 -7
  625. package/find-options/FindOperator.js.map +1 -1
  626. package/find-options/FindOperatorType.d.ts +1 -1
  627. package/find-options/FindOperatorType.js.map +1 -1
  628. package/find-options/FindOptionsUtils.d.ts +2 -2
  629. package/find-options/FindOptionsUtils.js +5 -2
  630. package/find-options/FindOptionsUtils.js.map +1 -1
  631. package/find-options/operator/Any.js +0 -1
  632. package/find-options/operator/Any.js.map +1 -1
  633. package/find-options/operator/Between.js +0 -1
  634. package/find-options/operator/Between.js.map +1 -1
  635. package/find-options/operator/Equal.js +0 -1
  636. package/find-options/operator/Equal.js.map +1 -1
  637. package/find-options/operator/ILike.d.ts +6 -0
  638. package/find-options/operator/ILike.js +13 -0
  639. package/find-options/operator/ILike.js.map +1 -0
  640. package/find-options/operator/In.js +0 -1
  641. package/find-options/operator/In.js.map +1 -1
  642. package/find-options/operator/IsNull.js +0 -1
  643. package/find-options/operator/IsNull.js.map +1 -1
  644. package/find-options/operator/LessThan.js +0 -1
  645. package/find-options/operator/LessThan.js.map +1 -1
  646. package/find-options/operator/LessThanOrEqual.js +0 -1
  647. package/find-options/operator/LessThanOrEqual.js.map +1 -1
  648. package/find-options/operator/Like.js +0 -1
  649. package/find-options/operator/Like.js.map +1 -1
  650. package/find-options/operator/MoreThan.js +0 -1
  651. package/find-options/operator/MoreThan.js.map +1 -1
  652. package/find-options/operator/MoreThanOrEqual.js +0 -1
  653. package/find-options/operator/MoreThanOrEqual.js.map +1 -1
  654. package/find-options/operator/Not.js +0 -1
  655. package/find-options/operator/Not.js.map +1 -1
  656. package/find-options/operator/Raw.d.ts +14 -2
  657. package/find-options/operator/Raw.js +5 -7
  658. package/find-options/operator/Raw.js.map +1 -1
  659. package/index.d.ts +3 -1
  660. package/index.js +20 -42
  661. package/index.js.map +1 -1
  662. package/logger/AdvancedConsoleLogger.js +0 -1
  663. package/logger/AdvancedConsoleLogger.js.map +1 -1
  664. package/logger/DebugLogger.js +0 -1
  665. package/logger/DebugLogger.js.map +1 -1
  666. package/logger/FileLogger.js +0 -1
  667. package/logger/FileLogger.js.map +1 -1
  668. package/logger/Logger.d.ts +1 -1
  669. package/logger/Logger.js.map +1 -1
  670. package/logger/LoggerFactory.js +0 -1
  671. package/logger/LoggerFactory.js.map +1 -1
  672. package/logger/SimpleConsoleLogger.js +0 -1
  673. package/logger/SimpleConsoleLogger.js.map +1 -1
  674. package/metadata/CheckMetadata.js +0 -1
  675. package/metadata/CheckMetadata.js.map +1 -1
  676. package/metadata/ColumnMetadata.js +16 -4
  677. package/metadata/ColumnMetadata.js.map +1 -1
  678. package/metadata/EmbeddedMetadata.js +0 -1
  679. package/metadata/EmbeddedMetadata.js.map +1 -1
  680. package/metadata/EntityListenerMetadata.js +0 -1
  681. package/metadata/EntityListenerMetadata.js.map +1 -1
  682. package/metadata/EntityMetadata.d.ts +5 -0
  683. package/metadata/EntityMetadata.js +1 -1
  684. package/metadata/EntityMetadata.js.map +1 -1
  685. package/metadata/ExclusionMetadata.js +0 -1
  686. package/metadata/ExclusionMetadata.js.map +1 -1
  687. package/metadata/ForeignKeyMetadata.js +0 -1
  688. package/metadata/ForeignKeyMetadata.js.map +1 -1
  689. package/metadata/IndexMetadata.js +0 -1
  690. package/metadata/IndexMetadata.js.map +1 -1
  691. package/metadata/RelationCountMetadata.js +0 -1
  692. package/metadata/RelationCountMetadata.js.map +1 -1
  693. package/metadata/RelationIdMetadata.js +0 -1
  694. package/metadata/RelationIdMetadata.js.map +1 -1
  695. package/metadata/RelationMetadata.d.ts +15 -0
  696. package/metadata/RelationMetadata.js +18 -3
  697. package/metadata/RelationMetadata.js.map +1 -1
  698. package/metadata/UniqueMetadata.js +0 -1
  699. package/metadata/UniqueMetadata.js.map +1 -1
  700. package/metadata/types/ClosureTreeOptions.d.ts +10 -0
  701. package/metadata/types/ClosureTreeOptions.js +4 -0
  702. package/metadata/types/ClosureTreeOptions.js.map +1 -0
  703. package/metadata/types/EventListenerTypes.d.ts +7 -7
  704. package/metadata/types/EventListenerTypes.js +0 -1
  705. package/metadata/types/EventListenerTypes.js.map +1 -1
  706. package/metadata-args/MetadataArgsStorage.js +0 -1
  707. package/metadata-args/MetadataArgsStorage.js.map +1 -1
  708. package/metadata-args/TreeMetadataArgs.d.ts +5 -0
  709. package/metadata-args/TreeMetadataArgs.js.map +1 -1
  710. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +3 -4
  711. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  712. package/metadata-builder/EntityMetadataBuilder.js +19 -10
  713. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  714. package/metadata-builder/EntityMetadataValidator.js +8 -6
  715. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  716. package/metadata-builder/JunctionEntityMetadataBuilder.js +2 -3
  717. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  718. package/metadata-builder/MetadataUtils.js +0 -1
  719. package/metadata-builder/MetadataUtils.js.map +1 -1
  720. package/metadata-builder/RelationJoinColumnBuilder.d.ts +1 -0
  721. package/metadata-builder/RelationJoinColumnBuilder.js +5 -6
  722. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  723. package/migration/Migration.js +0 -1
  724. package/migration/Migration.js.map +1 -1
  725. package/migration/MigrationExecutor.js +0 -1
  726. package/migration/MigrationExecutor.js.map +1 -1
  727. package/naming-strategy/DefaultNamingStrategy.js +0 -1
  728. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  729. package/package.json +7 -5
  730. package/persistence/EntityPersistExecutor.js +55 -53
  731. package/persistence/EntityPersistExecutor.js.map +1 -1
  732. package/persistence/Subject.d.ts +4 -4
  733. package/persistence/Subject.js +6 -6
  734. package/persistence/Subject.js.map +1 -1
  735. package/persistence/SubjectChangedColumnsComputer.js +0 -1
  736. package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  737. package/persistence/SubjectDatabaseEntityLoader.js +0 -1
  738. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  739. package/persistence/SubjectExecutor.js +9 -6
  740. package/persistence/SubjectExecutor.js.map +1 -1
  741. package/persistence/SubjectTopoligicalSorter.js +0 -1
  742. package/persistence/SubjectTopoligicalSorter.js.map +1 -1
  743. package/persistence/subject-builder/CascadesSubjectBuilder.js +0 -1
  744. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  745. package/persistence/subject-builder/ManyToManySubjectBuilder.js +0 -1
  746. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  747. package/persistence/subject-builder/OneToManySubjectBuilder.js +9 -5
  748. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  749. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +0 -1
  750. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  751. package/persistence/tree/ClosureSubjectExecutor.d.ts +1 -1
  752. package/persistence/tree/ClosureSubjectExecutor.js +5 -6
  753. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  754. package/persistence/tree/MaterializedPathSubjectExecutor.js +0 -1
  755. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  756. package/persistence/tree/NestedSetSubjectExecutor.js +0 -1
  757. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  758. package/platform/PlatformTools.js +4 -5
  759. package/platform/PlatformTools.js.map +1 -1
  760. package/query-builder/Alias.d.ts +3 -4
  761. package/query-builder/Alias.js +3 -4
  762. package/query-builder/Alias.js.map +1 -1
  763. package/query-builder/Brackets.js +0 -1
  764. package/query-builder/Brackets.js.map +1 -1
  765. package/query-builder/DeleteQueryBuilder.js +2 -2
  766. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  767. package/query-builder/InsertQueryBuilder.d.ts +6 -0
  768. package/query-builder/InsertQueryBuilder.js +62 -14
  769. package/query-builder/InsertQueryBuilder.js.map +1 -1
  770. package/query-builder/JoinAttribute.d.ts +10 -10
  771. package/query-builder/JoinAttribute.js +10 -11
  772. package/query-builder/JoinAttribute.js.map +1 -1
  773. package/query-builder/QueryBuilder.d.ts +8 -1
  774. package/query-builder/QueryBuilder.js +167 -33
  775. package/query-builder/QueryBuilder.js.map +1 -1
  776. package/query-builder/QueryBuilderUtils.js +0 -1
  777. package/query-builder/QueryBuilderUtils.js.map +1 -1
  778. package/query-builder/QueryExpressionMap.d.ts +6 -2
  779. package/query-builder/QueryExpressionMap.js +3 -3
  780. package/query-builder/QueryExpressionMap.js.map +1 -1
  781. package/query-builder/RelationIdLoader.js +0 -1
  782. package/query-builder/RelationIdLoader.js.map +1 -1
  783. package/query-builder/RelationLoader.js +1 -2
  784. package/query-builder/RelationLoader.js.map +1 -1
  785. package/query-builder/RelationQueryBuilder.js +0 -1
  786. package/query-builder/RelationQueryBuilder.js.map +1 -1
  787. package/query-builder/RelationRemover.js +0 -1
  788. package/query-builder/RelationRemover.js.map +1 -1
  789. package/query-builder/RelationUpdater.js +0 -1
  790. package/query-builder/RelationUpdater.js.map +1 -1
  791. package/query-builder/ReturningResultsEntityUpdator.js +0 -1
  792. package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  793. package/query-builder/SelectQueryBuilder.d.ts +5 -0
  794. package/query-builder/SelectQueryBuilder.js +98 -57
  795. package/query-builder/SelectQueryBuilder.js.map +1 -1
  796. package/query-builder/SoftDeleteQueryBuilder.js +0 -1
  797. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  798. package/query-builder/UpdateQueryBuilder.js +2 -2
  799. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  800. package/query-builder/relation-count/RelationCountAttribute.d.ts +7 -7
  801. package/query-builder/relation-count/RelationCountAttribute.js +7 -8
  802. package/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  803. package/query-builder/relation-count/RelationCountLoader.js +0 -1
  804. package/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  805. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +0 -1
  806. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  807. package/query-builder/relation-id/RelationIdAttribute.d.ts +8 -8
  808. package/query-builder/relation-id/RelationIdAttribute.js +8 -9
  809. package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  810. package/query-builder/relation-id/RelationIdLoader.js +0 -1
  811. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  812. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +0 -1
  813. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  814. package/query-builder/result/DeleteResult.js +0 -1
  815. package/query-builder/result/DeleteResult.js.map +1 -1
  816. package/query-builder/result/InsertResult.js +0 -1
  817. package/query-builder/result/InsertResult.js.map +1 -1
  818. package/query-builder/result/UpdateResult.js +0 -1
  819. package/query-builder/result/UpdateResult.js.map +1 -1
  820. package/query-builder/transformer/DocumentToEntityTransformer.js +0 -1
  821. package/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  822. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +3 -4
  823. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  824. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js +0 -1
  825. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  826. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +6 -4
  827. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  828. package/query-runner/BaseQueryRunner.js +0 -1
  829. package/query-runner/BaseQueryRunner.js.map +1 -1
  830. package/query-runner/QueryRunner.d.ts +1 -1
  831. package/query-runner/QueryRunner.js.map +1 -1
  832. package/repository/AbstractRepository.d.ts +2 -2
  833. package/repository/AbstractRepository.js +2 -3
  834. package/repository/AbstractRepository.js.map +1 -1
  835. package/repository/BaseEntity.d.ts +1 -1
  836. package/repository/BaseEntity.js +1 -2
  837. package/repository/BaseEntity.js.map +1 -1
  838. package/repository/MongoRepository.js +0 -1
  839. package/repository/MongoRepository.js.map +1 -1
  840. package/repository/Repository.d.ts +4 -4
  841. package/repository/Repository.js +1 -2
  842. package/repository/Repository.js.map +1 -1
  843. package/repository/RepositoryFactory.js +0 -1
  844. package/repository/RepositoryFactory.js.map +1 -1
  845. package/repository/TreeRepository.js +2 -3
  846. package/repository/TreeRepository.js.map +1 -1
  847. package/schema-builder/MongoSchemaBuilder.js +0 -1
  848. package/schema-builder/MongoSchemaBuilder.js.map +1 -1
  849. package/schema-builder/RdbmsSchemaBuilder.d.ts +2 -2
  850. package/schema-builder/RdbmsSchemaBuilder.js +4 -4
  851. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  852. package/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  853. package/schema-builder/table/Table.d.ts +1 -1
  854. package/schema-builder/table/Table.js +1 -2
  855. package/schema-builder/table/Table.js.map +1 -1
  856. package/schema-builder/table/TableCheck.js +0 -1
  857. package/schema-builder/table/TableCheck.js.map +1 -1
  858. package/schema-builder/table/TableColumn.js +0 -1
  859. package/schema-builder/table/TableColumn.js.map +1 -1
  860. package/schema-builder/table/TableExclusion.js +0 -1
  861. package/schema-builder/table/TableExclusion.js.map +1 -1
  862. package/schema-builder/table/TableForeignKey.js +0 -1
  863. package/schema-builder/table/TableForeignKey.js.map +1 -1
  864. package/schema-builder/table/TableIndex.js +0 -1
  865. package/schema-builder/table/TableIndex.js.map +1 -1
  866. package/schema-builder/table/TableUnique.js +0 -1
  867. package/schema-builder/table/TableUnique.js.map +1 -1
  868. package/schema-builder/util/TableUtils.js +0 -1
  869. package/schema-builder/util/TableUtils.js.map +1 -1
  870. package/schema-builder/view/View.js +0 -1
  871. package/schema-builder/view/View.js.map +1 -1
  872. package/subscriber/Broadcaster.d.ts +24 -0
  873. package/subscriber/Broadcaster.js +120 -1
  874. package/subscriber/Broadcaster.js.map +1 -1
  875. package/subscriber/BroadcasterResult.js +0 -1
  876. package/subscriber/BroadcasterResult.js.map +1 -1
  877. package/subscriber/EntitySubscriberInterface.d.ts +27 -0
  878. package/subscriber/EntitySubscriberInterface.js.map +1 -1
  879. package/subscriber/event/TransactionCommitEvent.d.ts +22 -0
  880. package/subscriber/event/TransactionCommitEvent.js +4 -0
  881. package/subscriber/event/TransactionCommitEvent.js.map +1 -0
  882. package/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
  883. package/subscriber/event/TransactionRollbackEvent.js +4 -0
  884. package/subscriber/event/TransactionRollbackEvent.js.map +1 -0
  885. package/subscriber/event/TransactionStartEvent.d.ts +22 -0
  886. package/subscriber/event/TransactionStartEvent.js +4 -0
  887. package/subscriber/event/TransactionStartEvent.js.map +1 -0
  888. package/typeorm-model-shim.js +145 -128
  889. package/util/ApplyValueTransformers.js +0 -1
  890. package/util/ApplyValueTransformers.js.map +1 -1
  891. package/util/DateUtils.d.ts +1 -1
  892. package/util/DateUtils.js +1 -8
  893. package/util/DateUtils.js.map +1 -1
  894. package/util/DepGraph.js +0 -1
  895. package/util/DepGraph.js.map +1 -1
  896. package/util/DirectoryExportedClassesLoader.js +0 -1
  897. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  898. package/util/ObjectUtils.js +0 -1
  899. package/util/ObjectUtils.js.map +1 -1
  900. package/util/OrmUtils.js +0 -1
  901. package/util/OrmUtils.js.map +1 -1
  902. package/util/RandomGenerator.js +0 -1
  903. package/util/RandomGenerator.js.map +1 -1
  904. package/util/StringUtils.js +0 -1
  905. package/util/StringUtils.js.map +1 -1
  906. package/util/VersionUtils.js +0 -1
  907. package/util/VersionUtils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/driver/cockroachdb/CockroachDriver.ts"],"names":[],"mappings":"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","file":"CockroachDriver.js","sourcesContent":["import {Driver} from \"../Driver\";\nimport {ConnectionIsNotSetError} from \"../../error/ConnectionIsNotSetError\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {DriverPackageNotInstalledError} from \"../../error/DriverPackageNotInstalledError\";\nimport {DriverUtils} from \"../DriverUtils\";\nimport {ColumnMetadata} from \"../../metadata/ColumnMetadata\";\nimport {CockroachConnectionCredentialsOptions} from \"./CockroachConnectionCredentialsOptions\";\nimport {CockroachConnectionOptions} from \"./CockroachConnectionOptions\";\nimport {DateUtils} from \"../../util/DateUtils\";\nimport {PlatformTools} from \"../../platform/PlatformTools\";\nimport {Connection} from \"../../connection/Connection\";\nimport {RdbmsSchemaBuilder} from \"../../schema-builder/RdbmsSchemaBuilder\";\nimport {MappedColumnTypes} from \"../types/MappedColumnTypes\";\nimport {ColumnType} from \"../types/ColumnTypes\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\nimport {DataTypeDefaults} from \"../types/DataTypeDefaults\";\nimport {TableColumn} from \"../../schema-builder/table/TableColumn\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {OrmUtils} from \"../../util/OrmUtils\";\nimport {CockroachQueryRunner} from \"./CockroachQueryRunner\";\nimport {ApplyValueTransformers} from \"../../util/ApplyValueTransformers\";\nimport {ReplicationMode} from \"../types/ReplicationMode\";\n\n/**\n * Organizes communication with Cockroach DBMS.\n */\nexport class CockroachDriver implements Driver {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection used by driver.\n */\n connection: Connection;\n\n /**\n * Cockroach underlying library.\n */\n postgres: any;\n\n /**\n * Pool for master database.\n */\n master: any;\n\n /**\n * Pool for slave databases.\n * Used in replication.\n */\n slaves: any[] = [];\n\n /**\n * We store all created query runners because we need to release them.\n */\n connectedQueryRunners: QueryRunner[] = [];\n\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection options.\n */\n options: CockroachConnectionOptions;\n\n /**\n * Master database used to perform all write queries.\n */\n database?: string;\n\n /**\n * Indicates if replication is enabled.\n */\n isReplicated: boolean = false;\n\n /**\n * Indicates if tree tables are supported by this driver.\n */\n treeSupport = true;\n\n /**\n * Gets list of supported column data types by a driver.\n *\n * @see https://www.cockroachlabs.com/docs/stable/data-types.html\n */\n supportedDataTypes: ColumnType[] = [\n \"array\",\n \"bool\",\n \"boolean\",\n \"bytes\",\n \"bytea\",\n \"blob\",\n \"date\",\n \"numeric\",\n \"decimal\",\n \"dec\",\n \"float\",\n \"float4\",\n \"float8\",\n \"double precision\",\n \"real\",\n \"inet\",\n \"int\",\n \"int4\",\n \"integer\",\n \"int2\",\n \"int8\",\n \"int64\",\n \"smallint\",\n \"bigint\",\n \"interval\",\n \"string\",\n \"character varying\",\n \"character\",\n \"char\",\n \"char varying\",\n \"varchar\",\n \"text\",\n \"time\",\n \"time without time zone\",\n \"timestamp\",\n \"timestamptz\",\n \"timestamp without time zone\",\n \"timestamp with time zone\",\n \"json\",\n \"jsonb\",\n \"uuid\",\n ];\n\n /**\n * Gets list of spatial column data types.\n */\n spatialTypes: ColumnType[] = [];\n\n /**\n * Gets list of column data types that support length by a driver.\n */\n withLengthColumnTypes: ColumnType[] = [\n \"character varying\",\n \"char varying\",\n \"varchar\",\n \"character\",\n \"char\",\n \"string\",\n ];\n\n /**\n * Gets list of column data types that support precision by a driver.\n */\n withPrecisionColumnTypes: ColumnType[] = [\n \"numeric\",\n \"decimal\",\n \"dec\",\n ];\n\n /**\n * Gets list of column data types that support scale by a driver.\n */\n withScaleColumnTypes: ColumnType[] = [\n \"numeric\",\n \"decimal\",\n \"dec\"\n ];\n\n /**\n * Orm has special columns and we need to know what database column types should be for those types.\n * Column types are driver dependant.\n */\n mappedDataTypes: MappedColumnTypes = {\n createDate: \"timestamptz\",\n createDateDefault: \"now()\",\n updateDate: \"timestamptz\",\n updateDateDefault: \"now()\",\n deleteDate: \"timestamptz\",\n deleteDateNullable: true,\n version: Number,\n treeLevel: Number,\n migrationId: Number,\n migrationName: \"varchar\",\n migrationTimestamp: \"int8\",\n cacheId: Number,\n cacheIdentifier: \"varchar\",\n cacheTime: \"int8\",\n cacheDuration: Number,\n cacheQuery: \"string\",\n cacheResult: \"string\",\n metadataType: \"varchar\",\n metadataDatabase: \"varchar\",\n metadataSchema: \"varchar\",\n metadataTable: \"varchar\",\n metadataName: \"varchar\",\n metadataValue: \"string\",\n };\n\n /**\n * Default values of length, precision and scale depends on column data type.\n * Used in the cases when length/precision/scale is not specified by user.\n */\n dataTypeDefaults: DataTypeDefaults = {\n \"char\": { length: 1 },\n };\n\n /**\n * No documentation specifying a maximum length for identifiers could be found\n * for CockroarchDb.\n */\n maxAliasLength?: number;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: Connection) {\n this.connection = connection;\n this.options = connection.options as CockroachConnectionOptions;\n this.isReplicated = this.options.replication ? true : false;\n\n // load postgres package\n this.loadDependencies();\n\n // ObjectUtils.assign(this.options, DriverUtils.buildDriverOptions(connection.options)); // todo: do it better way\n // validate options to make sure everything is set\n // todo: revisit validation with replication in mind\n // if (!this.options.host)\n // throw new DriverOptionNotSetError(\"host\");\n // if (!this.options.username)\n // throw new DriverOptionNotSetError(\"username\");\n // if (!this.options.database)\n // throw new DriverOptionNotSetError(\"database\");\n }\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs connection to the database.\n * Based on pooling options, it can either create connection immediately,\n * either create a pool and create connection when needed.\n */\n async connect(): Promise<void> {\n\n if (this.options.replication) {\n this.slaves = await Promise.all(this.options.replication.slaves.map(slave => {\n return this.createPool(this.options, slave);\n }));\n this.master = await this.createPool(this.options, this.options.replication.master);\n this.database = this.options.replication.master.database;\n\n } else {\n this.master = await this.createPool(this.options, this.options);\n this.database = this.options.database;\n }\n }\n\n /**\n * Makes any action after connection (e.g. create extensions in Postgres driver).\n */\n async afterConnect(): Promise<void> {\n return Promise.resolve();\n }\n\n /**\n * Closes connection with database.\n */\n async disconnect(): Promise<void> {\n if (!this.master)\n return Promise.reject(new ConnectionIsNotSetError(\"cockroachdb\"));\n\n await this.closePool(this.master);\n await Promise.all(this.slaves.map(slave => this.closePool(slave)));\n this.master = undefined;\n this.slaves = [];\n }\n\n /**\n * Creates a schema builder used to build and sync a schema.\n */\n createSchemaBuilder() {\n return new RdbmsSchemaBuilder(this.connection);\n }\n\n /**\n * Creates a query runner used to execute database queries.\n */\n createQueryRunner(mode: ReplicationMode) {\n return new CockroachQueryRunner(this, mode);\n }\n\n /**\n * Prepares given value to a value to be persisted, based on its column type and metadata.\n */\n preparePersistentValue(value: any, columnMetadata: ColumnMetadata): any {\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformTo(columnMetadata.transformer, value);\n\n if (value === null || value === undefined)\n return value;\n\n if (columnMetadata.type === Boolean) {\n return value === true ? 1 : 0;\n\n } else if (columnMetadata.type === \"date\") {\n return DateUtils.mixedDateToDateString(value);\n\n } else if (columnMetadata.type === \"time\") {\n return DateUtils.mixedDateToTimeString(value);\n\n } else if (columnMetadata.type === \"datetime\"\n || columnMetadata.type === Date\n || columnMetadata.type === \"timestamp\"\n || columnMetadata.type === \"timestamptz\"\n || columnMetadata.type === \"timestamp with time zone\"\n || columnMetadata.type === \"timestamp without time zone\") {\n return DateUtils.mixedDateToDate(value);\n\n } else if ([\"json\", \"jsonb\", ...this.spatialTypes].indexOf(columnMetadata.type) >= 0) {\n return JSON.stringify(value);\n\n } else if (columnMetadata.type === \"simple-array\") {\n return DateUtils.simpleArrayToString(value);\n\n } else if (columnMetadata.type === \"simple-json\") {\n return DateUtils.simpleJsonToString(value);\n\n }\n\n return value;\n }\n\n /**\n * Prepares given value to a value to be persisted, based on its column type or metadata.\n */\n prepareHydratedValue(value: any, columnMetadata: ColumnMetadata): any {\n if (value === null || value === undefined)\n return columnMetadata.transformer ? ApplyValueTransformers.transformFrom(columnMetadata.transformer, value) : value;\n\n // unique_rowid() generates bigint value and should not be converted to number\n if (([Number, \"int4\", \"smallint\", \"int2\"].some(v => v === columnMetadata.type)\n && !columnMetadata.isArray) || columnMetadata.generationStrategy === \"increment\") {\n value = parseInt(value);\n\n } else if (columnMetadata.type === Boolean) {\n value = value ? true : false;\n\n } else if (columnMetadata.type === \"datetime\"\n || columnMetadata.type === Date\n || columnMetadata.type === \"timestamp\"\n || columnMetadata.type === \"timestamptz\"\n || columnMetadata.type === \"timestamp with time zone\"\n || columnMetadata.type === \"timestamp without time zone\") {\n value = DateUtils.normalizeHydratedDate(value);\n\n } else if (columnMetadata.type === \"date\") {\n value = DateUtils.mixedDateToDateString(value);\n\n } else if (columnMetadata.type === \"time\") {\n value = DateUtils.mixedTimeToString(value);\n\n } else if (columnMetadata.type === \"simple-array\") {\n value = DateUtils.stringToSimpleArray(value);\n\n } else if (columnMetadata.type === \"simple-json\") {\n value = DateUtils.stringToSimpleJson(value);\n\n }\n\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformFrom(columnMetadata.transformer, value);\n\n return value;\n }\n\n /**\n * Replaces parameters in the given sql with special escaping character\n * and an array of parameter names to be passed to a query.\n */\n escapeQueryWithParameters(sql: string, parameters: ObjectLiteral, nativeParameters: ObjectLiteral): [string, any[]] {\n const builtParameters: any[] = Object.keys(nativeParameters).map(key => nativeParameters[key]);\n if (!parameters || !Object.keys(parameters).length)\n return [sql, builtParameters];\n\n const keys = Object.keys(parameters).map(parameter => \"(:(\\\\.\\\\.\\\\.)?\" + parameter + \"\\\\b)\").join(\"|\");\n sql = sql.replace(new RegExp(keys, \"g\"), (key: string): string => {\n let value: any;\n let isArray = false;\n if (key.substr(0, 4) === \":...\") {\n isArray = true;\n value = parameters[key.substr(4)];\n } else {\n value = parameters[key.substr(1)];\n }\n\n if (isArray) {\n return value.map((v: any) => {\n builtParameters.push(v);\n return \"$\" + builtParameters.length;\n }).join(\", \");\n\n } else if (value instanceof Function) {\n return value();\n\n } else {\n builtParameters.push(value);\n return \"$\" + builtParameters.length;\n }\n }); // todo: make replace only in value statements, otherwise problems\n return [sql, builtParameters];\n }\n\n /**\n * Escapes a column name.\n */\n escape(columnName: string): string {\n return \"\\\"\" + columnName + \"\\\"\";\n }\n\n /**\n * Build full table name with schema name and table name.\n * E.g. \"mySchema\".\"myTable\"\n */\n buildTableName(tableName: string, schema?: string): string {\n return schema ? `${schema}.${tableName}` : tableName;\n }\n\n /**\n * Creates a database type from a given column metadata.\n */\n normalizeType(column: { type?: ColumnType, length?: number | string, precision?: number|null, scale?: number, isArray?: boolean, isGenerated?: boolean, generationStrategy?: \"increment\"|\"uuid\"|\"rowid\" }): string {\n if (column.type === Number || column.type === \"integer\" || column.type === \"int\" || column.type === \"bigint\" || column.type === \"int64\") {\n return \"int8\";\n\n } else if (column.type === String || column.type === \"character varying\" || column.type === \"char varying\") {\n return \"varchar\";\n\n } else if (column.type === Date || column.type === \"timestamp without time zone\") {\n return \"timestamp\";\n\n } else if (column.type === \"timestamp with time zone\") {\n return \"timestamptz\";\n\n } else if (column.type === \"time without time zone\") {\n return \"time\";\n\n } else if (column.type === Boolean || column.type === \"boolean\") {\n return \"bool\";\n\n } else if (column.type === \"simple-array\" || column.type === \"simple-json\" || column.type === \"text\") {\n return \"string\";\n\n } else if (column.type === \"bytea\" || column.type === \"blob\") {\n return \"bytes\";\n\n } else if (column.type === \"smallint\") {\n return \"int2\";\n\n } else if (column.type === \"numeric\" || column.type === \"dec\") {\n return \"decimal\";\n\n } else if (column.type === \"double precision\" || column.type === \"float\") {\n return \"float8\";\n\n } else if (column.type === \"real\") {\n return \"float4\";\n\n } else if (column.type === \"character\") {\n return \"char\";\n\n } else if (column.type === \"json\") {\n return \"jsonb\";\n\n } else {\n return column.type as string || \"\";\n }\n }\n\n /**\n * Normalizes \"default\" value of the column.\n */\n normalizeDefault(columnMetadata: ColumnMetadata): string {\n const defaultValue = columnMetadata.default;\n const arrayCast = columnMetadata.isArray ? `::${columnMetadata.type}[]` : \"\";\n\n if (typeof defaultValue === \"number\") {\n return \"\" + defaultValue;\n\n } else if (typeof defaultValue === \"boolean\") {\n return defaultValue === true ? \"true\" : \"false\";\n\n } else if (typeof defaultValue === \"function\") {\n return defaultValue();\n\n } else if (typeof defaultValue === \"string\") {\n return `'${defaultValue}'${arrayCast}`;\n\n } else if (defaultValue === null) {\n return `null`;\n\n } else if (typeof defaultValue === \"object\") {\n return `'${JSON.stringify(defaultValue)}'`;\n\n } else {\n return defaultValue;\n }\n }\n\n /**\n * Normalizes \"isUnique\" value of the column.\n */\n normalizeIsUnique(column: ColumnMetadata): boolean {\n return column.entityMetadata.uniques.some(uq => uq.columns.length === 1 && uq.columns[0] === column);\n }\n\n /**\n * Returns default column lengths, which is required on column creation.\n */\n getColumnLength(column: ColumnMetadata): string {\n return column.length ? column.length.toString() : \"\";\n }\n\n /**\n * Creates column type definition including length, precision and scale\n */\n createFullType(column: TableColumn): string {\n let type = column.type;\n\n if (column.length) {\n type += \"(\" + column.length + \")\";\n } else if (column.precision !== null && column.precision !== undefined && column.scale !== null && column.scale !== undefined) {\n type += \"(\" + column.precision + \",\" + column.scale + \")\";\n } else if (column.precision !== null && column.precision !== undefined) {\n type += \"(\" + column.precision + \")\";\n }\n\n if (column.isArray)\n type += \" array\";\n\n return type;\n }\n\n /**\n * Obtains a new database connection to a master server.\n * Used for replication.\n * If replication is not setup then returns default connection's database connection.\n */\n obtainMasterConnection(): Promise<any> {\n return new Promise((ok, fail) => {\n this.master.connect((err: any, connection: any, release: any) => {\n err ? fail(err) : ok([connection, release]);\n });\n });\n }\n\n /**\n * Obtains a new database connection to a slave server.\n * Used for replication.\n * If replication is not setup then returns master (default) connection's database connection.\n */\n obtainSlaveConnection(): Promise<any> {\n if (!this.slaves.length)\n return this.obtainMasterConnection();\n\n return new Promise((ok, fail) => {\n const random = Math.floor(Math.random() * this.slaves.length);\n this.slaves[random].connect((err: any, connection: any, release: any) => {\n err ? fail(err) : ok([connection, release]);\n });\n });\n }\n\n /**\n * Creates generated map of values generated or returned by database after INSERT query.\n *\n * todo: slow. optimize Object.keys(), OrmUtils.mergeDeep and column.createValueMap parts\n */\n createGeneratedMap(metadata: EntityMetadata, insertResult: ObjectLiteral) {\n if (!insertResult)\n return undefined;\n\n return Object.keys(insertResult).reduce((map, key) => {\n const column = metadata.findColumnWithDatabaseName(key);\n if (column) {\n OrmUtils.mergeDeep(map, column.createValueMap(this.prepareHydratedValue(insertResult[key], column)));\n }\n return map;\n }, {} as ObjectLiteral);\n }\n\n /**\n * Differentiate columns of this table and columns from the given column metadatas columns\n * and returns only changed.\n */\n findChangedColumns(tableColumns: TableColumn[], columnMetadatas: ColumnMetadata[]): ColumnMetadata[] {\n return columnMetadatas.filter(columnMetadata => {\n const tableColumn = tableColumns.find(c => c.name === columnMetadata.databaseName);\n if (!tableColumn)\n return false; // we don't need new columns, we only need exist and changed\n\n // console.log(\"table:\", columnMetadata.entityMetadata.tableName);\n // console.log(\"name:\", tableColumn.name, columnMetadata.databaseName);\n // console.log(\"type:\", tableColumn.type, this.normalizeType(columnMetadata));\n // console.log(\"length:\", tableColumn.length, columnMetadata.length);\n // console.log(\"width:\", tableColumn.width, columnMetadata.width);\n // console.log(\"precision:\", tableColumn.precision, columnMetadata.precision);\n // console.log(\"scale:\", tableColumn.scale, columnMetadata.scale);\n // console.log(\"comment:\", tableColumn.comment, columnMetadata.comment);\n // console.log(\"default:\", tableColumn.default, columnMetadata.default);\n // console.log(\"default changed:\", !this.compareDefaultValues(this.normalizeDefault(columnMetadata), tableColumn.default));\n // console.log(\"isPrimary:\", tableColumn.isPrimary, columnMetadata.isPrimary);\n // console.log(\"isNullable:\", tableColumn.isNullable, columnMetadata.isNullable);\n // console.log(\"isUnique:\", tableColumn.isUnique, this.normalizeIsUnique(columnMetadata));\n // console.log(\"isGenerated:\", tableColumn.isGenerated, columnMetadata.isGenerated);\n // console.log(\"==========================================\");\n\n return tableColumn.name !== columnMetadata.databaseName\n || tableColumn.type !== this.normalizeType(columnMetadata)\n || tableColumn.length !== columnMetadata.length\n || tableColumn.precision !== columnMetadata.precision\n || tableColumn.scale !== columnMetadata.scale\n // || tableColumn.comment !== columnMetadata.comment // todo\n || (!tableColumn.isGenerated && this.lowerDefaultValueIfNecessary(this.normalizeDefault(columnMetadata)) !== tableColumn.default) // we included check for generated here, because generated columns already can have default values\n || tableColumn.isPrimary !== columnMetadata.isPrimary\n || tableColumn.isNullable !== columnMetadata.isNullable\n || tableColumn.isUnique !== this.normalizeIsUnique(columnMetadata)\n || tableColumn.isGenerated !== columnMetadata.isGenerated;\n });\n }\n\n private lowerDefaultValueIfNecessary(value: string | undefined) {\n if (!value) {\n return value;\n }\n return value.split(`'`).map((v, i) => {\n return i % 2 === 1 ? v : v.toLowerCase();\n }).join(`'`);\n }\n /**\n * Returns true if driver supports RETURNING / OUTPUT statement.\n */\n isReturningSqlSupported(): boolean {\n return true;\n }\n\n /**\n * Returns true if driver supports uuid values generation on its own.\n */\n isUUIDGenerationSupported(): boolean {\n return true;\n }\n\n /**\n * Returns true if driver supports fulltext indices.\n */\n isFullTextColumnTypeSupported(): boolean {\n return false;\n }\n\n /**\n * Creates an escaped parameter.\n */\n createParameter(parameterName: string, index: number): string {\n return \"$\" + (index + 1);\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Loads postgres query stream package.\n */\n loadStreamDependency() {\n try {\n return PlatformTools.load(\"pg-query-stream\");\n\n } catch (e) { // todo: better error for browser env\n throw new Error(`To use streams you should install pg-query-stream package. Please run npm i pg-query-stream --save command.`);\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n protected loadDependencies(): void {\n try {\n this.postgres = PlatformTools.load(\"pg\");\n try {\n const pgNative = PlatformTools.load(\"pg-native\");\n if (pgNative && this.postgres.native) this.postgres = this.postgres.native;\n\n } catch (e) { }\n\n } catch (e) { // todo: better error for browser env\n throw new DriverPackageNotInstalledError(\"Postgres\", \"pg\");\n }\n }\n\n /**\n * Creates a new connection pool for a given database credentials.\n */\n protected async createPool(options: CockroachConnectionOptions, credentials: CockroachConnectionCredentialsOptions): Promise<any> {\n\n credentials = Object.assign({}, credentials, DriverUtils.buildDriverOptions(credentials)); // todo: do it better way\n\n // build connection options for the driver\n const connectionOptions = Object.assign({}, {\n host: credentials.host,\n user: credentials.username,\n password: credentials.password,\n database: credentials.database,\n port: credentials.port,\n ssl: credentials.ssl\n }, options.extra || {});\n\n // create a connection pool\n const pool = new this.postgres.Pool(connectionOptions);\n const { logger } = this.connection;\n\n const poolErrorHandler = options.poolErrorHandler || ((error: any) => logger.log(\"warn\", `Postgres pool raised an error. ${error}`));\n\n /*\n Attaching an error handler to pool errors is essential, as, otherwise, errors raised will go unhandled and\n cause the hosting app to crash.\n */\n pool.on(\"error\", poolErrorHandler);\n\n return new Promise((ok, fail) => {\n pool.connect((err: any, connection: any, release: Function) => {\n if (err) return fail(err);\n release();\n ok(pool);\n });\n });\n }\n\n /**\n * Closes connection pool.\n */\n protected async closePool(pool: any): Promise<void> {\n await Promise.all(this.connectedQueryRunners.map(queryRunner => queryRunner.release()));\n return new Promise<void>((ok, fail) => {\n pool.end((err: any) => err ? fail(err) : ok());\n });\n }\n\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/driver/cockroachdb/CockroachDriver.ts"],"names":[],"mappings":"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","file":"CockroachDriver.js","sourcesContent":["import {Driver} from \"../Driver\";\nimport {ConnectionIsNotSetError} from \"../../error/ConnectionIsNotSetError\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {DriverPackageNotInstalledError} from \"../../error/DriverPackageNotInstalledError\";\nimport {DriverUtils} from \"../DriverUtils\";\nimport {ColumnMetadata} from \"../../metadata/ColumnMetadata\";\nimport {CockroachConnectionCredentialsOptions} from \"./CockroachConnectionCredentialsOptions\";\nimport {CockroachConnectionOptions} from \"./CockroachConnectionOptions\";\nimport {DateUtils} from \"../../util/DateUtils\";\nimport {PlatformTools} from \"../../platform/PlatformTools\";\nimport {Connection} from \"../../connection/Connection\";\nimport {RdbmsSchemaBuilder} from \"../../schema-builder/RdbmsSchemaBuilder\";\nimport {MappedColumnTypes} from \"../types/MappedColumnTypes\";\nimport {ColumnType} from \"../types/ColumnTypes\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\nimport {DataTypeDefaults} from \"../types/DataTypeDefaults\";\nimport {TableColumn} from \"../../schema-builder/table/TableColumn\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {OrmUtils} from \"../../util/OrmUtils\";\nimport {CockroachQueryRunner} from \"./CockroachQueryRunner\";\nimport {ApplyValueTransformers} from \"../../util/ApplyValueTransformers\";\nimport {ReplicationMode} from \"../types/ReplicationMode\";\n\n/**\n * Organizes communication with Cockroach DBMS.\n */\nexport class CockroachDriver implements Driver {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection used by driver.\n */\n connection: Connection;\n\n /**\n * Cockroach underlying library.\n */\n postgres: any;\n\n /**\n * Pool for master database.\n */\n master: any;\n\n /**\n * Pool for slave databases.\n * Used in replication.\n */\n slaves: any[] = [];\n\n /**\n * We store all created query runners because we need to release them.\n */\n connectedQueryRunners: QueryRunner[] = [];\n\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection options.\n */\n options: CockroachConnectionOptions;\n\n /**\n * Master database used to perform all write queries.\n */\n database?: string;\n\n /**\n * Indicates if replication is enabled.\n */\n isReplicated: boolean = false;\n\n /**\n * Indicates if tree tables are supported by this driver.\n */\n treeSupport = true;\n\n /**\n * Gets list of supported column data types by a driver.\n *\n * @see https://www.cockroachlabs.com/docs/stable/data-types.html\n */\n supportedDataTypes: ColumnType[] = [\n \"array\",\n \"bool\",\n \"boolean\",\n \"bytes\",\n \"bytea\",\n \"blob\",\n \"date\",\n \"numeric\",\n \"decimal\",\n \"dec\",\n \"float\",\n \"float4\",\n \"float8\",\n \"double precision\",\n \"real\",\n \"inet\",\n \"int\",\n \"int4\",\n \"integer\",\n \"int2\",\n \"int8\",\n \"int64\",\n \"smallint\",\n \"bigint\",\n \"interval\",\n \"string\",\n \"character varying\",\n \"character\",\n \"char\",\n \"char varying\",\n \"varchar\",\n \"text\",\n \"time\",\n \"time without time zone\",\n \"timestamp\",\n \"timestamptz\",\n \"timestamp without time zone\",\n \"timestamp with time zone\",\n \"json\",\n \"jsonb\",\n \"uuid\",\n ];\n\n /**\n * Gets list of spatial column data types.\n */\n spatialTypes: ColumnType[] = [];\n\n /**\n * Gets list of column data types that support length by a driver.\n */\n withLengthColumnTypes: ColumnType[] = [\n \"character varying\",\n \"char varying\",\n \"varchar\",\n \"character\",\n \"char\",\n \"string\",\n ];\n\n /**\n * Gets list of column data types that support precision by a driver.\n */\n withPrecisionColumnTypes: ColumnType[] = [\n \"numeric\",\n \"decimal\",\n \"dec\",\n ];\n\n /**\n * Gets list of column data types that support scale by a driver.\n */\n withScaleColumnTypes: ColumnType[] = [\n \"numeric\",\n \"decimal\",\n \"dec\"\n ];\n\n /**\n * Orm has special columns and we need to know what database column types should be for those types.\n * Column types are driver dependant.\n */\n mappedDataTypes: MappedColumnTypes = {\n createDate: \"timestamptz\",\n createDateDefault: \"now()\",\n updateDate: \"timestamptz\",\n updateDateDefault: \"now()\",\n deleteDate: \"timestamptz\",\n deleteDateNullable: true,\n version: Number,\n treeLevel: Number,\n migrationId: Number,\n migrationName: \"varchar\",\n migrationTimestamp: \"int8\",\n cacheId: Number,\n cacheIdentifier: \"varchar\",\n cacheTime: \"int8\",\n cacheDuration: Number,\n cacheQuery: \"string\",\n cacheResult: \"string\",\n metadataType: \"varchar\",\n metadataDatabase: \"varchar\",\n metadataSchema: \"varchar\",\n metadataTable: \"varchar\",\n metadataName: \"varchar\",\n metadataValue: \"string\",\n };\n\n /**\n * Default values of length, precision and scale depends on column data type.\n * Used in the cases when length/precision/scale is not specified by user.\n */\n dataTypeDefaults: DataTypeDefaults = {\n \"char\": { length: 1 },\n };\n\n /**\n * No documentation specifying a maximum length for identifiers could be found\n * for CockroarchDb.\n */\n maxAliasLength?: number;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: Connection) {\n this.connection = connection;\n this.options = connection.options as CockroachConnectionOptions;\n this.isReplicated = this.options.replication ? true : false;\n\n // load postgres package\n this.loadDependencies();\n\n // ObjectUtils.assign(this.options, DriverUtils.buildDriverOptions(connection.options)); // todo: do it better way\n // validate options to make sure everything is set\n // todo: revisit validation with replication in mind\n // if (!this.options.host)\n // throw new DriverOptionNotSetError(\"host\");\n // if (!this.options.username)\n // throw new DriverOptionNotSetError(\"username\");\n // if (!this.options.database)\n // throw new DriverOptionNotSetError(\"database\");\n }\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs connection to the database.\n * Based on pooling options, it can either create connection immediately,\n * either create a pool and create connection when needed.\n */\n async connect(): Promise<void> {\n\n if (this.options.replication) {\n this.slaves = await Promise.all(this.options.replication.slaves.map(slave => {\n return this.createPool(this.options, slave);\n }));\n this.master = await this.createPool(this.options, this.options.replication.master);\n this.database = this.options.replication.master.database;\n\n } else {\n this.master = await this.createPool(this.options, this.options);\n this.database = this.options.database;\n }\n }\n\n /**\n * Makes any action after connection (e.g. create extensions in Postgres driver).\n */\n async afterConnect(): Promise<void> {\n return Promise.resolve();\n }\n\n /**\n * Closes connection with database.\n */\n async disconnect(): Promise<void> {\n if (!this.master)\n return Promise.reject(new ConnectionIsNotSetError(\"cockroachdb\"));\n\n await this.closePool(this.master);\n await Promise.all(this.slaves.map(slave => this.closePool(slave)));\n this.master = undefined;\n this.slaves = [];\n }\n\n /**\n * Creates a schema builder used to build and sync a schema.\n */\n createSchemaBuilder() {\n return new RdbmsSchemaBuilder(this.connection);\n }\n\n /**\n * Creates a query runner used to execute database queries.\n */\n createQueryRunner(mode: ReplicationMode) {\n return new CockroachQueryRunner(this, mode);\n }\n\n /**\n * Prepares given value to a value to be persisted, based on its column type and metadata.\n */\n preparePersistentValue(value: any, columnMetadata: ColumnMetadata): any {\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformTo(columnMetadata.transformer, value);\n\n if (value === null || value === undefined)\n return value;\n\n if (columnMetadata.type === Boolean) {\n return value === true ? 1 : 0;\n\n } else if (columnMetadata.type === \"date\") {\n return DateUtils.mixedDateToDateString(value);\n\n } else if (columnMetadata.type === \"time\") {\n return DateUtils.mixedDateToTimeString(value);\n\n } else if (columnMetadata.type === \"datetime\"\n || columnMetadata.type === Date\n || columnMetadata.type === \"timestamp\"\n || columnMetadata.type === \"timestamptz\"\n || columnMetadata.type === \"timestamp with time zone\"\n || columnMetadata.type === \"timestamp without time zone\") {\n return DateUtils.mixedDateToDate(value);\n\n } else if ([\"json\", \"jsonb\", ...this.spatialTypes].indexOf(columnMetadata.type) >= 0) {\n return JSON.stringify(value);\n\n } else if (columnMetadata.type === \"simple-array\") {\n return DateUtils.simpleArrayToString(value);\n\n } else if (columnMetadata.type === \"simple-json\") {\n return DateUtils.simpleJsonToString(value);\n\n }\n\n return value;\n }\n\n /**\n * Prepares given value to a value to be persisted, based on its column type or metadata.\n */\n prepareHydratedValue(value: any, columnMetadata: ColumnMetadata): any {\n if (value === null || value === undefined)\n return columnMetadata.transformer ? ApplyValueTransformers.transformFrom(columnMetadata.transformer, value) : value;\n\n // unique_rowid() generates bigint value and should not be converted to number\n if (([Number, \"int4\", \"smallint\", \"int2\"].some(v => v === columnMetadata.type)\n && !columnMetadata.isArray) || columnMetadata.generationStrategy === \"increment\") {\n value = parseInt(value);\n\n } else if (columnMetadata.type === Boolean) {\n value = value ? true : false;\n\n } else if (columnMetadata.type === \"datetime\"\n || columnMetadata.type === Date\n || columnMetadata.type === \"timestamp\"\n || columnMetadata.type === \"timestamptz\"\n || columnMetadata.type === \"timestamp with time zone\"\n || columnMetadata.type === \"timestamp without time zone\") {\n value = DateUtils.normalizeHydratedDate(value);\n\n } else if (columnMetadata.type === \"date\") {\n value = DateUtils.mixedDateToDateString(value);\n\n } else if (columnMetadata.type === \"time\") {\n value = DateUtils.mixedTimeToString(value);\n\n } else if (columnMetadata.type === \"simple-array\") {\n value = DateUtils.stringToSimpleArray(value);\n\n } else if (columnMetadata.type === \"simple-json\") {\n value = DateUtils.stringToSimpleJson(value);\n\n }\n\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformFrom(columnMetadata.transformer, value);\n\n return value;\n }\n\n /**\n * Replaces parameters in the given sql with special escaping character\n * and an array of parameter names to be passed to a query.\n */\n escapeQueryWithParameters(sql: string, parameters: ObjectLiteral, nativeParameters: ObjectLiteral): [string, any[]] {\n const builtParameters: any[] = Object.keys(nativeParameters).map(key => nativeParameters[key]);\n if (!parameters || !Object.keys(parameters).length)\n return [sql, builtParameters];\n\n const keys = Object.keys(parameters).map(parameter => \"(:(\\\\.\\\\.\\\\.)?\" + parameter + \"\\\\b)\").join(\"|\");\n sql = sql.replace(new RegExp(keys, \"g\"), (key: string): string => {\n let value: any;\n let isArray = false;\n if (key.substr(0, 4) === \":...\") {\n isArray = true;\n value = parameters[key.substr(4)];\n } else {\n value = parameters[key.substr(1)];\n }\n\n if (isArray) {\n return value.map((v: any) => {\n builtParameters.push(v);\n return \"$\" + builtParameters.length;\n }).join(\", \");\n\n } else if (value instanceof Function) {\n return value();\n\n } else {\n builtParameters.push(value);\n return \"$\" + builtParameters.length;\n }\n }); // todo: make replace only in value statements, otherwise problems\n return [sql, builtParameters];\n }\n\n /**\n * Escapes a column name.\n */\n escape(columnName: string): string {\n return \"\\\"\" + columnName + \"\\\"\";\n }\n\n /**\n * Build full table name with schema name and table name.\n * E.g. \"mySchema\".\"myTable\"\n */\n buildTableName(tableName: string, schema?: string): string {\n return schema ? `${schema}.${tableName}` : tableName;\n }\n\n /**\n * Creates a database type from a given column metadata.\n */\n normalizeType(column: { type?: ColumnType, length?: number | string, precision?: number|null, scale?: number, isArray?: boolean, isGenerated?: boolean, generationStrategy?: \"increment\"|\"uuid\"|\"rowid\" }): string {\n if (column.type === Number || column.type === \"integer\" || column.type === \"int\" || column.type === \"bigint\" || column.type === \"int64\") {\n return \"int8\";\n\n } else if (column.type === String || column.type === \"character varying\" || column.type === \"char varying\") {\n return \"varchar\";\n\n } else if (column.type === Date || column.type === \"timestamp without time zone\") {\n return \"timestamp\";\n\n } else if (column.type === \"timestamp with time zone\") {\n return \"timestamptz\";\n\n } else if (column.type === \"time without time zone\") {\n return \"time\";\n\n } else if (column.type === Boolean || column.type === \"boolean\") {\n return \"bool\";\n\n } else if (column.type === \"simple-array\" || column.type === \"simple-json\" || column.type === \"text\") {\n return \"string\";\n\n } else if (column.type === \"bytea\" || column.type === \"blob\") {\n return \"bytes\";\n\n } else if (column.type === \"smallint\") {\n return \"int2\";\n\n } else if (column.type === \"numeric\" || column.type === \"dec\") {\n return \"decimal\";\n\n } else if (column.type === \"double precision\" || column.type === \"float\") {\n return \"float8\";\n\n } else if (column.type === \"real\") {\n return \"float4\";\n\n } else if (column.type === \"character\") {\n return \"char\";\n\n } else if (column.type === \"json\") {\n return \"jsonb\";\n\n } else {\n return column.type as string || \"\";\n }\n }\n\n /**\n * Normalizes \"default\" value of the column.\n */\n normalizeDefault(columnMetadata: ColumnMetadata): string {\n const defaultValue = columnMetadata.default;\n const arrayCast = columnMetadata.isArray ? `::${columnMetadata.type}[]` : \"\";\n\n if (typeof defaultValue === \"number\") {\n return `(${defaultValue})`;\n\n } else if (typeof defaultValue === \"boolean\") {\n return defaultValue === true ? \"true\" : \"false\";\n\n } else if (typeof defaultValue === \"function\") {\n return defaultValue();\n\n } else if (typeof defaultValue === \"string\") {\n return `'${defaultValue}'${arrayCast}`;\n\n } else if (defaultValue === null) {\n return `null`;\n\n } else if (typeof defaultValue === \"object\") {\n return `'${JSON.stringify(defaultValue)}'`;\n\n } else {\n return defaultValue;\n }\n }\n\n /**\n * Normalizes \"isUnique\" value of the column.\n */\n normalizeIsUnique(column: ColumnMetadata): boolean {\n return column.entityMetadata.uniques.some(uq => uq.columns.length === 1 && uq.columns[0] === column);\n }\n\n /**\n * Returns default column lengths, which is required on column creation.\n */\n getColumnLength(column: ColumnMetadata): string {\n return column.length ? column.length.toString() : \"\";\n }\n\n /**\n * Creates column type definition including length, precision and scale\n */\n createFullType(column: TableColumn): string {\n let type = column.type;\n\n if (column.length) {\n type += \"(\" + column.length + \")\";\n } else if (column.precision !== null && column.precision !== undefined && column.scale !== null && column.scale !== undefined) {\n type += \"(\" + column.precision + \",\" + column.scale + \")\";\n } else if (column.precision !== null && column.precision !== undefined) {\n type += \"(\" + column.precision + \")\";\n }\n\n if (column.isArray)\n type += \" array\";\n\n return type;\n }\n\n /**\n * Obtains a new database connection to a master server.\n * Used for replication.\n * If replication is not setup then returns default connection's database connection.\n */\n obtainMasterConnection(): Promise<any> {\n return new Promise((ok, fail) => {\n this.master.connect((err: any, connection: any, release: any) => {\n err ? fail(err) : ok([connection, release]);\n });\n });\n }\n\n /**\n * Obtains a new database connection to a slave server.\n * Used for replication.\n * If replication is not setup then returns master (default) connection's database connection.\n */\n obtainSlaveConnection(): Promise<any> {\n if (!this.slaves.length)\n return this.obtainMasterConnection();\n\n return new Promise((ok, fail) => {\n const random = Math.floor(Math.random() * this.slaves.length);\n this.slaves[random].connect((err: any, connection: any, release: any) => {\n err ? fail(err) : ok([connection, release]);\n });\n });\n }\n\n /**\n * Creates generated map of values generated or returned by database after INSERT query.\n *\n * todo: slow. optimize Object.keys(), OrmUtils.mergeDeep and column.createValueMap parts\n */\n createGeneratedMap(metadata: EntityMetadata, insertResult: ObjectLiteral) {\n if (!insertResult)\n return undefined;\n\n return Object.keys(insertResult).reduce((map, key) => {\n const column = metadata.findColumnWithDatabaseName(key);\n if (column) {\n OrmUtils.mergeDeep(map, column.createValueMap(this.prepareHydratedValue(insertResult[key], column)));\n }\n return map;\n }, {} as ObjectLiteral);\n }\n\n /**\n * Differentiate columns of this table and columns from the given column metadatas columns\n * and returns only changed.\n */\n findChangedColumns(tableColumns: TableColumn[], columnMetadatas: ColumnMetadata[]): ColumnMetadata[] {\n return columnMetadatas.filter(columnMetadata => {\n const tableColumn = tableColumns.find(c => c.name === columnMetadata.databaseName);\n if (!tableColumn)\n return false; // we don't need new columns, we only need exist and changed\n\n // console.log(\"table:\", columnMetadata.entityMetadata.tableName);\n // console.log(\"name:\", tableColumn.name, columnMetadata.databaseName);\n // console.log(\"type:\", tableColumn.type, this.normalizeType(columnMetadata));\n // console.log(\"length:\", tableColumn.length, columnMetadata.length);\n // console.log(\"width:\", tableColumn.width, columnMetadata.width);\n // console.log(\"precision:\", tableColumn.precision, columnMetadata.precision);\n // console.log(\"scale:\", tableColumn.scale, columnMetadata.scale);\n // console.log(\"comment:\", tableColumn.comment, columnMetadata.comment);\n // console.log(\"default:\", tableColumn.default, columnMetadata.default);\n // console.log(\"default changed:\", !this.compareDefaultValues(this.normalizeDefault(columnMetadata), tableColumn.default));\n // console.log(\"isPrimary:\", tableColumn.isPrimary, columnMetadata.isPrimary);\n // console.log(\"isNullable:\", tableColumn.isNullable, columnMetadata.isNullable);\n // console.log(\"isUnique:\", tableColumn.isUnique, this.normalizeIsUnique(columnMetadata));\n // console.log(\"isGenerated:\", tableColumn.isGenerated, columnMetadata.isGenerated);\n // console.log(\"==========================================\");\n\n return tableColumn.name !== columnMetadata.databaseName\n || tableColumn.type !== this.normalizeType(columnMetadata)\n || tableColumn.length !== columnMetadata.length\n || tableColumn.precision !== columnMetadata.precision\n || (columnMetadata.scale !== undefined && tableColumn.scale !== columnMetadata.scale)\n || (tableColumn.comment || \"\") !== columnMetadata.comment\n || (!tableColumn.isGenerated && this.lowerDefaultValueIfNecessary(this.normalizeDefault(columnMetadata)) !== tableColumn.default) // we included check for generated here, because generated columns already can have default values\n || tableColumn.isPrimary !== columnMetadata.isPrimary\n || tableColumn.isNullable !== columnMetadata.isNullable\n || tableColumn.isUnique !== this.normalizeIsUnique(columnMetadata)\n || tableColumn.isGenerated !== columnMetadata.isGenerated;\n });\n }\n\n private lowerDefaultValueIfNecessary(value: string | undefined) {\n if (!value) {\n return value;\n }\n return value.split(`'`).map((v, i) => {\n return i % 2 === 1 ? v : v.toLowerCase();\n }).join(`'`);\n }\n /**\n * Returns true if driver supports RETURNING / OUTPUT statement.\n */\n isReturningSqlSupported(): boolean {\n return true;\n }\n\n /**\n * Returns true if driver supports uuid values generation on its own.\n */\n isUUIDGenerationSupported(): boolean {\n return true;\n }\n\n /**\n * Returns true if driver supports fulltext indices.\n */\n isFullTextColumnTypeSupported(): boolean {\n return false;\n }\n\n /**\n * Creates an escaped parameter.\n */\n createParameter(parameterName: string, index: number): string {\n return \"$\" + (index + 1);\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Loads postgres query stream package.\n */\n loadStreamDependency() {\n try {\n return PlatformTools.load(\"pg-query-stream\");\n\n } catch (e) { // todo: better error for browser env\n throw new Error(`To use streams you should install pg-query-stream package. Please run npm i pg-query-stream --save command.`);\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n protected loadDependencies(): void {\n try {\n this.postgres = PlatformTools.load(\"pg\");\n try {\n const pgNative = PlatformTools.load(\"pg-native\");\n if (pgNative && this.postgres.native) this.postgres = this.postgres.native;\n\n } catch (e) { }\n\n } catch (e) { // todo: better error for browser env\n throw new DriverPackageNotInstalledError(\"Postgres\", \"pg\");\n }\n }\n\n /**\n * Creates a new connection pool for a given database credentials.\n */\n protected async createPool(options: CockroachConnectionOptions, credentials: CockroachConnectionCredentialsOptions): Promise<any> {\n\n credentials = Object.assign({}, credentials, DriverUtils.buildDriverOptions(credentials)); // todo: do it better way\n\n // build connection options for the driver\n const connectionOptions = Object.assign({}, {\n host: credentials.host,\n user: credentials.username,\n password: credentials.password,\n database: credentials.database,\n port: credentials.port,\n ssl: credentials.ssl\n }, options.extra || {});\n\n // create a connection pool\n const pool = new this.postgres.Pool(connectionOptions);\n const { logger } = this.connection;\n\n const poolErrorHandler = options.poolErrorHandler || ((error: any) => logger.log(\"warn\", `Postgres pool raised an error. ${error}`));\n\n /*\n Attaching an error handler to pool errors is essential, as, otherwise, errors raised will go unhandled and\n cause the hosting app to crash.\n */\n pool.on(\"error\", poolErrorHandler);\n\n return new Promise((ok, fail) => {\n pool.connect((err: any, connection: any, release: Function) => {\n if (err) return fail(err);\n release();\n ok(pool);\n });\n });\n }\n\n /**\n * Closes connection pool.\n */\n protected async closePool(pool: any): Promise<void> {\n await Promise.all(this.connectedQueryRunners.map(queryRunner => queryRunner.release()));\n return new Promise<void>((ok, fail) => {\n pool.end((err: any) => err ? fail(err) : ok());\n });\n }\n\n}\n"],"sourceRoot":"../.."}
@@ -339,6 +339,10 @@ export declare class CockroachQueryRunner extends BaseQueryRunner implements Que
339
339
  * Builds sequence name from given table and column.
340
340
  */
341
341
  protected buildSequenceName(table: Table, columnOrName: TableColumn | string, disableEscape?: true): string;
342
+ /**
343
+ * Escapes a given comment so it's safe to include in a query.
344
+ */
345
+ protected escapeComment(comment?: string): string;
342
346
  /**
343
347
  * Escapes given table or view path.
344
348
  */
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CockroachQueryRunner = void 0;
4
3
  var tslib_1 = require("tslib");
5
4
  var TransactionAlreadyStartedError_1 = require("../../error/TransactionAlreadyStartedError");
6
5
  var TransactionNotStartedError_1 = require("../../error/TransactionNotStartedError");
@@ -18,6 +17,7 @@ var BaseQueryRunner_1 = require("../../query-runner/BaseQueryRunner");
18
17
  var OrmUtils_1 = require("../../util/OrmUtils");
19
18
  var TableCheck_1 = require("../../schema-builder/table/TableCheck");
20
19
  var TableExclusion_1 = require("../../schema-builder/table/TableExclusion");
20
+ var BroadcasterResult_1 = require("../../subscriber/BroadcasterResult");
21
21
  /**
22
22
  * Runs queries on a single postgres database connection.
23
23
  */
@@ -93,26 +93,42 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
93
93
  */
94
94
  CockroachQueryRunner.prototype.startTransaction = function (isolationLevel) {
95
95
  return tslib_1.__awaiter(this, void 0, void 0, function () {
96
+ var beforeBroadcastResult, afterBroadcastResult;
96
97
  return tslib_1.__generator(this, function (_a) {
97
98
  switch (_a.label) {
98
99
  case 0:
99
100
  if (this.isTransactionActive)
100
101
  throw new TransactionAlreadyStartedError_1.TransactionAlreadyStartedError();
102
+ beforeBroadcastResult = new BroadcasterResult_1.BroadcasterResult();
103
+ this.broadcaster.broadcastBeforeTransactionStartEvent(beforeBroadcastResult);
104
+ if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];
105
+ return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];
106
+ case 1:
107
+ _a.sent();
108
+ _a.label = 2;
109
+ case 2:
101
110
  this.isTransactionActive = true;
102
111
  return [4 /*yield*/, this.query("START TRANSACTION")];
103
- case 1:
112
+ case 3:
104
113
  _a.sent();
105
114
  return [4 /*yield*/, this.query("SAVEPOINT cockroach_restart")];
106
- case 2:
115
+ case 4:
107
116
  _a.sent();
108
- if (!isolationLevel) return [3 /*break*/, 4];
117
+ if (!isolationLevel) return [3 /*break*/, 6];
109
118
  return [4 /*yield*/, this.query("SET TRANSACTION ISOLATION LEVEL " + isolationLevel)];
110
- case 3:
119
+ case 5:
111
120
  _a.sent();
112
- _a.label = 4;
113
- case 4:
121
+ _a.label = 6;
122
+ case 6:
114
123
  this.storeQueries = true;
115
- return [2 /*return*/];
124
+ afterBroadcastResult = new BroadcasterResult_1.BroadcasterResult();
125
+ this.broadcaster.broadcastAfterTransactionStartEvent(afterBroadcastResult);
126
+ if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 8];
127
+ return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];
128
+ case 7:
129
+ _a.sent();
130
+ _a.label = 8;
131
+ case 8: return [2 /*return*/];
116
132
  }
117
133
  });
118
134
  });
@@ -123,64 +139,80 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
123
139
  */
124
140
  CockroachQueryRunner.prototype.commitTransaction = function () {
125
141
  return tslib_1.__awaiter(this, void 0, void 0, function () {
126
- var e_1, _a, _b, q, e_2_1;
142
+ var beforeBroadcastResult, e_1, _a, _b, q, e_2_1, afterBroadcastResult;
127
143
  var e_2, _c;
128
144
  return tslib_1.__generator(this, function (_d) {
129
145
  switch (_d.label) {
130
146
  case 0:
131
147
  if (!this.isTransactionActive)
132
148
  throw new TransactionNotStartedError_1.TransactionNotStartedError();
133
- this.storeQueries = false;
134
- _d.label = 1;
149
+ beforeBroadcastResult = new BroadcasterResult_1.BroadcasterResult();
150
+ this.broadcaster.broadcastBeforeTransactionCommitEvent(beforeBroadcastResult);
151
+ if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];
152
+ return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];
135
153
  case 1:
136
- _d.trys.push([1, 4, , 16]);
137
- return [4 /*yield*/, this.query("RELEASE SAVEPOINT cockroach_restart")];
154
+ _d.sent();
155
+ _d.label = 2;
138
156
  case 2:
157
+ this.storeQueries = false;
158
+ _d.label = 3;
159
+ case 3:
160
+ _d.trys.push([3, 6, , 18]);
161
+ return [4 /*yield*/, this.query("RELEASE SAVEPOINT cockroach_restart")];
162
+ case 4:
139
163
  _d.sent();
140
164
  return [4 /*yield*/, this.query("COMMIT")];
141
- case 3:
165
+ case 5:
142
166
  _d.sent();
143
167
  this.queries = [];
144
168
  this.isTransactionActive = false;
145
- return [3 /*break*/, 16];
146
- case 4:
169
+ return [3 /*break*/, 18];
170
+ case 6:
147
171
  e_1 = _d.sent();
148
- if (!(e_1.code === "40001")) return [3 /*break*/, 15];
172
+ if (!(e_1.code === "40001")) return [3 /*break*/, 17];
149
173
  return [4 /*yield*/, this.query("ROLLBACK TO SAVEPOINT cockroach_restart")];
150
- case 5:
174
+ case 7:
151
175
  _d.sent();
152
- _d.label = 6;
153
- case 6:
154
- _d.trys.push([6, 11, 12, 13]);
176
+ _d.label = 8;
177
+ case 8:
178
+ _d.trys.push([8, 13, 14, 15]);
155
179
  _a = tslib_1.__values(this.queries), _b = _a.next();
156
- _d.label = 7;
157
- case 7:
158
- if (!!_b.done) return [3 /*break*/, 10];
180
+ _d.label = 9;
181
+ case 9:
182
+ if (!!_b.done) return [3 /*break*/, 12];
159
183
  q = _b.value;
160
184
  return [4 /*yield*/, this.query(q.query, q.parameters)];
161
- case 8:
185
+ case 10:
162
186
  _d.sent();
163
- _d.label = 9;
164
- case 9:
165
- _b = _a.next();
166
- return [3 /*break*/, 7];
167
- case 10: return [3 /*break*/, 13];
187
+ _d.label = 11;
168
188
  case 11:
189
+ _b = _a.next();
190
+ return [3 /*break*/, 9];
191
+ case 12: return [3 /*break*/, 15];
192
+ case 13:
169
193
  e_2_1 = _d.sent();
170
194
  e_2 = { error: e_2_1 };
171
- return [3 /*break*/, 13];
172
- case 12:
195
+ return [3 /*break*/, 15];
196
+ case 14:
173
197
  try {
174
198
  if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
175
199
  }
176
200
  finally { if (e_2) throw e_2.error; }
177
201
  return [7 /*endfinally*/];
178
- case 13: return [4 /*yield*/, this.commitTransaction()];
179
- case 14:
202
+ case 15: return [4 /*yield*/, this.commitTransaction()];
203
+ case 16:
204
+ _d.sent();
205
+ _d.label = 17;
206
+ case 17: return [3 /*break*/, 18];
207
+ case 18:
208
+ afterBroadcastResult = new BroadcasterResult_1.BroadcasterResult();
209
+ this.broadcaster.broadcastAfterTransactionCommitEvent(afterBroadcastResult);
210
+ if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 20];
211
+ return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];
212
+ case 19:
180
213
  _d.sent();
181
- _d.label = 15;
182
- case 15: return [3 /*break*/, 16];
183
- case 16: return [2 /*return*/];
214
+ _d.label = 20;
215
+ case 20: return [2 /*return*/];
184
216
  }
185
217
  });
186
218
  });
@@ -191,18 +223,34 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
191
223
  */
192
224
  CockroachQueryRunner.prototype.rollbackTransaction = function () {
193
225
  return tslib_1.__awaiter(this, void 0, void 0, function () {
226
+ var beforeBroadcastResult, afterBroadcastResult;
194
227
  return tslib_1.__generator(this, function (_a) {
195
228
  switch (_a.label) {
196
229
  case 0:
197
230
  if (!this.isTransactionActive)
198
231
  throw new TransactionNotStartedError_1.TransactionNotStartedError();
232
+ beforeBroadcastResult = new BroadcasterResult_1.BroadcasterResult();
233
+ this.broadcaster.broadcastBeforeTransactionRollbackEvent(beforeBroadcastResult);
234
+ if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];
235
+ return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];
236
+ case 1:
237
+ _a.sent();
238
+ _a.label = 2;
239
+ case 2:
199
240
  this.storeQueries = false;
200
241
  return [4 /*yield*/, this.query("ROLLBACK")];
201
- case 1:
242
+ case 3:
202
243
  _a.sent();
203
244
  this.queries = [];
204
245
  this.isTransactionActive = false;
205
- return [2 /*return*/];
246
+ afterBroadcastResult = new BroadcasterResult_1.BroadcasterResult();
247
+ this.broadcaster.broadcastAfterTransactionRollbackEvent(afterBroadcastResult);
248
+ if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];
249
+ return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];
250
+ case 4:
251
+ _a.sent();
252
+ _a.label = 5;
253
+ case 5: return [2 /*return*/];
206
254
  }
207
255
  });
208
256
  });
@@ -777,6 +825,11 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
777
825
  upQueries.push(this.createUniqueConstraintSql(table, uniqueConstraint));
778
826
  downQueries.push(this.dropIndexSql(table, uniqueConstraint.name)); // CockroachDB creates indices for unique constraints
779
827
  }
828
+ // create column's comment
829
+ if (column.comment) {
830
+ upQueries.push(new Query_1.Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + column.name + "\" IS " + this.escapeComment(column.comment)));
831
+ downQueries.push(new Query_1.Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + column.name + "\" IS " + this.escapeComment(column.comment)));
832
+ }
780
833
  return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
781
834
  case 4:
782
835
  _b.sent();
@@ -973,8 +1026,8 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
973
1026
  }
974
1027
  }
975
1028
  if (oldColumn.comment !== newColumn.comment) {
976
- upQueries.push(new Query_1.Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + oldColumn.name + "\" IS '" + newColumn.comment + "'"));
977
- downQueries.push(new Query_1.Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + newColumn.name + "\" IS '" + oldColumn.comment + "'"));
1029
+ upQueries.push(new Query_1.Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + oldColumn.name + "\" IS " + this.escapeComment(newColumn.comment)));
1030
+ downQueries.push(new Query_1.Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + newColumn.name + "\" IS " + this.escapeComment(oldColumn.comment)));
978
1031
  }
979
1032
  if (newColumn.isPrimary !== oldColumn.isPrimary) {
980
1033
  primaryColumns = clonedTable.primaryColumns;
@@ -2074,7 +2127,7 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
2074
2127
  return "(\"table_schema\" = '" + schema + "' AND \"table_name\" = '" + name + "')";
2075
2128
  }).join(" OR ");
2076
2129
  tablesSql = "SELECT * FROM \"information_schema\".\"tables\" WHERE " + tablesCondition;
2077
- columnsSql = "SELECT * FROM \"information_schema\".\"columns\" WHERE \"is_hidden\" = 'NO' AND " + tablesCondition;
2130
+ columnsSql = "\n SELECT\n *,\n pg_catalog.col_description(('\"' || table_catalog || '\".\"' || table_schema || '\".\"' || table_name || '\"')::regclass::oid, ordinal_position) as description\n FROM \"information_schema\".\"columns\"\n WHERE \"is_hidden\" = 'NO' AND " + tablesCondition;
2078
2131
  constraintsCondition = tableNames.map(function (tableName) {
2079
2132
  var _a = tslib_1.__read(tableName.split("."), 2), schema = _a[0], name = _a[1];
2080
2133
  if (!name) {
@@ -2216,9 +2269,10 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
2216
2269
  }
2217
2270
  else {
2218
2271
  tableColumn.default = dbColumn["column_default"].replace(/:::.*/, "");
2272
+ tableColumn.default = tableColumn.default.replace(/^(-?[\d\.]+)$/, "($1)");
2219
2273
  }
2220
2274
  }
2221
- tableColumn.comment = ""; // dbColumn["COLUMN_COMMENT"];
2275
+ tableColumn.comment = dbColumn["description"] == null ? undefined : dbColumn["description"];
2222
2276
  if (dbColumn["character_set_name"])
2223
2277
  tableColumn.charset = dbColumn["character_set_name"];
2224
2278
  return [2 /*return*/, tableColumn];
@@ -2362,6 +2416,9 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
2362
2416
  sql += ", CONSTRAINT \"" + primaryKeyName + "\" PRIMARY KEY (" + columnNames + ")";
2363
2417
  }
2364
2418
  sql += ")";
2419
+ table.columns
2420
+ .filter(function (it) { return it.comment; })
2421
+ .forEach(function (it) { return sql += "; COMMENT ON COLUMN " + _this.escapePath(table) + ".\"" + it.name + "\" IS " + _this.escapeComment(it.comment); });
2365
2422
  return new Query_1.Query(sql);
2366
2423
  };
2367
2424
  /**
@@ -2536,6 +2593,18 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
2536
2593
  var columnName = columnOrName instanceof TableColumn_1.TableColumn ? columnOrName.name : columnOrName;
2537
2594
  return disableEscape ? table.name + "_" + columnName + "_seq" : "\"" + table.name + "_" + columnName + "_seq\"";
2538
2595
  };
2596
+ /**
2597
+ * Escapes a given comment so it's safe to include in a query.
2598
+ */
2599
+ CockroachQueryRunner.prototype.escapeComment = function (comment) {
2600
+ if (comment === undefined || comment.length === 0) {
2601
+ return 'NULL';
2602
+ }
2603
+ comment = comment
2604
+ .replace("'", "''")
2605
+ .replace("\0", ""); // Null bytes aren't allowed in comments
2606
+ return "'" + comment + "'";
2607
+ };
2539
2608
  /**
2540
2609
  * Escapes given table or view path.
2541
2610
  */