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
@@ -17,6 +17,7 @@ var View_1 = require("../../schema-builder/view/View");
17
17
  var Broadcaster_1 = require("../../subscriber/Broadcaster");
18
18
  var OrmUtils_1 = require("../../util/OrmUtils");
19
19
  var Query_1 = require("../Query");
20
+ var BroadcasterResult_1 = require("../../subscriber/BroadcasterResult");
20
21
  /**
21
22
  * Runs queries on a single postgres database connection.
22
23
  */
@@ -97,21 +98,38 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
97
98
  */
98
99
  PostgresQueryRunner.prototype.startTransaction = function (isolationLevel) {
99
100
  return tslib_1.__awaiter(this, void 0, void 0, function () {
101
+ var beforeBroadcastResult, afterBroadcastResult;
100
102
  return tslib_1.__generator(this, function (_a) {
101
103
  switch (_a.label) {
102
104
  case 0:
103
105
  if (this.isTransactionActive)
104
106
  throw new TransactionAlreadyStartedError_1.TransactionAlreadyStartedError();
107
+ beforeBroadcastResult = new BroadcasterResult_1.BroadcasterResult();
108
+ this.broadcaster.broadcastBeforeTransactionStartEvent(beforeBroadcastResult);
109
+ if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];
110
+ return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];
111
+ case 1:
112
+ _a.sent();
113
+ _a.label = 2;
114
+ case 2:
105
115
  this.isTransactionActive = true;
106
116
  return [4 /*yield*/, this.query("START TRANSACTION")];
107
- case 1:
117
+ case 3:
108
118
  _a.sent();
109
- if (!isolationLevel) return [3 /*break*/, 3];
119
+ if (!isolationLevel) return [3 /*break*/, 5];
110
120
  return [4 /*yield*/, this.query("SET TRANSACTION ISOLATION LEVEL " + isolationLevel)];
111
- case 2:
121
+ case 4:
112
122
  _a.sent();
113
- _a.label = 3;
114
- case 3: return [2 /*return*/];
123
+ _a.label = 5;
124
+ case 5:
125
+ afterBroadcastResult = new BroadcasterResult_1.BroadcasterResult();
126
+ this.broadcaster.broadcastAfterTransactionStartEvent(afterBroadcastResult);
127
+ if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 7];
128
+ return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];
129
+ case 6:
130
+ _a.sent();
131
+ _a.label = 7;
132
+ case 7: return [2 /*return*/];
115
133
  }
116
134
  });
117
135
  });
@@ -122,16 +140,31 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
122
140
  */
123
141
  PostgresQueryRunner.prototype.commitTransaction = function () {
124
142
  return tslib_1.__awaiter(this, void 0, void 0, function () {
143
+ var beforeBroadcastResult, afterBroadcastResult;
125
144
  return tslib_1.__generator(this, function (_a) {
126
145
  switch (_a.label) {
127
146
  case 0:
128
147
  if (!this.isTransactionActive)
129
148
  throw new TransactionNotStartedError_1.TransactionNotStartedError();
130
- return [4 /*yield*/, this.query("COMMIT")];
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)];
131
153
  case 1:
154
+ _a.sent();
155
+ _a.label = 2;
156
+ case 2: return [4 /*yield*/, this.query("COMMIT")];
157
+ case 3:
132
158
  _a.sent();
133
159
  this.isTransactionActive = false;
134
- return [2 /*return*/];
160
+ afterBroadcastResult = new BroadcasterResult_1.BroadcasterResult();
161
+ this.broadcaster.broadcastAfterTransactionCommitEvent(afterBroadcastResult);
162
+ if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];
163
+ return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];
164
+ case 4:
165
+ _a.sent();
166
+ _a.label = 5;
167
+ case 5: return [2 /*return*/];
135
168
  }
136
169
  });
137
170
  });
@@ -142,16 +175,31 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
142
175
  */
143
176
  PostgresQueryRunner.prototype.rollbackTransaction = function () {
144
177
  return tslib_1.__awaiter(this, void 0, void 0, function () {
178
+ var beforeBroadcastResult, afterBroadcastResult;
145
179
  return tslib_1.__generator(this, function (_a) {
146
180
  switch (_a.label) {
147
181
  case 0:
148
182
  if (!this.isTransactionActive)
149
183
  throw new TransactionNotStartedError_1.TransactionNotStartedError();
150
- return [4 /*yield*/, this.query("ROLLBACK")];
184
+ beforeBroadcastResult = new BroadcasterResult_1.BroadcasterResult();
185
+ this.broadcaster.broadcastBeforeTransactionRollbackEvent(beforeBroadcastResult);
186
+ if (!(beforeBroadcastResult.promises.length > 0)) return [3 /*break*/, 2];
187
+ return [4 /*yield*/, Promise.all(beforeBroadcastResult.promises)];
151
188
  case 1:
189
+ _a.sent();
190
+ _a.label = 2;
191
+ case 2: return [4 /*yield*/, this.query("ROLLBACK")];
192
+ case 3:
152
193
  _a.sent();
153
194
  this.isTransactionActive = false;
154
- return [2 /*return*/];
195
+ afterBroadcastResult = new BroadcasterResult_1.BroadcasterResult();
196
+ this.broadcaster.broadcastAfterTransactionRollbackEvent(afterBroadcastResult);
197
+ if (!(afterBroadcastResult.promises.length > 0)) return [3 /*break*/, 5];
198
+ return [4 /*yield*/, Promise.all(afterBroadcastResult.promises)];
199
+ case 4:
200
+ _a.sent();
201
+ _a.label = 5;
202
+ case 5: return [2 /*return*/];
155
203
  }
156
204
  });
157
205
  });
@@ -738,6 +786,11 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
738
786
  upQueries.push(new Query_1.Query("ALTER TABLE " + this.escapePath(table) + " ADD CONSTRAINT \"" + uniqueConstraint.name + "\" UNIQUE (\"" + column.name + "\")"));
739
787
  downQueries.push(new Query_1.Query("ALTER TABLE " + this.escapePath(table) + " DROP CONSTRAINT \"" + uniqueConstraint.name + "\""));
740
788
  }
789
+ // create column's comment
790
+ if (column.comment) {
791
+ upQueries.push(new Query_1.Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + column.name + "\" IS " + this.escapeComment(column.comment)));
792
+ downQueries.push(new Query_1.Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + column.name + "\" IS " + this.escapeComment(column.comment)));
793
+ }
741
794
  return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
742
795
  case 6:
743
796
  _b.sent();
@@ -989,8 +1042,8 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
989
1042
  }
990
1043
  }
991
1044
  if (oldColumn.comment !== newColumn.comment) {
992
- upQueries.push(new Query_1.Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + oldColumn.name + "\" IS '" + newColumn.comment + "'"));
993
- downQueries.push(new Query_1.Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + newColumn.name + "\" IS '" + oldColumn.comment + "'"));
1045
+ upQueries.push(new Query_1.Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + oldColumn.name + "\" IS " + this.escapeComment(newColumn.comment)));
1046
+ downQueries.push(new Query_1.Query("COMMENT ON COLUMN " + this.escapePath(table) + ".\"" + newColumn.name + "\" IS " + this.escapeComment(oldColumn.comment)));
994
1047
  }
995
1048
  if (newColumn.isPrimary !== oldColumn.isPrimary) {
996
1049
  primaryColumns = clonedTable.primaryColumns;
@@ -2119,7 +2172,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
2119
2172
  */
2120
2173
  PostgresQueryRunner.prototype.loadTables = function (tableNames) {
2121
2174
  return tslib_1.__awaiter(this, void 0, void 0, function () {
2122
- var currentSchemaQuery, currentSchema, tablesCondition, tablesSql, columnsSql, constraintsCondition, constraintsSql, indicesSql, foreignKeysCondition, foreignKeysSql, _a, dbTables, dbColumns, dbConstraints, dbIndices, dbForeignKeys;
2175
+ var currentSchemaQuery, currentSchema, tablesCondition, tablesSql, columnsSql, constraintsCondition, constraintsSql, indicesSql, foreignKeysCondition, hasRelispartitionColumn, isPartitionCondition, foreignKeysSql, _a, dbTables, dbColumns, dbConstraints, dbIndices, dbForeignKeys;
2123
2176
  var _this = this;
2124
2177
  return tslib_1.__generator(this, function (_b) {
2125
2178
  switch (_b.label) {
@@ -2140,7 +2193,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
2140
2193
  return "(\"table_schema\" = '" + schema + "' AND \"table_name\" = '" + name + "')";
2141
2194
  }).join(" OR ");
2142
2195
  tablesSql = "SELECT * FROM \"information_schema\".\"tables\" WHERE " + tablesCondition;
2143
- columnsSql = "SELECT *, ('\"' || \"udt_schema\" || '\".\"' || \"udt_name\" || '\"')::\"regtype\" AS \"regtype\" FROM \"information_schema\".\"columns\" WHERE " + tablesCondition;
2196
+ columnsSql = "\n SELECT\n *,\n pg_catalog.col_description(('\"' || table_catalog || '\".\"' || table_schema || '\".\"' || table_name || '\"')::regclass::oid, ordinal_position) as description,\n ('\"' || \"udt_schema\" || '\".\"' || \"udt_name\" || '\"')::\"regtype\" AS \"regtype\"\n FROM \"information_schema\".\"columns\"\n WHERE\n " + tablesCondition;
2144
2197
  constraintsCondition = tableNames.map(function (tableName) {
2145
2198
  var _a = tslib_1.__read(tableName.split("."), 2), schema = _a[0], name = _a[1];
2146
2199
  if (!name) {
@@ -2156,7 +2209,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
2156
2209
  "INNER JOIN \"pg_class\" \"t\" ON \"t\".\"oid\" = \"cnst\".\"conrelid\" " +
2157
2210
  "INNER JOIN \"pg_namespace\" \"ns\" ON \"ns\".\"oid\" = \"cnst\".\"connamespace\" " +
2158
2211
  "LEFT JOIN \"pg_attribute\" \"a\" ON \"a\".\"attrelid\" = \"cnst\".\"conrelid\" AND \"a\".\"attnum\" = ANY (\"cnst\".\"conkey\") " +
2159
- ("WHERE \"t\".\"relkind\" = 'r' AND (" + constraintsCondition + ")");
2212
+ ("WHERE \"t\".\"relkind\" IN ('r', 'p') AND (" + constraintsCondition + ")");
2160
2213
  indicesSql = "SELECT \"ns\".\"nspname\" AS \"table_schema\", \"t\".\"relname\" AS \"table_name\", \"i\".\"relname\" AS \"constraint_name\", \"a\".\"attname\" AS \"column_name\", " +
2161
2214
  "CASE \"ix\".\"indisunique\" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS \"is_unique\", pg_get_expr(\"ix\".\"indpred\", \"ix\".\"indrelid\") AS \"condition\", " +
2162
2215
  "\"types\".\"typname\" AS \"type_name\" " +
@@ -2167,7 +2220,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
2167
2220
  "INNER JOIN \"pg_class\" \"i\" ON \"i\".\"oid\" = \"ix\".\"indexrelid\" " +
2168
2221
  "INNER JOIN \"pg_type\" \"types\" ON \"types\".\"oid\" = \"a\".\"atttypid\" " +
2169
2222
  "LEFT JOIN \"pg_constraint\" \"cnst\" ON \"cnst\".\"conname\" = \"i\".\"relname\" " +
2170
- ("WHERE \"t\".\"relkind\" = 'r' AND \"cnst\".\"contype\" IS NULL AND (" + constraintsCondition + ")");
2223
+ ("WHERE \"t\".\"relkind\" IN ('r', 'p') AND \"cnst\".\"contype\" IS NULL AND (" + constraintsCondition + ")");
2171
2224
  foreignKeysCondition = tableNames.map(function (tableName) {
2172
2225
  var _a = tslib_1.__read(tableName.split("."), 2), schema = _a[0], name = _a[1];
2173
2226
  if (!name) {
@@ -2176,6 +2229,10 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
2176
2229
  }
2177
2230
  return "(\"ns\".\"nspname\" = '" + schema + "' AND \"cl\".\"relname\" = '" + name + "')";
2178
2231
  }).join(" OR ");
2232
+ return [4 /*yield*/, this.hasSupportForPartitionedTables()];
2233
+ case 2:
2234
+ hasRelispartitionColumn = _b.sent();
2235
+ isPartitionCondition = hasRelispartitionColumn ? " AND \"cl\".\"relispartition\" = 'f'" : "";
2179
2236
  foreignKeysSql = "SELECT \"con\".\"conname\" AS \"constraint_name\", \"con\".\"nspname\" AS \"table_schema\", \"con\".\"relname\" AS \"table_name\", \"att2\".\"attname\" AS \"column_name\", " +
2180
2237
  "\"ns\".\"nspname\" AS \"referenced_table_schema\", \"cl\".\"relname\" AS \"referenced_table_name\", \"att\".\"attname\" AS \"referenced_column_name\", \"con\".\"confdeltype\" AS \"on_delete\", " +
2181
2238
  "\"con\".\"confupdtype\" AS \"on_update\", \"con\".\"condeferrable\" AS \"deferrable\", \"con\".\"condeferred\" AS \"deferred\" " +
@@ -2191,7 +2248,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
2191
2248
  ("WHERE \"con1\".\"contype\" = 'f' AND (" + foreignKeysCondition + ") ") +
2192
2249
  ") \"con\" " +
2193
2250
  "INNER JOIN \"pg_attribute\" \"att\" ON \"att\".\"attrelid\" = \"con\".\"confrelid\" AND \"att\".\"attnum\" = \"con\".\"child\" " +
2194
- "INNER JOIN \"pg_class\" \"cl\" ON \"cl\".\"oid\" = \"con\".\"confrelid\" " +
2251
+ ("INNER JOIN \"pg_class\" \"cl\" ON \"cl\".\"oid\" = \"con\".\"confrelid\" " + isPartitionCondition) +
2195
2252
  "INNER JOIN \"pg_namespace\" \"ns\" ON \"cl\".\"relnamespace\" = \"ns\".\"oid\" " +
2196
2253
  "INNER JOIN \"pg_attribute\" \"att2\" ON \"att2\".\"attrelid\" = \"con\".\"conrelid\" AND \"att2\".\"attnum\" = \"con\".\"parent\"";
2197
2254
  return [4 /*yield*/, Promise.all([
@@ -2201,7 +2258,7 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
2201
2258
  this.query(indicesSql),
2202
2259
  this.query(foreignKeysSql),
2203
2260
  ])];
2204
- case 2:
2261
+ case 3:
2205
2262
  _a = tslib_1.__read.apply(void 0, [_b.sent(), 5]), dbTables = _a[0], dbColumns = _a[1], dbConstraints = _a[2], dbIndices = _a[3], dbForeignKeys = _a[4];
2206
2263
  // if tables were not found in the db, no need to proceed
2207
2264
  if (!dbTables.length)
@@ -2317,9 +2374,10 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
2317
2374
  }
2318
2375
  else {
2319
2376
  tableColumn.default = dbColumn["column_default"].replace(/::.*/, "");
2377
+ tableColumn.default = tableColumn.default.replace(/^(-?\d+)$/, "'$1'");
2320
2378
  }
2321
2379
  }
2322
- tableColumn.comment = ""; // dbColumn["COLUMN_COMMENT"];
2380
+ tableColumn.comment = dbColumn["description"] == null ? undefined : dbColumn["description"];
2323
2381
  if (dbColumn["character_set_name"])
2324
2382
  tableColumn.charset = dbColumn["character_set_name"];
2325
2383
  if (dbColumn["collation_name"])
@@ -2472,6 +2530,9 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
2472
2530
  sql += ", CONSTRAINT \"" + primaryKeyName + "\" PRIMARY KEY (" + columnNames + ")";
2473
2531
  }
2474
2532
  sql += ")";
2533
+ table.columns
2534
+ .filter(function (it) { return it.comment; })
2535
+ .forEach(function (it) { return sql += "; COMMENT ON COLUMN " + _this.escapePath(table) + ".\"" + it.name + "\" IS " + _this.escapeComment(it.comment); });
2475
2536
  return new Query_1.Query(sql);
2476
2537
  };
2477
2538
  /**
@@ -2791,6 +2852,18 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
2791
2852
  });
2792
2853
  });
2793
2854
  };
2855
+ /**
2856
+ * Escapes a given comment so it's safe to include in a query.
2857
+ */
2858
+ PostgresQueryRunner.prototype.escapeComment = function (comment) {
2859
+ if (comment === undefined || comment.length === 0) {
2860
+ return 'NULL';
2861
+ }
2862
+ comment = comment
2863
+ .replace("'", "''")
2864
+ .replace("\0", ""); // Null bytes aren't allowed in comments
2865
+ return "'" + comment + "'";
2866
+ };
2794
2867
  /**
2795
2868
  * Escapes given table or view path.
2796
2869
  */
@@ -2852,6 +2925,22 @@ var PostgresQueryRunner = /** @class */ (function (_super) {
2852
2925
  c += " DEFAULT " + this.driver.uuidGenerator;
2853
2926
  return c;
2854
2927
  };
2928
+ /**
2929
+ * Checks if the PostgreSQL server has support for partitioned tables
2930
+ */
2931
+ PostgresQueryRunner.prototype.hasSupportForPartitionedTables = function () {
2932
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
2933
+ var result;
2934
+ return tslib_1.__generator(this, function (_a) {
2935
+ switch (_a.label) {
2936
+ case 0: return [4 /*yield*/, this.query("SELECT TRUE FROM information_schema.columns WHERE table_name = 'pg_class' and column_name = 'relispartition'")];
2937
+ case 1:
2938
+ result = _a.sent();
2939
+ return [2 /*return*/, result.length ? true : false];
2940
+ }
2941
+ });
2942
+ });
2943
+ };
2855
2944
  return PostgresQueryRunner;
2856
2945
  }(BaseQueryRunner_1.BaseQueryRunner));
2857
2946
  exports.PostgresQueryRunner = PostgresQueryRunner;