typeorm 0.3.18-dev.0f11739 → 0.3.18-dev.15bc887

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 (142) hide show
  1. package/browser/cache/DbQueryResultCache.js +3 -0
  2. package/browser/cache/DbQueryResultCache.js.map +1 -1
  3. package/browser/driver/cockroachdb/CockroachDriver.js +20 -10
  4. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  5. package/browser/driver/cockroachdb/CockroachQueryRunner.js +11 -2
  6. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  7. package/browser/driver/cordova/CordovaDriver.js +2 -2
  8. package/browser/driver/cordova/CordovaDriver.js.map +1 -1
  9. package/browser/driver/cordova/CordovaQueryRunner.js +8 -0
  10. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  11. package/browser/driver/expo/ExpoQueryRunner.js +9 -2
  12. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  13. package/browser/driver/mysql/MysqlQueryRunner.js +10 -2
  14. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  15. package/browser/driver/oracle/OracleQueryRunner.js +9 -1
  16. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  17. package/browser/driver/postgres/PostgresDriver.js +1 -4
  18. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  19. package/browser/driver/postgres/PostgresQueryRunner.js +9 -1
  20. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  21. package/browser/driver/react-native/ReactNativeQueryRunner.js +10 -2
  22. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  23. package/browser/driver/sap/SapQueryRunner.js +10 -4
  24. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  25. package/browser/driver/spanner/SpannerQueryRunner.js +7 -1
  26. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
  27. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  28. package/browser/driver/sqlite/SqliteQueryRunner.js +60 -46
  29. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  30. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +1 -1
  31. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  32. package/browser/driver/sqljs/SqljsQueryRunner.js +11 -3
  33. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  34. package/browser/driver/sqlserver/SqlServerQueryRunner.js +7 -1
  35. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  36. package/browser/find-options/FindOperatorType.d.ts +1 -1
  37. package/browser/find-options/FindOperatorType.js.map +1 -1
  38. package/browser/find-options/operator/Or.d.ts +2 -0
  39. package/browser/find-options/operator/Or.js +6 -0
  40. package/browser/find-options/operator/Or.js.map +1 -0
  41. package/browser/index.d.ts +1 -0
  42. package/browser/index.js +1 -0
  43. package/browser/index.js.map +1 -1
  44. package/browser/metadata/ColumnMetadata.js +4 -0
  45. package/browser/metadata/ColumnMetadata.js.map +1 -1
  46. package/browser/metadata/EntityMetadata.d.ts +3 -3
  47. package/browser/metadata/EntityMetadata.js +7 -3
  48. package/browser/metadata/EntityMetadata.js.map +1 -1
  49. package/browser/persistence/SubjectExecutor.js +1 -1
  50. package/browser/persistence/SubjectExecutor.js.map +1 -1
  51. package/browser/query-builder/QueryBuilder.js +9 -0
  52. package/browser/query-builder/QueryBuilder.js.map +1 -1
  53. package/browser/query-builder/QueryExpressionMap.d.ts +2 -1
  54. package/browser/query-builder/QueryExpressionMap.js +0 -4
  55. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  56. package/browser/query-builder/SelectQueryBuilder.js +1 -1
  57. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  58. package/browser/query-builder/WhereClause.d.ts +1 -1
  59. package/browser/query-builder/WhereClause.js.map +1 -1
  60. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +9 -0
  61. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +28 -0
  62. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  63. package/browser/subscriber/Broadcaster.d.ts +10 -0
  64. package/browser/subscriber/Broadcaster.js +46 -0
  65. package/browser/subscriber/Broadcaster.js.map +1 -1
  66. package/browser/subscriber/EntitySubscriberInterface.d.ts +9 -0
  67. package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
  68. package/browser/subscriber/event/QueryEvent.d.ts +50 -0
  69. package/browser/subscriber/event/QueryEvent.js +3 -0
  70. package/browser/subscriber/event/QueryEvent.js.map +1 -0
  71. package/cache/DbQueryResultCache.js +3 -0
  72. package/cache/DbQueryResultCache.js.map +1 -1
  73. package/driver/cockroachdb/CockroachDriver.js +20 -10
  74. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  75. package/driver/cockroachdb/CockroachQueryRunner.js +11 -2
  76. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  77. package/driver/cordova/CordovaDriver.js +2 -2
  78. package/driver/cordova/CordovaDriver.js.map +1 -1
  79. package/driver/cordova/CordovaQueryRunner.js +8 -0
  80. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  81. package/driver/expo/ExpoQueryRunner.js +9 -2
  82. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  83. package/driver/mysql/MysqlQueryRunner.js +10 -2
  84. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  85. package/driver/oracle/OracleQueryRunner.js +9 -1
  86. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  87. package/driver/postgres/PostgresDriver.js +1 -4
  88. package/driver/postgres/PostgresDriver.js.map +1 -1
  89. package/driver/postgres/PostgresQueryRunner.js +9 -1
  90. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  91. package/driver/react-native/ReactNativeQueryRunner.js +10 -2
  92. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  93. package/driver/sap/SapQueryRunner.js +10 -4
  94. package/driver/sap/SapQueryRunner.js.map +1 -1
  95. package/driver/spanner/SpannerQueryRunner.js +7 -1
  96. package/driver/spanner/SpannerQueryRunner.js.map +1 -1
  97. package/driver/sqlite/SqliteDriver.js.map +1 -1
  98. package/driver/sqlite/SqliteQueryRunner.js +60 -46
  99. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  100. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +1 -1
  101. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  102. package/driver/sqljs/SqljsQueryRunner.js +11 -3
  103. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  104. package/driver/sqlserver/SqlServerQueryRunner.js +7 -1
  105. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  106. package/find-options/FindOperatorType.d.ts +1 -1
  107. package/find-options/FindOperatorType.js.map +1 -1
  108. package/find-options/operator/Or.d.ts +2 -0
  109. package/find-options/operator/Or.js +10 -0
  110. package/find-options/operator/Or.js.map +1 -0
  111. package/index.d.ts +1 -0
  112. package/index.js +1 -0
  113. package/index.js.map +1 -1
  114. package/index.mjs +2 -0
  115. package/metadata/ColumnMetadata.js +4 -0
  116. package/metadata/ColumnMetadata.js.map +1 -1
  117. package/metadata/EntityMetadata.d.ts +3 -3
  118. package/metadata/EntityMetadata.js +7 -3
  119. package/metadata/EntityMetadata.js.map +1 -1
  120. package/package.json +1 -1
  121. package/persistence/SubjectExecutor.js +1 -1
  122. package/persistence/SubjectExecutor.js.map +1 -1
  123. package/query-builder/QueryBuilder.js +9 -0
  124. package/query-builder/QueryBuilder.js.map +1 -1
  125. package/query-builder/QueryExpressionMap.d.ts +2 -1
  126. package/query-builder/QueryExpressionMap.js +0 -4
  127. package/query-builder/QueryExpressionMap.js.map +1 -1
  128. package/query-builder/SelectQueryBuilder.js +1 -1
  129. package/query-builder/SelectQueryBuilder.js.map +1 -1
  130. package/query-builder/WhereClause.d.ts +1 -1
  131. package/query-builder/WhereClause.js.map +1 -1
  132. package/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +9 -0
  133. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +28 -0
  134. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  135. package/subscriber/Broadcaster.d.ts +10 -0
  136. package/subscriber/Broadcaster.js +46 -0
  137. package/subscriber/Broadcaster.js.map +1 -1
  138. package/subscriber/EntitySubscriberInterface.d.ts +9 -0
  139. package/subscriber/EntitySubscriberInterface.js.map +1 -1
  140. package/subscriber/event/QueryEvent.d.ts +50 -0
  141. package/subscriber/event/QueryEvent.js +4 -0
  142. package/subscriber/event/QueryEvent.js.map +1 -0
@@ -6,6 +6,7 @@ const AbstractSqliteQueryRunner_1 = require("../sqlite-abstract/AbstractSqliteQu
6
6
  const Broadcaster_1 = require("../../subscriber/Broadcaster");
7
7
  const QueryFailedError_1 = require("../../error/QueryFailedError");
8
8
  const QueryResult_1 = require("../../query-runner/QueryResult");
9
+ const BroadcasterResult_1 = require("../../subscriber/BroadcasterResult");
9
10
  /**
10
11
  * Runs queries on a single sqlite database connection.
11
12
  */
@@ -66,7 +67,9 @@ class SqljsQueryRunner extends AbstractSqliteQueryRunner_1.AbstractSqliteQueryRu
66
67
  throw new QueryRunnerAlreadyReleasedError_1.QueryRunnerAlreadyReleasedError();
67
68
  const command = query.trim().split(" ", 1)[0];
68
69
  const databaseConnection = this.driver.databaseConnection;
70
+ const broadcasterResult = new BroadcasterResult_1.BroadcasterResult();
69
71
  this.driver.connection.logger.logQuery(query, parameters, this);
72
+ this.broadcaster.broadcastBeforeQueryEvent(broadcasterResult, query, parameters);
70
73
  const queryStartTime = +new Date();
71
74
  let statement;
72
75
  try {
@@ -86,6 +89,7 @@ class SqljsQueryRunner extends AbstractSqliteQueryRunner_1.AbstractSqliteQueryRu
86
89
  while (statement.step()) {
87
90
  records.push(statement.getAsObject());
88
91
  }
92
+ this.broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, true, queryExecutionTime, records, undefined);
89
93
  const result = new QueryResult_1.QueryResult();
90
94
  result.affected = databaseConnection.getRowsModified();
91
95
  result.records = records;
@@ -101,12 +105,16 @@ class SqljsQueryRunner extends AbstractSqliteQueryRunner_1.AbstractSqliteQueryRu
101
105
  return result.raw;
102
106
  }
103
107
  }
104
- catch (e) {
108
+ catch (err) {
105
109
  if (statement) {
106
110
  statement.free();
107
111
  }
108
- this.driver.connection.logger.logQueryError(e, query, parameters, this);
109
- throw new QueryFailedError_1.QueryFailedError(query, parameters, e);
112
+ this.driver.connection.logger.logQueryError(err, query, parameters, this);
113
+ this.broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, false, undefined, undefined, err);
114
+ throw new QueryFailedError_1.QueryFailedError(query, parameters, err);
115
+ }
116
+ finally {
117
+ await broadcasterResult.wait();
110
118
  }
111
119
  }
112
120
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/driver/sqljs/SqljsQueryRunner.ts"],"names":[],"mappings":"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","file":"SqljsQueryRunner.js","sourcesContent":["import { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\"\nimport { SqljsDriver } from \"./SqljsDriver\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\n\n/**\n * Runs queries on a single sqlite database connection.\n */\nexport class SqljsQueryRunner extends AbstractSqliteQueryRunner {\n /**\n * Flag to determine if a modification has happened since the last time this query runner has requested a save.\n */\n private isDirty = false\n\n /**\n * Database driver used by connection.\n */\n driver: SqljsDriver\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: SqljsDriver) {\n super()\n this.driver = driver\n this.connection = driver.connection\n this.broadcaster = new Broadcaster(this)\n }\n\n // -------------------------------------------------------------------------\n // Public methods\n // -------------------------------------------------------------------------\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = OFF`)\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = ON`)\n }\n\n private async flush() {\n if (this.isDirty) {\n await this.driver.autoSave()\n this.isDirty = false\n }\n }\n\n async release(): Promise<void> {\n await this.flush()\n return super.release()\n }\n\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n async commitTransaction(): Promise<void> {\n await super.commitTransaction()\n if (!this.isTransactionActive) {\n await this.flush()\n }\n }\n\n /**\n * Executes a given SQL query.\n */\n async query(\n query: string,\n parameters: any[] = [],\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n const command = query.trim().split(\" \", 1)[0]\n\n const databaseConnection = this.driver.databaseConnection\n this.driver.connection.logger.logQuery(query, parameters, this)\n const queryStartTime = +new Date()\n let statement: any\n try {\n statement = databaseConnection.prepare(query)\n if (parameters) {\n parameters = parameters.map((p) =>\n typeof p !== \"undefined\" ? p : null,\n )\n\n statement.bind(parameters)\n }\n\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = +new Date()\n const queryExecutionTime = queryEndTime - queryStartTime\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n )\n this.driver.connection.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n\n const records: any[] = []\n\n while (statement.step()) {\n records.push(statement.getAsObject())\n }\n\n const result = new QueryResult()\n\n result.affected = databaseConnection.getRowsModified()\n result.records = records\n result.raw = records\n\n statement.free()\n\n if (command !== \"SELECT\") {\n this.isDirty = true\n }\n\n if (useStructuredResult) {\n return result\n } else {\n return result.raw\n }\n } catch (e) {\n if (statement) {\n statement.free()\n }\n\n this.driver.connection.logger.logQueryError(\n e,\n query,\n parameters,\n this,\n )\n throw new QueryFailedError(query, parameters, e)\n }\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/driver/sqljs/SqljsQueryRunner.ts"],"names":[],"mappings":"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","file":"SqljsQueryRunner.js","sourcesContent":["import { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\"\nimport { SqljsDriver } from \"./SqljsDriver\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\"\n\n/**\n * Runs queries on a single sqlite database connection.\n */\nexport class SqljsQueryRunner extends AbstractSqliteQueryRunner {\n /**\n * Flag to determine if a modification has happened since the last time this query runner has requested a save.\n */\n private isDirty = false\n\n /**\n * Database driver used by connection.\n */\n driver: SqljsDriver\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: SqljsDriver) {\n super()\n this.driver = driver\n this.connection = driver.connection\n this.broadcaster = new Broadcaster(this)\n }\n\n // -------------------------------------------------------------------------\n // Public methods\n // -------------------------------------------------------------------------\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = OFF`)\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = ON`)\n }\n\n private async flush() {\n if (this.isDirty) {\n await this.driver.autoSave()\n this.isDirty = false\n }\n }\n\n async release(): Promise<void> {\n await this.flush()\n return super.release()\n }\n\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n async commitTransaction(): Promise<void> {\n await super.commitTransaction()\n if (!this.isTransactionActive) {\n await this.flush()\n }\n }\n\n /**\n * Executes a given SQL query.\n */\n async query(\n query: string,\n parameters: any[] = [],\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n const command = query.trim().split(\" \", 1)[0]\n\n const databaseConnection = this.driver.databaseConnection\n const broadcasterResult = new BroadcasterResult()\n\n this.driver.connection.logger.logQuery(query, parameters, this)\n this.broadcaster.broadcastBeforeQueryEvent(\n broadcasterResult,\n query,\n parameters,\n )\n\n const queryStartTime = +new Date()\n let statement: any\n try {\n statement = databaseConnection.prepare(query)\n if (parameters) {\n parameters = parameters.map((p) =>\n typeof p !== \"undefined\" ? p : null,\n )\n\n statement.bind(parameters)\n }\n\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = +new Date()\n const queryExecutionTime = queryEndTime - queryStartTime\n\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n )\n this.driver.connection.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n\n const records: any[] = []\n\n while (statement.step()) {\n records.push(statement.getAsObject())\n }\n\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n true,\n queryExecutionTime,\n records,\n undefined,\n )\n\n const result = new QueryResult()\n\n result.affected = databaseConnection.getRowsModified()\n result.records = records\n result.raw = records\n\n statement.free()\n\n if (command !== \"SELECT\") {\n this.isDirty = true\n }\n\n if (useStructuredResult) {\n return result\n } else {\n return result.raw\n }\n } catch (err) {\n if (statement) {\n statement.free()\n }\n\n this.driver.connection.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n false,\n undefined,\n undefined,\n err,\n )\n\n throw new QueryFailedError(query, parameters, err)\n } finally {\n await broadcasterResult.wait()\n }\n }\n}\n"],"sourceRoot":"../.."}
@@ -20,6 +20,7 @@ const error_1 = require("../../error");
20
20
  const QueryLock_1 = require("../../query-runner/QueryLock");
21
21
  const MetadataTableType_1 = require("../types/MetadataTableType");
22
22
  const InstanceChecker_1 = require("../../util/InstanceChecker");
23
+ const BroadcasterResult_1 = require("../../subscriber/BroadcasterResult");
23
24
  /**
24
25
  * Runs queries on a single SQL Server database connection.
25
26
  */
@@ -163,8 +164,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
163
164
  if (this.isReleased)
164
165
  throw new QueryRunnerAlreadyReleasedError_1.QueryRunnerAlreadyReleasedError();
165
166
  const release = await this.lock.acquire();
167
+ const broadcasterResult = new BroadcasterResult_1.BroadcasterResult();
166
168
  try {
167
169
  this.driver.connection.logger.logQuery(query, parameters, this);
170
+ this.broadcaster.broadcastBeforeQueryEvent(broadcasterResult, query, parameters);
168
171
  const pool = await (this.mode === "slave"
169
172
  ? this.driver.obtainSlaveConnection()
170
173
  : this.driver.obtainMasterConnection());
@@ -193,6 +196,7 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
193
196
  const maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime;
194
197
  const queryEndTime = +new Date();
195
198
  const queryExecutionTime = queryEndTime - queryStartTime;
199
+ this.broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, true, queryExecutionTime, raw, undefined);
196
200
  if (maxQueryExecutionTime &&
197
201
  queryExecutionTime > maxQueryExecutionTime) {
198
202
  this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);
@@ -228,9 +232,11 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
228
232
  }
229
233
  catch (err) {
230
234
  this.driver.connection.logger.logQueryError(err, query, parameters, this);
235
+ this.broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, false, undefined, undefined, err);
231
236
  throw err;
232
237
  }
233
238
  finally {
239
+ await broadcasterResult.wait();
234
240
  release();
235
241
  }
236
242
  }
@@ -1925,7 +1931,7 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1925
1931
  ? "STORED"
1926
1932
  : "VIRTUAL";
1927
1933
  // We cannot relay on information_schema.columns.generation_expression, because it is formatted different.
1928
- const asExpressionQuery = await this.selectTypeormMetadataSql({
1934
+ const asExpressionQuery = this.selectTypeormMetadataSql({
1929
1935
  database: dbTable["TABLE_CATALOG"],
1930
1936
  schema: dbTable["TABLE_SCHEMA"],
1931
1937
  table: dbTable["TABLE_NAME"],