typeorm 0.2.28 → 0.2.29

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 (248) hide show
  1. package/README.md +7 -2
  2. package/browser/connection/ConnectionOptionsReader.js +27 -27
  3. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  4. package/browser/decorator/entity/ChildEntity.js +1 -1
  5. package/browser/decorator/entity/ChildEntity.js.map +1 -1
  6. package/browser/driver/DriverUtils.js +20 -12
  7. package/browser/driver/DriverUtils.js.map +1 -1
  8. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +53 -6
  9. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  10. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +53 -6
  11. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  12. package/browser/driver/cockroachdb/CockroachDriver.js +3 -3
  13. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  14. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +4 -0
  15. package/browser/driver/cockroachdb/CockroachQueryRunner.js +112 -42
  16. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  17. package/browser/driver/expo/ExpoQueryRunner.js +72 -14
  18. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  19. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  20. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  21. package/browser/driver/mongodb/MongoDriver.d.ts +7 -3
  22. package/browser/driver/mongodb/MongoDriver.js +15 -14
  23. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  24. package/browser/driver/mongodb/MongoQueryRunner.d.ts +3 -3
  25. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  26. package/browser/driver/mysql/MysqlDriver.js +4 -4
  27. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  28. package/browser/driver/mysql/MysqlQueryRunner.d.ts +4 -0
  29. package/browser/driver/mysql/MysqlQueryRunner.js +107 -38
  30. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  31. package/browser/driver/oracle/OracleQueryRunner.js +52 -6
  32. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  33. package/browser/driver/postgres/PostgresDriver.js +7 -7
  34. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  35. package/browser/driver/postgres/PostgresQueryRunner.d.ts +8 -0
  36. package/browser/driver/postgres/PostgresQueryRunner.js +107 -18
  37. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  38. package/browser/driver/react-native/ReactNativeDriver.js +1 -2
  39. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  40. package/browser/driver/sap/SapQueryRunner.js +56 -8
  41. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  42. package/browser/driver/sqlite/SqliteQueryRunner.js +4 -0
  43. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  44. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +55 -7
  45. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  46. package/browser/driver/sqlserver/SqlServerQueryRunner.js +133 -62
  47. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  48. package/browser/entity-manager/MongoEntityManager.js +14 -3
  49. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  50. package/browser/find-options/FindOneOptions.d.ts +4 -0
  51. package/browser/find-options/FindOneOptions.js.map +1 -1
  52. package/browser/find-options/FindOperator.d.ts +20 -1
  53. package/browser/find-options/FindOperator.js +27 -1
  54. package/browser/find-options/FindOperator.js.map +1 -1
  55. package/browser/find-options/FindOperatorType.d.ts +1 -1
  56. package/browser/find-options/FindOperatorType.js.map +1 -1
  57. package/browser/find-options/FindOptionsUtils.js +5 -1
  58. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  59. package/browser/find-options/operator/ILike.d.ts +6 -0
  60. package/browser/find-options/operator/ILike.js +10 -0
  61. package/browser/find-options/operator/ILike.js.map +1 -0
  62. package/browser/find-options/operator/Raw.d.ts +14 -2
  63. package/browser/find-options/operator/Raw.js +5 -6
  64. package/browser/find-options/operator/Raw.js.map +1 -1
  65. package/browser/index.d.ts +2 -0
  66. package/browser/index.js +1 -0
  67. package/browser/index.js.map +1 -1
  68. package/browser/logger/Logger.d.ts +1 -1
  69. package/browser/logger/Logger.js.map +1 -1
  70. package/browser/metadata/ColumnMetadata.js +14 -3
  71. package/browser/metadata/ColumnMetadata.js.map +1 -1
  72. package/browser/metadata/types/EventListenerTypes.d.ts +7 -7
  73. package/browser/metadata/types/EventListenerTypes.js.map +1 -1
  74. package/browser/metadata-builder/EntityMetadataBuilder.js +14 -8
  75. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  76. package/browser/metadata-builder/EntityMetadataValidator.js +8 -5
  77. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  78. package/browser/persistence/EntityPersistExecutor.js +1 -1
  79. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  80. package/browser/persistence/Subject.js +2 -1
  81. package/browser/persistence/Subject.js.map +1 -1
  82. package/browser/query-builder/DeleteQueryBuilder.js +2 -1
  83. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  84. package/browser/query-builder/InsertQueryBuilder.js +31 -8
  85. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  86. package/browser/query-builder/QueryBuilder.d.ts +7 -0
  87. package/browser/query-builder/QueryBuilder.js +125 -32
  88. package/browser/query-builder/QueryBuilder.js.map +1 -1
  89. package/browser/query-builder/QueryExpressionMap.d.ts +4 -0
  90. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  91. package/browser/query-builder/SelectQueryBuilder.d.ts +5 -0
  92. package/browser/query-builder/SelectQueryBuilder.js +73 -40
  93. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  94. package/browser/query-builder/UpdateQueryBuilder.js +2 -1
  95. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  96. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +6 -3
  97. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  98. package/browser/query-runner/QueryRunner.d.ts +1 -1
  99. package/browser/query-runner/QueryRunner.js.map +1 -1
  100. package/browser/repository/TreeRepository.js +2 -2
  101. package/browser/repository/TreeRepository.js.map +1 -1
  102. package/browser/subscriber/Broadcaster.d.ts +24 -0
  103. package/browser/subscriber/Broadcaster.js +120 -0
  104. package/browser/subscriber/Broadcaster.js.map +1 -1
  105. package/browser/subscriber/EntitySubscriberInterface.d.ts +27 -0
  106. package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
  107. package/browser/subscriber/event/TransactionCommitEvent.d.ts +22 -0
  108. package/browser/subscriber/event/TransactionCommitEvent.js +3 -0
  109. package/browser/subscriber/event/TransactionCommitEvent.js.map +1 -0
  110. package/browser/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
  111. package/browser/subscriber/event/TransactionRollbackEvent.js +3 -0
  112. package/browser/subscriber/event/TransactionRollbackEvent.js.map +1 -0
  113. package/browser/subscriber/event/TransactionStartEvent.d.ts +22 -0
  114. package/browser/subscriber/event/TransactionStartEvent.js +3 -0
  115. package/browser/subscriber/event/TransactionStartEvent.js.map +1 -0
  116. package/browser/util/DateUtils.js +1 -7
  117. package/browser/util/DateUtils.js.map +1 -1
  118. package/commands/EntityCreateCommand.js +5 -2
  119. package/commands/EntityCreateCommand.js.map +1 -1
  120. package/commands/InitCommand.js +1 -1
  121. package/commands/InitCommand.js.map +1 -1
  122. package/commands/MigrationCreateCommand.js +4 -1
  123. package/commands/MigrationCreateCommand.js.map +1 -1
  124. package/commands/MigrationGenerateCommand.js +26 -28
  125. package/commands/MigrationGenerateCommand.js.map +1 -1
  126. package/commands/QueryCommand.d.ts +2 -0
  127. package/commands/QueryCommand.js +12 -3
  128. package/commands/QueryCommand.js.map +1 -1
  129. package/commands/SubscriberCreateCommand.js +5 -2
  130. package/commands/SubscriberCreateCommand.js.map +1 -1
  131. package/connection/ConnectionOptionsReader.js +27 -27
  132. package/connection/ConnectionOptionsReader.js.map +1 -1
  133. package/decorator/entity/ChildEntity.js +1 -1
  134. package/decorator/entity/ChildEntity.js.map +1 -1
  135. package/driver/DriverUtils.js +19 -11
  136. package/driver/DriverUtils.js.map +1 -1
  137. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +53 -6
  138. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  139. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +53 -6
  140. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  141. package/driver/cockroachdb/CockroachDriver.js +3 -3
  142. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  143. package/driver/cockroachdb/CockroachQueryRunner.d.ts +4 -0
  144. package/driver/cockroachdb/CockroachQueryRunner.js +112 -42
  145. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  146. package/driver/expo/ExpoQueryRunner.js +72 -14
  147. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  148. package/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  149. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  150. package/driver/mongodb/MongoDriver.d.ts +7 -3
  151. package/driver/mongodb/MongoDriver.js +15 -14
  152. package/driver/mongodb/MongoDriver.js.map +1 -1
  153. package/driver/mongodb/MongoQueryRunner.d.ts +3 -3
  154. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  155. package/driver/mysql/MysqlDriver.js +4 -4
  156. package/driver/mysql/MysqlDriver.js.map +1 -1
  157. package/driver/mysql/MysqlQueryRunner.d.ts +4 -0
  158. package/driver/mysql/MysqlQueryRunner.js +107 -38
  159. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  160. package/driver/oracle/OracleQueryRunner.js +52 -6
  161. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  162. package/driver/postgres/PostgresDriver.js +7 -7
  163. package/driver/postgres/PostgresDriver.js.map +1 -1
  164. package/driver/postgres/PostgresQueryRunner.d.ts +8 -0
  165. package/driver/postgres/PostgresQueryRunner.js +107 -18
  166. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  167. package/driver/react-native/ReactNativeDriver.js +1 -2
  168. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  169. package/driver/sap/SapQueryRunner.js +56 -8
  170. package/driver/sap/SapQueryRunner.js.map +1 -1
  171. package/driver/sqlite/SqliteQueryRunner.js +4 -0
  172. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  173. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +55 -7
  174. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  175. package/driver/sqlserver/SqlServerQueryRunner.js +133 -62
  176. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  177. package/entity-manager/MongoEntityManager.js +14 -3
  178. package/entity-manager/MongoEntityManager.js.map +1 -1
  179. package/find-options/FindOneOptions.d.ts +4 -0
  180. package/find-options/FindOneOptions.js.map +1 -1
  181. package/find-options/FindOperator.d.ts +20 -1
  182. package/find-options/FindOperator.js +27 -1
  183. package/find-options/FindOperator.js.map +1 -1
  184. package/find-options/FindOperatorType.d.ts +1 -1
  185. package/find-options/FindOperatorType.js.map +1 -1
  186. package/find-options/FindOptionsUtils.js +5 -1
  187. package/find-options/FindOptionsUtils.js.map +1 -1
  188. package/find-options/operator/ILike.d.ts +6 -0
  189. package/find-options/operator/ILike.js +13 -0
  190. package/find-options/operator/ILike.js.map +1 -0
  191. package/find-options/operator/Raw.d.ts +14 -2
  192. package/find-options/operator/Raw.js +5 -6
  193. package/find-options/operator/Raw.js.map +1 -1
  194. package/index.d.ts +2 -0
  195. package/index.js +1 -0
  196. package/index.js.map +1 -1
  197. package/logger/Logger.d.ts +1 -1
  198. package/logger/Logger.js.map +1 -1
  199. package/metadata/ColumnMetadata.js +14 -3
  200. package/metadata/ColumnMetadata.js.map +1 -1
  201. package/metadata/types/EventListenerTypes.d.ts +7 -7
  202. package/metadata/types/EventListenerTypes.js.map +1 -1
  203. package/metadata-builder/EntityMetadataBuilder.js +14 -8
  204. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  205. package/metadata-builder/EntityMetadataValidator.js +8 -5
  206. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  207. package/package.json +3 -2
  208. package/persistence/EntityPersistExecutor.js +1 -1
  209. package/persistence/EntityPersistExecutor.js.map +1 -1
  210. package/persistence/Subject.js +2 -1
  211. package/persistence/Subject.js.map +1 -1
  212. package/query-builder/DeleteQueryBuilder.js +2 -1
  213. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  214. package/query-builder/InsertQueryBuilder.js +31 -8
  215. package/query-builder/InsertQueryBuilder.js.map +1 -1
  216. package/query-builder/QueryBuilder.d.ts +7 -0
  217. package/query-builder/QueryBuilder.js +124 -31
  218. package/query-builder/QueryBuilder.js.map +1 -1
  219. package/query-builder/QueryExpressionMap.d.ts +4 -0
  220. package/query-builder/QueryExpressionMap.js.map +1 -1
  221. package/query-builder/SelectQueryBuilder.d.ts +5 -0
  222. package/query-builder/SelectQueryBuilder.js +73 -40
  223. package/query-builder/SelectQueryBuilder.js.map +1 -1
  224. package/query-builder/UpdateQueryBuilder.js +2 -1
  225. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  226. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +6 -3
  227. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  228. package/query-runner/QueryRunner.d.ts +1 -1
  229. package/query-runner/QueryRunner.js.map +1 -1
  230. package/repository/TreeRepository.js +2 -2
  231. package/repository/TreeRepository.js.map +1 -1
  232. package/subscriber/Broadcaster.d.ts +24 -0
  233. package/subscriber/Broadcaster.js +120 -0
  234. package/subscriber/Broadcaster.js.map +1 -1
  235. package/subscriber/EntitySubscriberInterface.d.ts +27 -0
  236. package/subscriber/EntitySubscriberInterface.js.map +1 -1
  237. package/subscriber/event/TransactionCommitEvent.d.ts +22 -0
  238. package/subscriber/event/TransactionCommitEvent.js +4 -0
  239. package/subscriber/event/TransactionCommitEvent.js.map +1 -0
  240. package/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
  241. package/subscriber/event/TransactionRollbackEvent.js +4 -0
  242. package/subscriber/event/TransactionRollbackEvent.js.map +1 -0
  243. package/subscriber/event/TransactionStartEvent.d.ts +22 -0
  244. package/subscriber/event/TransactionStartEvent.js +4 -0
  245. package/subscriber/event/TransactionStartEvent.js.map +1 -0
  246. package/typeorm-model-shim.js +145 -128
  247. package/util/DateUtils.js +1 -7
  248. package/util/DateUtils.js.map +1 -1
@@ -15,6 +15,7 @@ import { BaseQueryRunner } from "../../query-runner/BaseQueryRunner";
15
15
  import { OrmUtils } from "../../util/OrmUtils";
16
16
  import { TableCheck } from "../../schema-builder/table/TableCheck";
17
17
  import { TableExclusion } from "../../schema-builder/table/TableExclusion";
18
+ import { BroadcasterResult } from "../../subscriber/BroadcasterResult";
18
19
  /**
19
20
  * Runs queries on a single postgres database connection.
20
21
  */
@@ -90,26 +91,42 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
90
91
  */
91
92
  CockroachQueryRunner.prototype.startTransaction = function (isolationLevel) {
92
93
  return __awaiter(this, void 0, void 0, function () {
94
+ var beforeBroadcastResult, afterBroadcastResult;
93
95
  return __generator(this, function (_a) {
94
96
  switch (_a.label) {
95
97
  case 0:
96
98
  if (this.isTransactionActive)
97
99
  throw new TransactionAlreadyStartedError();
100
+ beforeBroadcastResult = new BroadcasterResult();
101
+ this.broadcaster.broadcastBeforeTransactionStartEvent(beforeBroadcastResult);
102
+ if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];
103
+ return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];
104
+ case 1:
105
+ _a.sent();
106
+ _a.label = 2;
107
+ case 2:
98
108
  this.isTransactionActive = true;
99
109
  return [4 /*yield*/, this.query("START TRANSACTION")];
100
- case 1:
110
+ case 3:
101
111
  _a.sent();
102
112
  return [4 /*yield*/, this.query("SAVEPOINT cockroach_restart")];
103
- case 2:
113
+ case 4:
104
114
  _a.sent();
105
- if (!isolationLevel) return [3 /*break*/, 4];
115
+ if (!isolationLevel) return [3 /*break*/, 6];
106
116
  return [4 /*yield*/, this.query("SET TRANSACTION ISOLATION LEVEL " + isolationLevel)];
107
- case 3:
117
+ case 5:
108
118
  _a.sent();
109
- _a.label = 4;
110
- case 4:
119
+ _a.label = 6;
120
+ case 6:
111
121
  this.storeQueries = true;
112
- return [2 /*return*/];
122
+ afterBroadcastResult = new BroadcasterResult();
123
+ this.broadcaster.broadcastAfterTransactionStartEvent(afterBroadcastResult);
124
+ if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 8];
125
+ return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];
126
+ case 7:
127
+ _a.sent();
128
+ _a.label = 8;
129
+ case 8: return [2 /*return*/];
113
130
  }
114
131
  });
115
132
  });
@@ -120,64 +137,80 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
120
137
  */
121
138
  CockroachQueryRunner.prototype.commitTransaction = function () {
122
139
  return __awaiter(this, void 0, void 0, function () {
123
- var e_1, _a, _b, q, e_2_1;
140
+ var beforeBroadcastResult, e_1, _a, _b, q, e_2_1, afterBroadcastResult;
124
141
  var e_2, _c;
125
142
  return __generator(this, function (_d) {
126
143
  switch (_d.label) {
127
144
  case 0:
128
145
  if (!this.isTransactionActive)
129
146
  throw new TransactionNotStartedError();
130
- this.storeQueries = false;
131
- _d.label = 1;
147
+ beforeBroadcastResult = new BroadcasterResult();
148
+ this.broadcaster.broadcastBeforeTransactionCommitEvent(beforeBroadcastResult);
149
+ if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];
150
+ return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];
132
151
  case 1:
133
- _d.trys.push([1, 4, , 16]);
134
- return [4 /*yield*/, this.query("RELEASE SAVEPOINT cockroach_restart")];
152
+ _d.sent();
153
+ _d.label = 2;
135
154
  case 2:
155
+ this.storeQueries = false;
156
+ _d.label = 3;
157
+ case 3:
158
+ _d.trys.push([3, 6, , 18]);
159
+ return [4 /*yield*/, this.query("RELEASE SAVEPOINT cockroach_restart")];
160
+ case 4:
136
161
  _d.sent();
137
162
  return [4 /*yield*/, this.query("COMMIT")];
138
- case 3:
163
+ case 5:
139
164
  _d.sent();
140
165
  this.queries = [];
141
166
  this.isTransactionActive = false;
142
- return [3 /*break*/, 16];
143
- case 4:
167
+ return [3 /*break*/, 18];
168
+ case 6:
144
169
  e_1 = _d.sent();
145
- if (!(e_1.code === "40001")) return [3 /*break*/, 15];
170
+ if (!(e_1.code === "40001")) return [3 /*break*/, 17];
146
171
  return [4 /*yield*/, this.query("ROLLBACK TO SAVEPOINT cockroach_restart")];
147
- case 5:
172
+ case 7:
148
173
  _d.sent();
149
- _d.label = 6;
150
- case 6:
151
- _d.trys.push([6, 11, 12, 13]);
174
+ _d.label = 8;
175
+ case 8:
176
+ _d.trys.push([8, 13, 14, 15]);
152
177
  _a = __values(this.queries), _b = _a.next();
153
- _d.label = 7;
154
- case 7:
155
- if (!!_b.done) return [3 /*break*/, 10];
178
+ _d.label = 9;
179
+ case 9:
180
+ if (!!_b.done) return [3 /*break*/, 12];
156
181
  q = _b.value;
157
182
  return [4 /*yield*/, this.query(q.query, q.parameters)];
158
- case 8:
183
+ case 10:
159
184
  _d.sent();
160
- _d.label = 9;
161
- case 9:
162
- _b = _a.next();
163
- return [3 /*break*/, 7];
164
- case 10: return [3 /*break*/, 13];
185
+ _d.label = 11;
165
186
  case 11:
187
+ _b = _a.next();
188
+ return [3 /*break*/, 9];
189
+ case 12: return [3 /*break*/, 15];
190
+ case 13:
166
191
  e_2_1 = _d.sent();
167
192
  e_2 = { error: e_2_1 };
168
- return [3 /*break*/, 13];
169
- case 12:
193
+ return [3 /*break*/, 15];
194
+ case 14:
170
195
  try {
171
196
  if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
172
197
  }
173
198
  finally { if (e_2) throw e_2.error; }
174
199
  return [7 /*endfinally*/];
175
- case 13: return [4 /*yield*/, this.commitTransaction()];
176
- case 14:
200
+ case 15: return [4 /*yield*/, this.commitTransaction()];
201
+ case 16:
202
+ _d.sent();
203
+ _d.label = 17;
204
+ case 17: return [3 /*break*/, 18];
205
+ case 18:
206
+ afterBroadcastResult = new BroadcasterResult();
207
+ this.broadcaster.broadcastAfterTransactionCommitEvent(afterBroadcastResult);
208
+ if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 20];
209
+ return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];
210
+ case 19:
177
211
  _d.sent();
178
- _d.label = 15;
179
- case 15: return [3 /*break*/, 16];
180
- case 16: return [2 /*return*/];
212
+ _d.label = 20;
213
+ case 20: return [2 /*return*/];
181
214
  }
182
215
  });
183
216
  });
@@ -188,18 +221,34 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
188
221
  */
189
222
  CockroachQueryRunner.prototype.rollbackTransaction = function () {
190
223
  return __awaiter(this, void 0, void 0, function () {
224
+ var beforeBroadcastResult, afterBroadcastResult;
191
225
  return __generator(this, function (_a) {
192
226
  switch (_a.label) {
193
227
  case 0:
194
228
  if (!this.isTransactionActive)
195
229
  throw new TransactionNotStartedError();
230
+ beforeBroadcastResult = new BroadcasterResult();
231
+ this.broadcaster.broadcastBeforeTransactionRollbackEvent(beforeBroadcastResult);
232
+ if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];
233
+ return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];
234
+ case 1:
235
+ _a.sent();
236
+ _a.label = 2;
237
+ case 2:
196
238
  this.storeQueries = false;
197
239
  return [4 /*yield*/, this.query("ROLLBACK")];
198
- case 1:
240
+ case 3:
199
241
  _a.sent();
200
242
  this.queries = [];
201
243
  this.isTransactionActive = false;
202
- return [2 /*return*/];
244
+ afterBroadcastResult = new BroadcasterResult();
245
+ this.broadcaster.broadcastAfterTransactionRollbackEvent(afterBroadcastResult);
246
+ if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];
247
+ return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];
248
+ case 4:
249
+ _a.sent();
250
+ _a.label = 5;
251
+ case 5: return [2 /*return*/];
203
252
  }
204
253
  });
205
254
  });
@@ -774,6 +823,11 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
774
823
  upQueries.push(this.createUniqueConstraintSql(table, uniqueConstraint));
775
824
  downQueries.push(this.dropIndexSql(table, uniqueConstraint.name)); // CockroachDB creates indices for unique constraints
776
825
  }
826
+ // create column's comment
827
+ if (column.comment) {
828
+ upQueries.push(new Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + column.name + "\" IS " + this.escapeComment(column.comment)));
829
+ downQueries.push(new Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + column.name + "\" IS " + this.escapeComment(column.comment)));
830
+ }
777
831
  return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
778
832
  case 4:
779
833
  _b.sent();
@@ -970,8 +1024,8 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
970
1024
  }
971
1025
  }
972
1026
  if (oldColumn.comment !== newColumn.comment) {
973
- upQueries.push(new Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + oldColumn.name + "\" IS '" + newColumn.comment + "'"));
974
- downQueries.push(new Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + newColumn.name + "\" IS '" + oldColumn.comment + "'"));
1027
+ upQueries.push(new Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + oldColumn.name + "\" IS " + this.escapeComment(newColumn.comment)));
1028
+ downQueries.push(new Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + newColumn.name + "\" IS " + this.escapeComment(oldColumn.comment)));
975
1029
  }
976
1030
  if (newColumn.isPrimary !== oldColumn.isPrimary) {
977
1031
  primaryColumns = clonedTable.primaryColumns;
@@ -2071,7 +2125,7 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
2071
2125
  return "(\"table_schema\" = '" + schema + "' AND \"table_name\" = '" + name + "')";
2072
2126
  }).join(" OR ");
2073
2127
  tablesSql = "SELECT * FROM \"information_schema\".\"tables\" WHERE " + tablesCondition;
2074
- columnsSql = "SELECT * FROM \"information_schema\".\"columns\" WHERE \"is_hidden\" = 'NO' AND " + tablesCondition;
2128
+ 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;
2075
2129
  constraintsCondition = tableNames.map(function (tableName) {
2076
2130
  var _a = __read(tableName.split("."), 2), schema = _a[0], name = _a[1];
2077
2131
  if (!name) {
@@ -2213,9 +2267,10 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
2213
2267
  }
2214
2268
  else {
2215
2269
  tableColumn.default = dbColumn["column_default"].replace(/:::.*/, "");
2270
+ tableColumn.default = tableColumn.default.replace(/^(-?[\d\.]+)$/, "($1)");
2216
2271
  }
2217
2272
  }
2218
- tableColumn.comment = ""; // dbColumn["COLUMN_COMMENT"];
2273
+ tableColumn.comment = dbColumn["description"] == null ? undefined : dbColumn["description"];
2219
2274
  if (dbColumn["character_set_name"])
2220
2275
  tableColumn.charset = dbColumn["character_set_name"];
2221
2276
  return [2 /*return*/, tableColumn];
@@ -2359,6 +2414,9 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
2359
2414
  sql += ", CONSTRAINT \"" + primaryKeyName + "\" PRIMARY KEY (" + columnNames + ")";
2360
2415
  }
2361
2416
  sql += ")";
2417
+ table.columns
2418
+ .filter(function (it) { return it.comment; })
2419
+ .forEach(function (it) { return sql += "; COMMENT ON COLUMN " + _this.escapePath(table) + ".\"" + it.name + "\" IS " + _this.escapeComment(it.comment); });
2362
2420
  return new Query(sql);
2363
2421
  };
2364
2422
  /**
@@ -2533,6 +2591,18 @@ var CockroachQueryRunner = /** @class */ (function (_super) {
2533
2591
  var columnName = columnOrName instanceof TableColumn ? columnOrName.name : columnOrName;
2534
2592
  return disableEscape ? table.name + "_" + columnName + "_seq" : "\"" + table.name + "_" + columnName + "_seq\"";
2535
2593
  };
2594
+ /**
2595
+ * Escapes a given comment so it's safe to include in a query.
2596
+ */
2597
+ CockroachQueryRunner.prototype.escapeComment = function (comment) {
2598
+ if (comment === undefined || comment.length === 0) {
2599
+ return 'NULL';
2600
+ }
2601
+ comment = comment
2602
+ .replace("'", "''")
2603
+ .replace("\0", ""); // Null bytes aren't allowed in comments
2604
+ return "'" + comment + "'";
2605
+ };
2536
2606
  /**
2537
2607
  * Escapes given table or view path.
2538
2608
  */