typeorm 0.2.40-dev.e80f97d → 0.2.41-dev.2d0abe7

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 (101) hide show
  1. package/browser/cache/DbQueryResultCache.js +12 -3
  2. package/browser/cache/DbQueryResultCache.js.map +1 -1
  3. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +33 -39
  4. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  5. package/browser/driver/cockroachdb/CockroachQueryRunner.js +24 -30
  6. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  7. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  8. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  9. package/browser/driver/mongodb/MongoQueryRunner.d.ts +2 -0
  10. package/browser/driver/mongodb/MongoQueryRunner.js +3 -0
  11. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  12. package/browser/driver/mysql/MysqlQueryRunner.js +37 -39
  13. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  14. package/browser/driver/oracle/OracleDriver.js +1 -1
  15. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  16. package/browser/driver/oracle/OracleQueryRunner.js +13 -24
  17. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  18. package/browser/driver/postgres/PostgresDriver.d.ts +1 -0
  19. package/browser/driver/postgres/PostgresDriver.js +16 -7
  20. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  21. package/browser/driver/postgres/PostgresQueryRunner.d.ts +5 -0
  22. package/browser/driver/postgres/PostgresQueryRunner.js +314 -135
  23. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  24. package/browser/driver/sap/SapQueryRunner.js +36 -42
  25. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  26. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +8 -14
  27. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  28. package/browser/driver/sqlserver/SqlServerQueryRunner.js +31 -33
  29. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  30. package/browser/driver/types/MetadataTableType.d.ts +5 -0
  31. package/browser/driver/types/MetadataTableType.js +8 -0
  32. package/browser/driver/types/MetadataTableType.js.map +1 -0
  33. package/browser/find-options/FindTreeOptions.d.ts +5 -1
  34. package/browser/find-options/FindTreeOptions.js.map +1 -1
  35. package/browser/migration/MigrationExecutor.js +55 -48
  36. package/browser/migration/MigrationExecutor.js.map +1 -1
  37. package/browser/query-runner/BaseQueryRunner.d.ts +23 -0
  38. package/browser/query-runner/BaseQueryRunner.js +37 -0
  39. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  40. package/browser/query-runner/QueryRunner.d.ts +5 -0
  41. package/browser/query-runner/QueryRunner.js.map +1 -1
  42. package/browser/repository/FindTreesOptions.d.ts +9 -0
  43. package/browser/repository/FindTreesOptions.js +3 -0
  44. package/browser/repository/FindTreesOptions.js.map +1 -0
  45. package/browser/repository/TreeRepository.d.ts +4 -1
  46. package/browser/repository/TreeRepository.js +8 -4
  47. package/browser/repository/TreeRepository.js.map +1 -1
  48. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +5 -1
  49. package/browser/schema-builder/RdbmsSchemaBuilder.js +58 -49
  50. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  51. package/cache/DbQueryResultCache.js +12 -3
  52. package/cache/DbQueryResultCache.js.map +1 -1
  53. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +33 -39
  54. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  55. package/driver/cockroachdb/CockroachQueryRunner.js +24 -30
  56. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  57. package/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  58. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  59. package/driver/mongodb/MongoQueryRunner.d.ts +2 -0
  60. package/driver/mongodb/MongoQueryRunner.js +3 -0
  61. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  62. package/driver/mysql/MysqlQueryRunner.js +37 -39
  63. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  64. package/driver/oracle/OracleDriver.js +1 -1
  65. package/driver/oracle/OracleDriver.js.map +1 -1
  66. package/driver/oracle/OracleQueryRunner.js +13 -24
  67. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  68. package/driver/postgres/PostgresDriver.d.ts +1 -0
  69. package/driver/postgres/PostgresDriver.js +16 -7
  70. package/driver/postgres/PostgresDriver.js.map +1 -1
  71. package/driver/postgres/PostgresQueryRunner.d.ts +5 -0
  72. package/driver/postgres/PostgresQueryRunner.js +314 -135
  73. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  74. package/driver/sap/SapQueryRunner.js +36 -42
  75. package/driver/sap/SapQueryRunner.js.map +1 -1
  76. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +8 -14
  77. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  78. package/driver/sqlserver/SqlServerQueryRunner.js +31 -33
  79. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  80. package/driver/types/MetadataTableType.d.ts +5 -0
  81. package/driver/types/MetadataTableType.js +11 -0
  82. package/driver/types/MetadataTableType.js.map +1 -0
  83. package/find-options/FindTreeOptions.d.ts +5 -1
  84. package/find-options/FindTreeOptions.js.map +1 -1
  85. package/migration/MigrationExecutor.js +55 -48
  86. package/migration/MigrationExecutor.js.map +1 -1
  87. package/package.json +1 -1
  88. package/query-runner/BaseQueryRunner.d.ts +23 -0
  89. package/query-runner/BaseQueryRunner.js +37 -0
  90. package/query-runner/BaseQueryRunner.js.map +1 -1
  91. package/query-runner/QueryRunner.d.ts +5 -0
  92. package/query-runner/QueryRunner.js.map +1 -1
  93. package/repository/FindTreesOptions.d.ts +9 -0
  94. package/repository/FindTreesOptions.js +4 -0
  95. package/repository/FindTreesOptions.js.map +1 -0
  96. package/repository/TreeRepository.d.ts +4 -1
  97. package/repository/TreeRepository.js +7 -3
  98. package/repository/TreeRepository.js.map +1 -1
  99. package/schema-builder/RdbmsSchemaBuilder.d.ts +5 -1
  100. package/schema-builder/RdbmsSchemaBuilder.js +58 -49
  101. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cache/DbQueryResultCache.ts"],"names":[],"mappings":"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","file":"DbQueryResultCache.js","sourcesContent":["import {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {Connection} from \"../connection/Connection\";\nimport {OracleDriver} from \"../driver/oracle/OracleDriver\";\nimport {MssqlParameter} from \"../driver/sqlserver/MssqlParameter\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {Table} from \"../schema-builder/table/Table\";\nimport {QueryResultCache} from \"./QueryResultCache\";\nimport {QueryResultCacheOptions} from \"./QueryResultCacheOptions\";\n\n/**\n * Caches query result into current database, into separate table called \"query-result-cache\".\n */\nexport class DbQueryResultCache implements QueryResultCache {\n\n // -------------------------------------------------------------------------\n // Private properties\n // -------------------------------------------------------------------------\n\n private queryResultCacheTable: string;\n\n private queryResultCacheDatabase?: string;\n\n private queryResultCacheSchema?: string;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection) {\n\n const { schema } = (this.connection.driver.options as any);\n const database = this.connection.driver.database;\n const cacheOptions = typeof this.connection.options.cache === \"object\" ? this.connection.options.cache : {};\n const cacheTableName = cacheOptions.tableName || \"query-result-cache\";\n\n this.queryResultCacheDatabase = database;\n this.queryResultCacheSchema = schema;\n this.queryResultCacheTable = this.connection.driver.buildTableName(cacheTableName, schema, database);\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a connection with given cache provider.\n */\n async connect(): Promise<void> {\n }\n\n /**\n * Disconnects with given cache provider.\n */\n async disconnect(): Promise<void> {\n }\n\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n async synchronize(queryRunner?: QueryRunner): Promise<void> {\n queryRunner = this.getQueryRunner(queryRunner);\n const driver = this.connection.driver;\n const tableExist = await queryRunner.hasTable(this.queryResultCacheTable); // todo: table name should be configurable\n if (tableExist)\n return;\n\n await queryRunner.createTable(new Table(\n {\n database: this.queryResultCacheDatabase,\n schema: this.queryResultCacheSchema,\n name: this.queryResultCacheTable,\n columns: [\n {\n name: \"id\",\n isPrimary: true,\n isNullable: false,\n type: driver.normalizeType({type: driver.mappedDataTypes.cacheId}),\n generationStrategy: \"increment\",\n isGenerated: true\n },\n {\n name: \"identifier\",\n type: driver.normalizeType({type: driver.mappedDataTypes.cacheIdentifier}),\n isNullable: true\n },\n {\n name: \"time\",\n type: driver.normalizeType({type: driver.mappedDataTypes.cacheTime}),\n isPrimary: false,\n isNullable: false\n },\n {\n name: \"duration\",\n type: driver.normalizeType({type: driver.mappedDataTypes.cacheDuration}),\n isPrimary: false,\n isNullable: false\n },\n {\n name: \"query\",\n type: driver.normalizeType({type: driver.mappedDataTypes.cacheQuery}),\n isPrimary: false,\n isNullable: false\n },\n {\n name: \"result\",\n type: driver.normalizeType({type: driver.mappedDataTypes.cacheResult}),\n isNullable: false\n },\n ]\n },\n ));\n }\n\n /**\n * Caches given query result.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n getFromCache(options: QueryResultCacheOptions, queryRunner?: QueryRunner): Promise<QueryResultCacheOptions|undefined> {\n queryRunner = this.getQueryRunner(queryRunner);\n const qb = this.connection\n .createQueryBuilder(queryRunner)\n .select()\n .from(this.queryResultCacheTable, \"cache\");\n\n if (options.identifier) {\n return qb\n .where(`${qb.escape(\"cache\")}.${qb.escape(\"identifier\")} = :identifier`)\n .setParameters({ identifier: this.connection.driver instanceof SqlServerDriver ? new MssqlParameter(options.identifier, \"nvarchar\") : options.identifier })\n .getRawOne();\n\n } else if (options.query) {\n if (this.connection.driver instanceof OracleDriver) {\n return qb\n .where(`dbms_lob.compare(${qb.escape(\"cache\")}.${qb.escape(\"query\")}, :query) = 0`, { query: options.query })\n .getRawOne();\n }\n\n return qb\n .where(`${qb.escape(\"cache\")}.${qb.escape(\"query\")} = :query`)\n .setParameters({ query: this.connection.driver instanceof SqlServerDriver ? new MssqlParameter(options.query, \"nvarchar\") : options.query })\n .getRawOne();\n }\n\n return Promise.resolve(undefined);\n }\n\n /**\n * Checks if cache is expired or not.\n */\n isExpired(savedCache: QueryResultCacheOptions): boolean {\n const duration = typeof savedCache.duration === \"string\" ? parseInt(savedCache.duration) : savedCache.duration;\n return ((typeof savedCache.time === \"string\" ? parseInt(savedCache.time as any) : savedCache.time)! + duration) < new Date().getTime();\n }\n\n /**\n * Stores given query result in the cache.\n */\n async storeInCache(options: QueryResultCacheOptions, savedCache: QueryResultCacheOptions|undefined, queryRunner?: QueryRunner): Promise<void> {\n queryRunner = this.getQueryRunner(queryRunner);\n\n let insertedValues: ObjectLiteral = options;\n if (this.connection.driver instanceof SqlServerDriver) { // todo: bad abstraction, re-implement this part, probably better if we create an entity metadata for cache table\n insertedValues = {\n identifier: new MssqlParameter(options.identifier, \"nvarchar\"),\n time: new MssqlParameter(options.time, \"bigint\"),\n duration: new MssqlParameter(options.duration, \"int\"),\n query: new MssqlParameter(options.query, \"nvarchar\"),\n result: new MssqlParameter(options.result, \"nvarchar\"),\n };\n }\n\n if (savedCache && savedCache.identifier) { // if exist then update\n const qb = queryRunner.manager\n .createQueryBuilder()\n .update(this.queryResultCacheTable)\n .set(insertedValues);\n\n qb.where(`${qb.escape(\"identifier\")} = :condition`, { condition: insertedValues.identifier });\n await qb.execute();\n\n } else if (savedCache && savedCache.query) { // if exist then update\n const qb = queryRunner.manager\n .createQueryBuilder()\n .update(this.queryResultCacheTable)\n .set(insertedValues);\n\n if (this.connection.driver instanceof OracleDriver) {\n qb.where(`dbms_lob.compare(\"query\", :condition) = 0`, { condition: insertedValues.query });\n\n } else {\n qb.where(`${qb.escape(\"query\")} = :condition`, { condition: insertedValues.query });\n }\n\n await qb.execute();\n\n } else { // otherwise insert\n await queryRunner.manager\n .createQueryBuilder()\n .insert()\n .into(this.queryResultCacheTable)\n .values(insertedValues)\n .execute();\n }\n }\n\n /**\n * Clears everything stored in the cache.\n */\n async clear(queryRunner: QueryRunner): Promise<void> {\n return this.getQueryRunner(queryRunner).clearTable(this.queryResultCacheTable);\n }\n\n /**\n * Removes all cached results by given identifiers from cache.\n */\n async remove(identifiers: string[], queryRunner?: QueryRunner): Promise<void> {\n await Promise.all(identifiers.map(identifier => {\n const qb = this.getQueryRunner(queryRunner).manager.createQueryBuilder();\n return qb.delete()\n .from(this.queryResultCacheTable)\n .where(`${qb.escape(\"identifier\")} = :identifier`, {identifier})\n .execute();\n }));\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets a query runner to work with.\n */\n protected getQueryRunner(queryRunner: QueryRunner|undefined): QueryRunner {\n if (queryRunner)\n return queryRunner;\n\n return this.connection.createQueryRunner();\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/cache/DbQueryResultCache.ts"],"names":[],"mappings":"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","file":"DbQueryResultCache.js","sourcesContent":["import {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {Connection} from \"../connection/Connection\";\nimport {OracleDriver} from \"../driver/oracle/OracleDriver\";\nimport {MssqlParameter} from \"../driver/sqlserver/MssqlParameter\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {Table} from \"../schema-builder/table/Table\";\nimport {QueryResultCache} from \"./QueryResultCache\";\nimport {QueryResultCacheOptions} from \"./QueryResultCacheOptions\";\n\n/**\n * Caches query result into current database, into separate table called \"query-result-cache\".\n */\nexport class DbQueryResultCache implements QueryResultCache {\n\n // -------------------------------------------------------------------------\n // Private properties\n // -------------------------------------------------------------------------\n\n private queryResultCacheTable: string;\n\n private queryResultCacheDatabase?: string;\n\n private queryResultCacheSchema?: string;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection) {\n\n const { schema } = (this.connection.driver.options as any);\n const database = this.connection.driver.database;\n const cacheOptions = typeof this.connection.options.cache === \"object\" ? this.connection.options.cache : {};\n const cacheTableName = cacheOptions.tableName || \"query-result-cache\";\n\n this.queryResultCacheDatabase = database;\n this.queryResultCacheSchema = schema;\n this.queryResultCacheTable = this.connection.driver.buildTableName(cacheTableName, schema, database);\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a connection with given cache provider.\n */\n async connect(): Promise<void> {\n }\n\n /**\n * Disconnects with given cache provider.\n */\n async disconnect(): Promise<void> {\n }\n\n /**\n * Creates table for storing cache if it does not exist yet.\n */\n async synchronize(queryRunner?: QueryRunner): Promise<void> {\n queryRunner = this.getQueryRunner(queryRunner);\n const driver = this.connection.driver;\n const tableExist = await queryRunner.hasTable(this.queryResultCacheTable); // todo: table name should be configurable\n if (tableExist)\n return;\n\n await queryRunner.createTable(new Table(\n {\n database: this.queryResultCacheDatabase,\n schema: this.queryResultCacheSchema,\n name: this.queryResultCacheTable,\n columns: [\n {\n name: \"id\",\n isPrimary: true,\n isNullable: false,\n type: driver.normalizeType({type: driver.mappedDataTypes.cacheId}),\n generationStrategy: \"increment\",\n isGenerated: true\n },\n {\n name: \"identifier\",\n type: driver.normalizeType({type: driver.mappedDataTypes.cacheIdentifier}),\n isNullable: true\n },\n {\n name: \"time\",\n type: driver.normalizeType({type: driver.mappedDataTypes.cacheTime}),\n isPrimary: false,\n isNullable: false\n },\n {\n name: \"duration\",\n type: driver.normalizeType({type: driver.mappedDataTypes.cacheDuration}),\n isPrimary: false,\n isNullable: false\n },\n {\n name: \"query\",\n type: driver.normalizeType({type: driver.mappedDataTypes.cacheQuery}),\n isPrimary: false,\n isNullable: false\n },\n {\n name: \"result\",\n type: driver.normalizeType({type: driver.mappedDataTypes.cacheResult}),\n isNullable: false\n },\n ]\n },\n ));\n }\n\n /**\n * Caches given query result.\n * Returns cache result if found.\n * Returns undefined if result is not cached.\n */\n getFromCache(options: QueryResultCacheOptions, queryRunner?: QueryRunner): Promise<QueryResultCacheOptions|undefined> {\n queryRunner = this.getQueryRunner(queryRunner);\n const qb = this.connection\n .createQueryBuilder(queryRunner)\n .select()\n .from(this.queryResultCacheTable, \"cache\");\n\n if (options.identifier) {\n return qb\n .where(`${qb.escape(\"cache\")}.${qb.escape(\"identifier\")} = :identifier`)\n .setParameters({ identifier: this.connection.driver instanceof SqlServerDriver ? new MssqlParameter(options.identifier, \"nvarchar\") : options.identifier })\n .getRawOne();\n\n } else if (options.query) {\n if (this.connection.driver instanceof OracleDriver) {\n return qb\n .where(`dbms_lob.compare(${qb.escape(\"cache\")}.${qb.escape(\"query\")}, :query) = 0`, { query: options.query })\n .getRawOne();\n }\n\n return qb\n .where(`${qb.escape(\"cache\")}.${qb.escape(\"query\")} = :query`)\n .setParameters({ query: this.connection.driver instanceof SqlServerDriver ? new MssqlParameter(options.query, \"nvarchar\") : options.query })\n .getRawOne();\n }\n\n return Promise.resolve(undefined);\n }\n\n /**\n * Checks if cache is expired or not.\n */\n isExpired(savedCache: QueryResultCacheOptions): boolean {\n const duration = typeof savedCache.duration === \"string\" ? parseInt(savedCache.duration) : savedCache.duration;\n return ((typeof savedCache.time === \"string\" ? parseInt(savedCache.time as any) : savedCache.time)! + duration) < new Date().getTime();\n }\n\n /**\n * Stores given query result in the cache.\n */\n async storeInCache(options: QueryResultCacheOptions, savedCache: QueryResultCacheOptions|undefined, queryRunner?: QueryRunner): Promise<void> {\n const shouldCreateQueryRunner = queryRunner === undefined || queryRunner?.getReplicationMode() === \"slave\";\n\n if (queryRunner === undefined || shouldCreateQueryRunner) {\n queryRunner = this.connection.createQueryRunner(\"master\");\n }\n\n let insertedValues: ObjectLiteral = options;\n if (this.connection.driver instanceof SqlServerDriver) { // todo: bad abstraction, re-implement this part, probably better if we create an entity metadata for cache table\n insertedValues = {\n identifier: new MssqlParameter(options.identifier, \"nvarchar\"),\n time: new MssqlParameter(options.time, \"bigint\"),\n duration: new MssqlParameter(options.duration, \"int\"),\n query: new MssqlParameter(options.query, \"nvarchar\"),\n result: new MssqlParameter(options.result, \"nvarchar\"),\n };\n }\n\n if (savedCache && savedCache.identifier) { // if exist then update\n const qb = queryRunner.manager\n .createQueryBuilder()\n .update(this.queryResultCacheTable)\n .set(insertedValues);\n\n qb.where(`${qb.escape(\"identifier\")} = :condition`, { condition: insertedValues.identifier });\n await qb.execute();\n\n } else if (savedCache && savedCache.query) { // if exist then update\n const qb = queryRunner.manager\n .createQueryBuilder()\n .update(this.queryResultCacheTable)\n .set(insertedValues);\n\n if (this.connection.driver instanceof OracleDriver) {\n qb.where(`dbms_lob.compare(\"query\", :condition) = 0`, { condition: insertedValues.query });\n\n } else {\n qb.where(`${qb.escape(\"query\")} = :condition`, { condition: insertedValues.query });\n }\n\n await qb.execute();\n\n } else { // otherwise insert\n await queryRunner.manager\n .createQueryBuilder()\n .insert()\n .into(this.queryResultCacheTable)\n .values(insertedValues)\n .execute();\n }\n\n if (shouldCreateQueryRunner) {\n await queryRunner.release();\n }\n }\n\n /**\n * Clears everything stored in the cache.\n */\n async clear(queryRunner: QueryRunner): Promise<void> {\n return this.getQueryRunner(queryRunner).clearTable(this.queryResultCacheTable);\n }\n\n /**\n * Removes all cached results by given identifiers from cache.\n */\n async remove(identifiers: string[], queryRunner?: QueryRunner): Promise<void> {\n await Promise.all(identifiers.map(identifier => {\n const qb = this.getQueryRunner(queryRunner).manager.createQueryBuilder();\n return qb.delete()\n .from(this.queryResultCacheTable)\n .where(`${qb.escape(\"identifier\")} = :identifier`, {identifier})\n .execute();\n }));\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets a query runner to work with.\n */\n protected getQueryRunner(queryRunner: QueryRunner|undefined): QueryRunner {\n if (queryRunner)\n return queryRunner;\n\n return this.connection.createQueryRunner();\n }\n\n}\n"],"sourceRoot":".."}
@@ -17,6 +17,7 @@ var TableUnique_1 = require("../../schema-builder/table/TableUnique");
17
17
  var BaseQueryRunner_1 = require("../../query-runner/BaseQueryRunner");
18
18
  var Broadcaster_1 = require("../../subscriber/Broadcaster");
19
19
  var error_1 = require("../../error");
20
+ var MetadataTableType_1 = require("../types/MetadataTableType");
20
21
  /**
21
22
  * Runs queries on a single mysql database connection.
22
23
  */
@@ -1658,7 +1659,7 @@ var AuroraDataApiQueryRunner = /** @class */ (function (_super) {
1658
1659
  return "(`t`.`schema` = '" + database + "' AND `t`.`name` = '" + name + "')";
1659
1660
  }).join(" OR ");
1660
1661
  query = "SELECT `t`.*, `v`.`check_option` FROM " + this.escapePath(this.getTypeormMetadataTableName()) + " `t` " +
1661
- ("INNER JOIN `information_schema`.`views` `v` ON `v`.`table_schema` = `t`.`schema` AND `v`.`table_name` = `t`.`name` WHERE `t`.`type` = 'VIEW' " + (viewsCondition ? "AND (" + viewsCondition + ")" : ""));
1662
+ ("INNER JOIN `information_schema`.`views` `v` ON `v`.`table_schema` = `t`.`schema` AND `v`.`table_name` = `t`.`name` WHERE `t`.`type` = '" + MetadataTableType_1.MetadataTableType.VIEW + "' " + (viewsCondition ? "AND (" + viewsCondition + ")" : ""));
1662
1663
  return [4 /*yield*/, this.query(query)];
1663
1664
  case 3:
1664
1665
  dbViews = _a.sent();
@@ -1770,23 +1771,23 @@ var AuroraDataApiQueryRunner = /** @class */ (function (_super) {
1770
1771
  table.columns = dbColumns
1771
1772
  .filter(function (dbColumn) { return dbColumn["TABLE_NAME"] === dbTable["TABLE_NAME"] && dbColumn["TABLE_SCHEMA"] === dbTable["TABLE_SCHEMA"]; })
1772
1773
  .map(function (dbColumn) {
1773
- var columnUniqueIndex = dbIndices.find(function (dbIndex) {
1774
- if (dbIndex["TABLE_NAME"] !== dbTable["TABLE_NAME"] || dbIndex["TABLE_SCHEMA"] !== dbTable["TABLE_SCHEMA"]) {
1775
- return false;
1776
- }
1777
- // Index is not for this column
1778
- if (dbIndex["COLUMN_NAME"] !== dbColumn["COLUMN_NAME"]) {
1779
- return false;
1780
- }
1781
- var nonUnique = parseInt(dbIndex["NON_UNIQUE"], 10);
1782
- return nonUnique === 0;
1774
+ var columnUniqueIndices = dbIndices.filter(function (dbIndex) {
1775
+ return dbIndex["TABLE_NAME"] === dbTable["TABLE_NAME"]
1776
+ && dbIndex["TABLE_SCHEMA"] === dbTable["TABLE_SCHEMA"]
1777
+ && dbIndex["COLUMN_NAME"] === dbColumn["COLUMN_NAME"]
1778
+ && parseInt(dbIndex["NON_UNIQUE"], 10) === 0;
1783
1779
  });
1784
1780
  var tableMetadata = _this.connection.entityMetadatas.find(function (metadata) { return _this.getTablePath(table) === _this.getTablePath(metadata); });
1785
- var hasIgnoredIndex = columnUniqueIndex && tableMetadata && tableMetadata.indices
1786
- .some(function (index) { return index.name === columnUniqueIndex["INDEX_NAME"] && index.synchronize === false; });
1787
- var isConstraintComposite = columnUniqueIndex
1788
- ? !!dbIndices.find(function (dbIndex) { return dbIndex["INDEX_NAME"] === columnUniqueIndex["INDEX_NAME"] && dbIndex["COLUMN_NAME"] !== dbColumn["COLUMN_NAME"]; })
1789
- : false;
1781
+ var hasIgnoredIndex = columnUniqueIndices.length > 0
1782
+ && tableMetadata
1783
+ && tableMetadata.indices.some(function (index) {
1784
+ return columnUniqueIndices.some(function (uniqueIndex) {
1785
+ return index.name === uniqueIndex["INDEX_NAME"] && index.synchronize === false;
1786
+ });
1787
+ });
1788
+ var isConstraintComposite = columnUniqueIndices.every(function (uniqueIndex) {
1789
+ return dbIndices.some(function (dbIndex) { return dbIndex["INDEX_NAME"] === uniqueIndex["INDEX_NAME"] && dbIndex["COLUMN_NAME"] !== dbColumn["COLUMN_NAME"]; });
1790
+ });
1790
1791
  var tableColumn = new TableColumn_1.TableColumn();
1791
1792
  tableColumn.name = dbColumn["COLUMN_NAME"];
1792
1793
  tableColumn.type = dbColumn["DATA_TYPE"].toLowerCase();
@@ -1808,7 +1809,7 @@ var AuroraDataApiQueryRunner = /** @class */ (function (_super) {
1808
1809
  tableColumn.asExpression = dbColumn["GENERATION_EXPRESSION"];
1809
1810
  tableColumn.generatedType = dbColumn["EXTRA"].indexOf("VIRTUAL") !== -1 ? "VIRTUAL" : "STORED";
1810
1811
  }
1811
- tableColumn.isUnique = !!columnUniqueIndex && !hasIgnoredIndex && !isConstraintComposite;
1812
+ tableColumn.isUnique = columnUniqueIndices.length > 0 && !hasIgnoredIndex && !isConstraintComposite;
1812
1813
  tableColumn.isNullable = dbColumn["IS_NULLABLE"] === "YES";
1813
1814
  tableColumn.isPrimary = dbPrimaryKeys.some(function (dbPrimaryKey) {
1814
1815
  return (dbPrimaryKey["TABLE_NAME"] === dbColumn["TABLE_NAME"] &&
@@ -1989,19 +1990,19 @@ var AuroraDataApiQueryRunner = /** @class */ (function (_super) {
1989
1990
  };
1990
1991
  AuroraDataApiQueryRunner.prototype.insertViewDefinitionSql = function (view) {
1991
1992
  return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
1992
- var currentDatabase, expression, _a, query, parameters;
1993
- return (0, tslib_1.__generator)(this, function (_b) {
1994
- switch (_b.label) {
1993
+ var currentDatabase, expression;
1994
+ return (0, tslib_1.__generator)(this, function (_a) {
1995
+ switch (_a.label) {
1995
1996
  case 0: return [4 /*yield*/, this.getCurrentDatabase()];
1996
1997
  case 1:
1997
- currentDatabase = _b.sent();
1998
+ currentDatabase = _a.sent();
1998
1999
  expression = typeof view.expression === "string" ? view.expression.trim() : view.expression(this.connection).getQuery();
1999
- _a = (0, tslib_1.__read)(this.connection.createQueryBuilder()
2000
- .insert()
2001
- .into(this.getTypeormMetadataTableName())
2002
- .values({ type: "VIEW", schema: currentDatabase, name: view.name, value: expression })
2003
- .getQueryAndParameters(), 2), query = _a[0], parameters = _a[1];
2004
- return [2 /*return*/, new Query_1.Query(query, parameters)];
2000
+ return [2 /*return*/, this.insertTypeormMetadataSql({
2001
+ type: MetadataTableType_1.MetadataTableType.VIEW,
2002
+ schema: currentDatabase,
2003
+ name: view.name,
2004
+ value: expression
2005
+ })];
2005
2006
  }
2006
2007
  });
2007
2008
  });
@@ -2017,21 +2018,14 @@ var AuroraDataApiQueryRunner = /** @class */ (function (_super) {
2017
2018
  */
2018
2019
  AuroraDataApiQueryRunner.prototype.deleteViewDefinitionSql = function (viewOrPath) {
2019
2020
  return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
2020
- var currentDatabase, viewName, qb, _a, query, parameters;
2021
- return (0, tslib_1.__generator)(this, function (_b) {
2022
- switch (_b.label) {
2021
+ var currentDatabase, viewName;
2022
+ return (0, tslib_1.__generator)(this, function (_a) {
2023
+ switch (_a.label) {
2023
2024
  case 0: return [4 /*yield*/, this.getCurrentDatabase()];
2024
2025
  case 1:
2025
- currentDatabase = _b.sent();
2026
+ currentDatabase = _a.sent();
2026
2027
  viewName = viewOrPath instanceof View_1.View ? viewOrPath.name : viewOrPath;
2027
- qb = this.connection.createQueryBuilder();
2028
- _a = (0, tslib_1.__read)(qb.delete()
2029
- .from(this.getTypeormMetadataTableName())
2030
- .where(qb.escape("type") + " = 'VIEW'")
2031
- .andWhere(qb.escape("schema") + " = :schema", { schema: currentDatabase })
2032
- .andWhere(qb.escape("name") + " = :name", { name: viewName })
2033
- .getQueryAndParameters(), 2), query = _a[0], parameters = _a[1];
2034
- return [2 /*return*/, new Query_1.Query(query, parameters)];
2028
+ return [2 /*return*/, this.deleteTypeormMetadataSql({ type: MetadataTableType_1.MetadataTableType.VIEW, schema: currentDatabase, name: viewName })];
2035
2029
  }
2036
2030
  });
2037
2031
  });