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.
- package/browser/cache/DbQueryResultCache.js +12 -3
- package/browser/cache/DbQueryResultCache.js.map +1 -1
- package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +33 -39
- package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +24 -30
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
- package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/browser/driver/mongodb/MongoQueryRunner.d.ts +2 -0
- package/browser/driver/mongodb/MongoQueryRunner.js +3 -0
- package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +37 -39
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.js +1 -1
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.js +13 -24
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.d.ts +1 -0
- package/browser/driver/postgres/PostgresDriver.js +16 -7
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.d.ts +5 -0
- package/browser/driver/postgres/PostgresQueryRunner.js +314 -135
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.js +36 -42
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +8 -14
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +31 -33
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/driver/types/MetadataTableType.d.ts +5 -0
- package/browser/driver/types/MetadataTableType.js +8 -0
- package/browser/driver/types/MetadataTableType.js.map +1 -0
- package/browser/find-options/FindTreeOptions.d.ts +5 -1
- package/browser/find-options/FindTreeOptions.js.map +1 -1
- package/browser/migration/MigrationExecutor.js +55 -48
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/query-runner/BaseQueryRunner.d.ts +23 -0
- package/browser/query-runner/BaseQueryRunner.js +37 -0
- package/browser/query-runner/BaseQueryRunner.js.map +1 -1
- package/browser/query-runner/QueryRunner.d.ts +5 -0
- package/browser/query-runner/QueryRunner.js.map +1 -1
- package/browser/repository/FindTreesOptions.d.ts +9 -0
- package/browser/repository/FindTreesOptions.js +3 -0
- package/browser/repository/FindTreesOptions.js.map +1 -0
- package/browser/repository/TreeRepository.d.ts +4 -1
- package/browser/repository/TreeRepository.js +8 -4
- package/browser/repository/TreeRepository.js.map +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +5 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.js +58 -49
- package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/cache/DbQueryResultCache.js +12 -3
- package/cache/DbQueryResultCache.js.map +1 -1
- package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +33 -39
- package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +24 -30
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
- package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/driver/mongodb/MongoQueryRunner.d.ts +2 -0
- package/driver/mongodb/MongoQueryRunner.js +3 -0
- package/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.js +37 -39
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/oracle/OracleDriver.js +1 -1
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.js +13 -24
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresDriver.d.ts +1 -0
- package/driver/postgres/PostgresDriver.js +16 -7
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.d.ts +5 -0
- package/driver/postgres/PostgresQueryRunner.js +314 -135
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/sap/SapQueryRunner.js +36 -42
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +8 -14
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.js +31 -33
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/driver/types/MetadataTableType.d.ts +5 -0
- package/driver/types/MetadataTableType.js +11 -0
- package/driver/types/MetadataTableType.js.map +1 -0
- package/find-options/FindTreeOptions.d.ts +5 -1
- package/find-options/FindTreeOptions.js.map +1 -1
- package/migration/MigrationExecutor.js +55 -48
- package/migration/MigrationExecutor.js.map +1 -1
- package/package.json +1 -1
- package/query-runner/BaseQueryRunner.d.ts +23 -0
- package/query-runner/BaseQueryRunner.js +37 -0
- package/query-runner/BaseQueryRunner.js.map +1 -1
- package/query-runner/QueryRunner.d.ts +5 -0
- package/query-runner/QueryRunner.js.map +1 -1
- package/repository/FindTreesOptions.d.ts +9 -0
- package/repository/FindTreesOptions.js +4 -0
- package/repository/FindTreesOptions.js.map +1 -0
- package/repository/TreeRepository.d.ts +4 -1
- package/repository/TreeRepository.js +7 -3
- package/repository/TreeRepository.js.map +1 -1
- package/schema-builder/RdbmsSchemaBuilder.d.ts +5 -1
- package/schema-builder/RdbmsSchemaBuilder.js +58 -49
- 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
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
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 =
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
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 =
|
|
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
|
|
1993
|
-
return (0, tslib_1.__generator)(this, function (
|
|
1994
|
-
switch (
|
|
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 =
|
|
1998
|
+
currentDatabase = _a.sent();
|
|
1998
1999
|
expression = typeof view.expression === "string" ? view.expression.trim() : view.expression(this.connection).getQuery();
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
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
|
|
2021
|
-
return (0, tslib_1.__generator)(this, function (
|
|
2022
|
-
switch (
|
|
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 =
|
|
2026
|
+
currentDatabase = _a.sent();
|
|
2026
2027
|
viewName = viewOrPath instanceof View_1.View ? viewOrPath.name : viewOrPath;
|
|
2027
|
-
|
|
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
|
});
|