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
@@ -3,6 +3,7 @@ import { AbstractSqliteQueryRunner } from "../sqlite-abstract/AbstractSqliteQuer
3
3
  import { Broadcaster } from "../../subscriber/Broadcaster";
4
4
  import { QueryFailedError } from "../../error/QueryFailedError";
5
5
  import { QueryResult } from "../../query-runner/QueryResult";
6
+ import { BroadcasterResult } from "../../subscriber/BroadcasterResult";
6
7
  /**
7
8
  * Runs queries on a single sqlite database connection.
8
9
  */
@@ -63,7 +64,9 @@ export class SqljsQueryRunner extends AbstractSqliteQueryRunner {
63
64
  throw new QueryRunnerAlreadyReleasedError();
64
65
  const command = query.trim().split(" ", 1)[0];
65
66
  const databaseConnection = this.driver.databaseConnection;
67
+ const broadcasterResult = new BroadcasterResult();
66
68
  this.driver.connection.logger.logQuery(query, parameters, this);
69
+ this.broadcaster.broadcastBeforeQueryEvent(broadcasterResult, query, parameters);
67
70
  const queryStartTime = +new Date();
68
71
  let statement;
69
72
  try {
@@ -83,6 +86,7 @@ export class SqljsQueryRunner extends AbstractSqliteQueryRunner {
83
86
  while (statement.step()) {
84
87
  records.push(statement.getAsObject());
85
88
  }
89
+ this.broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, true, queryExecutionTime, records, undefined);
86
90
  const result = new QueryResult();
87
91
  result.affected = databaseConnection.getRowsModified();
88
92
  result.records = records;
@@ -98,12 +102,16 @@ export class SqljsQueryRunner extends AbstractSqliteQueryRunner {
98
102
  return result.raw;
99
103
  }
100
104
  }
101
- catch (e) {
105
+ catch (err) {
102
106
  if (statement) {
103
107
  statement.free();
104
108
  }
105
- this.driver.connection.logger.logQueryError(e, query, parameters, this);
106
- throw new QueryFailedError(query, parameters, e);
109
+ this.driver.connection.logger.logQueryError(err, query, parameters, this);
110
+ this.broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, false, undefined, undefined, err);
111
+ throw new QueryFailedError(query, parameters, err);
112
+ }
113
+ finally {
114
+ await broadcasterResult.wait();
107
115
  }
108
116
  }
109
117
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/driver/sqljs/SqljsQueryRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,6CAA6C,CAAA;AAC7F,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAA;AAExF,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAE5D;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,yBAAyB;IAW3D,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YAAY,MAAmB;QAC3B,KAAK,EAAE,CAAA;QAfX;;WAEG;QACK,YAAO,GAAG,KAAK,CAAA;QAanB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;IAC5C,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,eAAe;QACjB,MAAM,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAChB,MAAM,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAChD,CAAC;IAEO,KAAK,CAAC,KAAK;QACf,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;YAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;SACvB;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QAClB,OAAO,KAAK,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB;QACnB,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAA;QAC/B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC3B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;SACrB;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CACP,KAAa,EACb,aAAoB,EAAE,EACtB,mBAAmB,GAAG,KAAK;QAE3B,IAAI,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,+BAA+B,EAAE,CAAA;QAEhE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAE7C,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAA;QACzD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;QAC/D,MAAM,cAAc,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;QAClC,IAAI,SAAc,CAAA;QAClB,IAAI;YACA,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAC7C,IAAI,UAAU,EAAE;gBACZ,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9B,OAAO,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACtC,CAAA;gBAED,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;aAC7B;YAED,oDAAoD;YACpD,MAAM,qBAAqB,GACvB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAA;YAC7C,MAAM,YAAY,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;YAChC,MAAM,kBAAkB,GAAG,YAAY,GAAG,cAAc,CAAA;YACxD,IACI,qBAAqB;gBACrB,kBAAkB,GAAG,qBAAqB;gBAE1C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CACtC,kBAAkB,EAClB,KAAK,EACL,UAAU,EACV,IAAI,CACP,CAAA;YAEL,MAAM,OAAO,GAAU,EAAE,CAAA;YAEzB,OAAO,SAAS,CAAC,IAAI,EAAE,EAAE;gBACrB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;aACxC;YAED,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAA;YAEhC,MAAM,CAAC,QAAQ,GAAG,kBAAkB,CAAC,eAAe,EAAE,CAAA;YACtD,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;YACxB,MAAM,CAAC,GAAG,GAAG,OAAO,CAAA;YAEpB,SAAS,CAAC,IAAI,EAAE,CAAA;YAEhB,IAAI,OAAO,KAAK,QAAQ,EAAE;gBACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;aACtB;YAED,IAAI,mBAAmB,EAAE;gBACrB,OAAO,MAAM,CAAA;aAChB;iBAAM;gBACH,OAAO,MAAM,CAAC,GAAG,CAAA;aACpB;SACJ;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,SAAS,EAAE;gBACX,SAAS,CAAC,IAAI,EAAE,CAAA;aACnB;YAED,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CACvC,CAAC,EACD,KAAK,EACL,UAAU,EACV,IAAI,CACP,CAAA;YACD,MAAM,IAAI,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;SACnD;IACL,CAAC;CACJ","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":["../browser/src/driver/sqljs/SqljsQueryRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,6CAA6C,CAAA;AAC7F,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAA;AAExF,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAEtE;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,yBAAyB;IAW3D,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YAAY,MAAmB;QAC3B,KAAK,EAAE,CAAA;QAfX;;WAEG;QACK,YAAO,GAAG,KAAK,CAAA;QAanB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;IAC5C,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,eAAe;QACjB,MAAM,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAChB,MAAM,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAChD,CAAC;IAEO,KAAK,CAAC,KAAK;QACf,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;YAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;SACvB;IACL,CAAC;IAED,KAAK,CAAC,OAAO;QACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QAClB,OAAO,KAAK,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB;QACnB,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAA;QAC/B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC3B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;SACrB;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CACP,KAAa,EACb,aAAoB,EAAE,EACtB,mBAAmB,GAAG,KAAK;QAE3B,IAAI,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,+BAA+B,EAAE,CAAA;QAEhE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAE7C,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAA;QACzD,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAA;QAEjD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;QAC/D,IAAI,CAAC,WAAW,CAAC,yBAAyB,CACtC,iBAAiB,EACjB,KAAK,EACL,UAAU,CACb,CAAA;QAED,MAAM,cAAc,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;QAClC,IAAI,SAAc,CAAA;QAClB,IAAI;YACA,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAC7C,IAAI,UAAU,EAAE;gBACZ,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9B,OAAO,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACtC,CAAA;gBAED,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;aAC7B;YAED,oDAAoD;YACpD,MAAM,qBAAqB,GACvB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAA;YAC7C,MAAM,YAAY,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;YAChC,MAAM,kBAAkB,GAAG,YAAY,GAAG,cAAc,CAAA;YAExD,IACI,qBAAqB;gBACrB,kBAAkB,GAAG,qBAAqB;gBAE1C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CACtC,kBAAkB,EAClB,KAAK,EACL,UAAU,EACV,IAAI,CACP,CAAA;YAEL,MAAM,OAAO,GAAU,EAAE,CAAA;YAEzB,OAAO,SAAS,CAAC,IAAI,EAAE,EAAE;gBACrB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;aACxC;YAED,IAAI,CAAC,WAAW,CAAC,wBAAwB,CACrC,iBAAiB,EACjB,KAAK,EACL,UAAU,EACV,IAAI,EACJ,kBAAkB,EAClB,OAAO,EACP,SAAS,CACZ,CAAA;YAED,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAA;YAEhC,MAAM,CAAC,QAAQ,GAAG,kBAAkB,CAAC,eAAe,EAAE,CAAA;YACtD,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;YACxB,MAAM,CAAC,GAAG,GAAG,OAAO,CAAA;YAEpB,SAAS,CAAC,IAAI,EAAE,CAAA;YAEhB,IAAI,OAAO,KAAK,QAAQ,EAAE;gBACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;aACtB;YAED,IAAI,mBAAmB,EAAE;gBACrB,OAAO,MAAM,CAAA;aAChB;iBAAM;gBACH,OAAO,MAAM,CAAC,GAAG,CAAA;aACpB;SACJ;QAAC,OAAO,GAAG,EAAE;YACV,IAAI,SAAS,EAAE;gBACX,SAAS,CAAC,IAAI,EAAE,CAAA;aACnB;YAED,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CACvC,GAAG,EACH,KAAK,EACL,UAAU,EACV,IAAI,CACP,CAAA;YACD,IAAI,CAAC,WAAW,CAAC,wBAAwB,CACrC,iBAAiB,EACjB,KAAK,EACL,UAAU,EACV,KAAK,EACL,SAAS,EACT,SAAS,EACT,GAAG,CACN,CAAA;YAED,MAAM,IAAI,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;SACrD;gBAAS;YACN,MAAM,iBAAiB,CAAC,IAAI,EAAE,CAAA;SACjC;IACL,CAAC;CACJ","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":"../.."}
@@ -17,6 +17,7 @@ import { TypeORMError } from "../../error";
17
17
  import { QueryLock } from "../../query-runner/QueryLock";
18
18
  import { MetadataTableType } from "../types/MetadataTableType";
19
19
  import { InstanceChecker } from "../../util/InstanceChecker";
20
+ import { BroadcasterResult } from "../../subscriber/BroadcasterResult";
20
21
  /**
21
22
  * Runs queries on a single SQL Server database connection.
22
23
  */
@@ -160,8 +161,10 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
160
161
  if (this.isReleased)
161
162
  throw new QueryRunnerAlreadyReleasedError();
162
163
  const release = await this.lock.acquire();
164
+ const broadcasterResult = new BroadcasterResult();
163
165
  try {
164
166
  this.driver.connection.logger.logQuery(query, parameters, this);
167
+ this.broadcaster.broadcastBeforeQueryEvent(broadcasterResult, query, parameters);
165
168
  const pool = await (this.mode === "slave"
166
169
  ? this.driver.obtainSlaveConnection()
167
170
  : this.driver.obtainMasterConnection());
@@ -190,6 +193,7 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
190
193
  const maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime;
191
194
  const queryEndTime = +new Date();
192
195
  const queryExecutionTime = queryEndTime - queryStartTime;
196
+ this.broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, true, queryExecutionTime, raw, undefined);
193
197
  if (maxQueryExecutionTime &&
194
198
  queryExecutionTime > maxQueryExecutionTime) {
195
199
  this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);
@@ -225,9 +229,11 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
225
229
  }
226
230
  catch (err) {
227
231
  this.driver.connection.logger.logQueryError(err, query, parameters, this);
232
+ this.broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, false, undefined, undefined, err);
228
233
  throw err;
229
234
  }
230
235
  finally {
236
+ await broadcasterResult.wait();
231
237
  release();
232
238
  }
233
239
  }
@@ -1922,7 +1928,7 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
1922
1928
  ? "STORED"
1923
1929
  : "VIRTUAL";
1924
1930
  // We cannot relay on information_schema.columns.generation_expression, because it is formatted different.
1925
- const asExpressionQuery = await this.selectTypeormMetadataSql({
1931
+ const asExpressionQuery = this.selectTypeormMetadataSql({
1926
1932
  database: dbTable["TABLE_CATALOG"],
1927
1933
  schema: dbTable["TABLE_SCHEMA"],
1928
1934
  table: dbTable["TABLE_NAME"],