typeorm 1.0.0-beta.2 → 1.0.0-beta.3
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/README.md +1 -3
- package/browser/connection/ConnectionOptionsReader.js +1 -1
- package/browser/connection/ConnectionOptionsReader.js.map +1 -1
- package/browser/data-source/DataSource.d.ts +1 -1
- package/browser/data-source/DataSource.js.map +1 -1
- package/browser/decorator/options/JoinColumnOptions.js.map +1 -1
- package/browser/driver/DriverUtils.d.ts +1 -0
- package/browser/driver/DriverUtils.js +27 -29
- package/browser/driver/DriverUtils.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +4 -4
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +2 -1
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +9 -6
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +2 -1
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js +3 -0
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +2 -1
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +3 -0
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/browser/driver/capacitor/CapacitorQueryRunner.d.ts +1 -1
- package/browser/driver/capacitor/CapacitorQueryRunner.js +5 -1
- package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.js +3 -3
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +2 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +55 -50
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/cordova/CordovaQueryRunner.d.ts +1 -1
- package/browser/driver/cordova/CordovaQueryRunner.js +2 -0
- package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/browser/driver/expo/ExpoDataSourceOptions.d.ts +5 -3
- package/browser/driver/expo/ExpoDataSourceOptions.js.map +1 -1
- package/browser/driver/expo/ExpoDriver.d.ts +16 -1
- package/browser/driver/expo/ExpoDriver.js +68 -6
- package/browser/driver/expo/ExpoDriver.js.map +1 -1
- package/browser/driver/expo/ExpoQueryRunner.d.ts +2 -1
- package/browser/driver/expo/ExpoQueryRunner.js +3 -0
- package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.js +4 -4
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.d.ts +2 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +78 -82
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/nativescript/NativescriptQueryRunner.d.ts +1 -1
- package/browser/driver/nativescript/NativescriptQueryRunner.js +3 -0
- package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.js +2 -2
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.js +8 -8
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.d.ts +2 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +12 -8
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/react-native/ReactNativeDriver.js +1 -1
- package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.d.ts +1 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.js +3 -0
- package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapDriver.js +5 -3
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.d.ts +2 -1
- package/browser/driver/sap/SapQueryRunner.js +171 -16
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/driver/spanner/SpannerDriver.d.ts +1 -1
- package/browser/driver/spanner/SpannerDriver.js +6 -8
- package/browser/driver/spanner/SpannerDriver.js.map +1 -1
- package/browser/driver/spanner/SpannerQueryRunner.d.ts +16 -1
- package/browser/driver/spanner/SpannerQueryRunner.js +75 -7
- package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +10 -14
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqljs/SqljsQueryRunner.d.ts +2 -1
- package/browser/driver/sqljs/SqljsQueryRunner.js +3 -0
- package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.js +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +2 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +65 -60
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/entity-manager/EntityManager.d.ts +1 -1
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/error/NamedPlaceholdersNotSupportedError.d.ts +7 -0
- package/browser/error/NamedPlaceholdersNotSupportedError.js +14 -0
- package/browser/error/NamedPlaceholdersNotSupportedError.js.map +1 -0
- package/browser/error/QueryFailedError.d.ts +3 -2
- package/browser/error/QueryFailedError.js.map +1 -1
- package/browser/error/index.d.ts +1 -0
- package/browser/error/index.js +1 -0
- package/browser/error/index.js.map +1 -1
- package/browser/index.d.ts +0 -1
- package/browser/index.js +1 -3
- package/browser/index.js.map +1 -1
- package/browser/logger/AbstractLogger.d.ts +5 -4
- package/browser/logger/AbstractLogger.js +3 -1
- package/browser/logger/AbstractLogger.js.map +1 -1
- package/browser/logger/DebugLogger.js +3 -1
- package/browser/logger/DebugLogger.js.map +1 -1
- package/browser/logger/Logger.d.ts +5 -4
- package/browser/logger/Logger.js.map +1 -1
- package/browser/naming-strategy/DefaultNamingStrategy.d.ts +7 -26
- package/browser/naming-strategy/DefaultNamingStrategy.js +19 -37
- package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/browser/naming-strategy/NamingStrategyInterface.d.ts +9 -13
- package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
- package/browser/persistence/EntityPersistExecutor.js +20 -8
- package/browser/persistence/EntityPersistExecutor.js.map +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.js +15 -5
- package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/browser/persistence/SubjectExecutor.js +50 -30
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/platform/PlatformTools.js +1 -1
- package/browser/platform/PlatformTools.js.map +1 -1
- package/browser/query-builder/JoinAttribute.js +3 -3
- package/browser/query-builder/JoinAttribute.js.map +1 -1
- package/browser/query-builder/QueryBuilder.d.ts +0 -1
- package/browser/query-builder/QueryBuilder.js +3 -13
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.js +33 -27
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/SoftDeleteQueryBuilder.js +0 -2
- package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/UpdateQueryBuilder.js +0 -2
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdAttribute.js +4 -4
- package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdLoader.js +16 -9
- package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/browser/query-runner/BaseQueryRunner.d.ts +44 -21
- package/browser/query-runner/BaseQueryRunner.js +61 -21
- package/browser/query-runner/BaseQueryRunner.js.map +1 -1
- package/browser/query-runner/QueryRunner.d.ts +11 -2
- package/browser/query-runner/QueryRunner.js.map +1 -1
- package/browser/repository/BaseEntity.d.ts +2 -1
- package/browser/repository/BaseEntity.js.map +1 -1
- package/browser/repository/Repository.d.ts +1 -1
- package/browser/repository/Repository.js.map +1 -1
- package/browser/subscriber/Broadcaster.d.ts +4 -4
- package/browser/subscriber/Broadcaster.js.map +1 -1
- package/browser/subscriber/event/QueryEvent.d.ts +2 -1
- package/browser/subscriber/event/QueryEvent.js.map +1 -1
- package/browser/util/DirectoryExportedClassesLoader.js +1 -1
- package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/browser/util/ImportUtils.js +1 -1
- package/browser/util/ImportUtils.js.map +1 -1
- package/browser/util/OrmUtils.js +1 -1
- package/browser/util/OrmUtils.js.map +1 -1
- package/browser/util/PathUtils.js +1 -1
- package/browser/util/PathUtils.js.map +1 -1
- package/browser/util/RandomGenerator.d.ts +1 -10
- package/browser/util/RandomGenerator.js +1 -10
- package/browser/util/RandomGenerator.js.map +1 -1
- package/browser/util/StringUtils.js +9 -9
- package/browser/util/StringUtils.js.map +1 -1
- package/browser/util/escapeRegExp.js +1 -1
- package/browser/util/escapeRegExp.js.map +1 -1
- package/commands/InitCommand.d.ts +0 -3
- package/commands/InitCommand.js +4 -31
- package/commands/InitCommand.js.map +1 -1
- package/commands/MigrationGenerateCommand.js +3 -1
- package/commands/MigrationGenerateCommand.js.map +1 -1
- package/commands/VersionCommand.js +2 -2
- package/commands/VersionCommand.js.map +1 -1
- package/connection/ConnectionOptionsReader.js +1 -1
- package/connection/ConnectionOptionsReader.js.map +1 -1
- package/data-source/DataSource.d.ts +1 -1
- package/data-source/DataSource.js.map +1 -1
- package/decorator/options/JoinColumnOptions.js.map +1 -1
- package/driver/DriverUtils.d.ts +1 -0
- package/driver/DriverUtils.js +27 -29
- package/driver/DriverUtils.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.js +4 -4
- package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +2 -1
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +9 -6
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +2 -1
- package/driver/aurora-postgres/AuroraPostgresQueryRunner.js +3 -0
- package/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +2 -1
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +3 -0
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/driver/capacitor/CapacitorQueryRunner.d.ts +1 -1
- package/driver/capacitor/CapacitorQueryRunner.js +5 -1
- package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.js +3 -3
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.d.ts +2 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +55 -50
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/cordova/CordovaQueryRunner.d.ts +1 -1
- package/driver/cordova/CordovaQueryRunner.js +2 -0
- package/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/driver/expo/ExpoDataSourceOptions.d.ts +5 -3
- package/driver/expo/ExpoDataSourceOptions.js.map +1 -1
- package/driver/expo/ExpoDriver.d.ts +16 -1
- package/driver/expo/ExpoDriver.js +68 -6
- package/driver/expo/ExpoDriver.js.map +1 -1
- package/driver/expo/ExpoQueryRunner.d.ts +2 -1
- package/driver/expo/ExpoQueryRunner.js +3 -0
- package/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/driver/mysql/MysqlDriver.js +4 -4
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.d.ts +2 -1
- package/driver/mysql/MysqlQueryRunner.js +78 -82
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/nativescript/NativescriptQueryRunner.d.ts +1 -1
- package/driver/nativescript/NativescriptQueryRunner.js +3 -0
- package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/driver/oracle/OracleDriver.js +2 -2
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/postgres/PostgresDriver.js +8 -8
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.d.ts +2 -1
- package/driver/postgres/PostgresQueryRunner.js +12 -8
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/react-native/ReactNativeDriver.js +1 -1
- package/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/driver/react-native/ReactNativeQueryRunner.d.ts +1 -1
- package/driver/react-native/ReactNativeQueryRunner.js +3 -0
- package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/driver/sap/SapDriver.js +5 -3
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/sap/SapQueryRunner.d.ts +2 -1
- package/driver/sap/SapQueryRunner.js +171 -16
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/driver/spanner/SpannerDriver.d.ts +1 -1
- package/driver/spanner/SpannerDriver.js +6 -8
- package/driver/spanner/SpannerDriver.js.map +1 -1
- package/driver/spanner/SpannerQueryRunner.d.ts +16 -1
- package/driver/spanner/SpannerQueryRunner.js +75 -7
- package/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +10 -14
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqljs/SqljsQueryRunner.d.ts +2 -1
- package/driver/sqljs/SqljsQueryRunner.js +3 -0
- package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.js +1 -1
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.d.ts +2 -1
- package/driver/sqlserver/SqlServerQueryRunner.js +65 -60
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/entity-manager/EntityManager.d.ts +1 -1
- package/entity-manager/EntityManager.js.map +1 -1
- package/error/NamedPlaceholdersNotSupportedError.d.ts +7 -0
- package/error/NamedPlaceholdersNotSupportedError.js +14 -0
- package/error/NamedPlaceholdersNotSupportedError.js.map +1 -0
- package/error/QueryFailedError.d.ts +3 -2
- package/error/QueryFailedError.js.map +1 -1
- package/error/index.d.ts +1 -0
- package/error/index.js +1 -0
- package/error/index.js.map +1 -1
- package/index.d.ts +0 -1
- package/index.js +1 -3
- package/index.js.map +1 -1
- package/index.mjs +2 -2
- package/logger/AbstractLogger.d.ts +5 -4
- package/logger/AbstractLogger.js +3 -1
- package/logger/AbstractLogger.js.map +1 -1
- package/logger/DebugLogger.js +3 -1
- package/logger/DebugLogger.js.map +1 -1
- package/logger/Logger.d.ts +5 -4
- package/logger/Logger.js.map +1 -1
- package/naming-strategy/DefaultNamingStrategy.d.ts +7 -26
- package/naming-strategy/DefaultNamingStrategy.js +19 -37
- package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/naming-strategy/NamingStrategyInterface.d.ts +9 -13
- package/naming-strategy/NamingStrategyInterface.js.map +1 -1
- package/package.json +6 -6
- package/persistence/EntityPersistExecutor.js +20 -8
- package/persistence/EntityPersistExecutor.js.map +1 -1
- package/persistence/SubjectDatabaseEntityLoader.js +15 -5
- package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/persistence/SubjectExecutor.js +50 -30
- package/persistence/SubjectExecutor.js.map +1 -1
- package/platform/PlatformTools.js +1 -1
- package/platform/PlatformTools.js.map +1 -1
- package/query-builder/JoinAttribute.js +3 -3
- package/query-builder/JoinAttribute.js.map +1 -1
- package/query-builder/QueryBuilder.d.ts +0 -1
- package/query-builder/QueryBuilder.js +3 -13
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/SelectQueryBuilder.js +33 -27
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/SoftDeleteQueryBuilder.js +0 -2
- package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/query-builder/UpdateQueryBuilder.js +0 -2
- package/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/query-builder/relation-id/RelationIdAttribute.js +4 -4
- package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
- package/query-builder/relation-id/RelationIdLoader.js +16 -9
- package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/query-runner/BaseQueryRunner.d.ts +44 -21
- package/query-runner/BaseQueryRunner.js +61 -21
- package/query-runner/BaseQueryRunner.js.map +1 -1
- package/query-runner/QueryRunner.d.ts +11 -2
- package/query-runner/QueryRunner.js.map +1 -1
- package/repository/BaseEntity.d.ts +2 -1
- package/repository/BaseEntity.js.map +1 -1
- package/repository/Repository.d.ts +1 -1
- package/repository/Repository.js.map +1 -1
- package/subscriber/Broadcaster.d.ts +4 -4
- package/subscriber/Broadcaster.js.map +1 -1
- package/subscriber/event/QueryEvent.d.ts +2 -1
- package/subscriber/event/QueryEvent.js.map +1 -1
- package/util/DirectoryExportedClassesLoader.js +1 -1
- package/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/util/ImportUtils.js +1 -1
- package/util/ImportUtils.js.map +1 -1
- package/util/OrmUtils.js +1 -1
- package/util/OrmUtils.js.map +1 -1
- package/util/PathUtils.js +1 -1
- package/util/PathUtils.js.map +1 -1
- package/util/RandomGenerator.d.ts +1 -10
- package/util/RandomGenerator.js +1 -10
- package/util/RandomGenerator.js.map +1 -1
- package/util/StringUtils.js +9 -9
- package/util/StringUtils.js.map +1 -1
- package/util/escapeRegExp.js +1 -1
- package/util/escapeRegExp.js.map +1 -1
- package/browser/naming-strategy/LegacyOracleNamingStrategy.d.ts +0 -21
- package/browser/naming-strategy/LegacyOracleNamingStrategy.js +0 -49
- package/browser/naming-strategy/LegacyOracleNamingStrategy.js.map +0 -1
- package/naming-strategy/LegacyOracleNamingStrategy.d.ts +0 -21
- package/naming-strategy/LegacyOracleNamingStrategy.js +0 -49
- package/naming-strategy/LegacyOracleNamingStrategy.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelationIdLoader.js","sourceRoot":"../build/browser/src/","sources":["query-builder/relation-id/RelationIdLoader.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RelationIdAttribute } from \"./RelationIdAttribute\"\nimport type { DataSource } from \"../../data-source/DataSource\"\nimport type { RelationIdLoadResult } from \"./RelationIdLoadResult\"\nimport type { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport type { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport { DriverUtils } from \"../../driver/DriverUtils\"\nimport { TypeORMError } from \"../../error/TypeORMError\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\n\nexport class RelationIdLoader {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected dataSource: DataSource,\n protected queryRunner: QueryRunner | undefined,\n protected relationIdAttributes: RelationIdAttribute[],\n protected withDeleted: boolean = false,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async load(rawEntities: any[]): Promise<RelationIdLoadResult[]> {\n const promises = this.relationIdAttributes.map(\n async (relationIdAttr) => {\n if (\n relationIdAttr.relation.isManyToOne ||\n relationIdAttr.relation.isOneToOneOwner\n ) {\n // example: Post and Tag\n // loadRelationIdAndMap(\"post.tagId\", \"post.tag\")\n // we expect it to load id of tag\n\n if (relationIdAttr.queryBuilderFactory)\n throw new TypeORMError(\n \"Additional condition can not be used with ManyToOne or OneToOne owner relations.\",\n )\n\n const duplicates: { [duplicateKey: string]: boolean } = {}\n const results = rawEntities\n .map((rawEntity) => {\n const result: ObjectLiteral = {}\n const duplicateParts: Array<string> = []\n relationIdAttr.relation.joinColumns.forEach(\n (joinColumn) => {\n result[joinColumn.databaseName] =\n this.dataSource.driver.prepareHydratedValue(\n rawEntity[\n DriverUtils.buildAlias(\n this.dataSource.driver,\n undefined,\n relationIdAttr.parentAlias,\n joinColumn.databaseName,\n )\n ],\n joinColumn.referencedColumn!,\n )\n const duplicatePart = `${\n joinColumn.databaseName\n }:${result[joinColumn.databaseName]}`\n if (\n duplicateParts.indexOf(\n duplicatePart,\n ) === -1\n ) {\n duplicateParts.push(duplicatePart)\n }\n },\n )\n\n relationIdAttr.relation.entityMetadata.primaryColumns.forEach(\n (primaryColumn) => {\n result[primaryColumn.databaseName] =\n this.dataSource.driver.prepareHydratedValue(\n rawEntity[\n DriverUtils.buildAlias(\n this.dataSource.driver,\n undefined,\n relationIdAttr.parentAlias,\n primaryColumn.databaseName,\n )\n ],\n primaryColumn,\n )\n const duplicatePart = `${\n primaryColumn.databaseName\n }:${result[primaryColumn.databaseName]}`\n if (\n duplicateParts.indexOf(\n duplicatePart,\n ) === -1\n ) {\n duplicateParts.push(duplicatePart)\n }\n },\n )\n\n duplicateParts.sort()\n const duplicate = duplicateParts.join(\"::\")\n if (duplicates[duplicate]) {\n return null\n }\n duplicates[duplicate] = true\n return result\n })\n .filter((v) => v)\n\n return {\n relationIdAttribute: relationIdAttr,\n results: results,\n }\n } else if (\n relationIdAttr.relation.isOneToMany ||\n relationIdAttr.relation.isOneToOneNotOwner\n ) {\n // example: Post and Category\n // loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // we expect it to load array of category ids\n\n const relation = relationIdAttr.relation // \"post.categories\"\n const joinColumns = relation.isOwning\n ? relation.joinColumns\n : relation.inverseRelation!.joinColumns\n const table = relation.inverseEntityMetadata.target // category\n const tableName = relation.inverseEntityMetadata.tableName // category\n const tableAlias = relationIdAttr.alias ?? tableName // if condition (custom query builder factory) is set then relationIdAttr.alias defined\n\n const duplicates: { [duplicateKey: string]: boolean } = {}\n const parameters: ObjectLiteral = {}\n const condition = rawEntities\n .map((rawEntity, index) => {\n const duplicateParts: Array<string> = []\n const parameterParts: ObjectLiteral = {}\n const queryPart = joinColumns\n .map((joinColumn) => {\n const parameterName =\n joinColumn.databaseName + index\n const parameterValue =\n rawEntity[\n DriverUtils.buildAlias(\n this.dataSource.driver,\n undefined,\n relationIdAttr.parentAlias,\n joinColumn.referencedColumn!\n .databaseName,\n )\n ]\n const duplicatePart = `${tableAlias}:${joinColumn.propertyPath}:${parameterValue}`\n if (\n duplicateParts.indexOf(\n duplicatePart,\n ) !== -1\n ) {\n return \"\"\n }\n duplicateParts.push(duplicatePart)\n parameterParts[parameterName] =\n parameterValue\n return (\n tableAlias +\n \".\" +\n joinColumn.propertyPath +\n \" = :\" +\n parameterName\n )\n })\n .filter((v) => v)\n .join(\" AND \")\n duplicateParts.sort()\n const duplicate = duplicateParts.join(\"::\")\n if (duplicates[duplicate]) {\n return \"\"\n }\n duplicates[duplicate] = true\n Object.assign(parameters, parameterParts)\n return queryPart\n })\n .filter((v) => v)\n .map((condition) => \"(\" + condition + \")\")\n .join(\" OR \")\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (!condition)\n return {\n relationIdAttribute: relationIdAttr,\n results: [],\n }\n\n // generate query:\n // SELECT category.id, category.postId FROM category category ON category.postId = :postId\n const qb = this.dataSource.createQueryBuilder(\n this.queryRunner,\n )\n\n const columns = OrmUtils.uniq(\n [\n ...joinColumns,\n ...relation.inverseRelation!.entityMetadata\n .primaryColumns,\n ],\n (column) => column.propertyPath,\n )\n\n columns.forEach((joinColumn) => {\n qb.addSelect(\n tableAlias + \".\" + joinColumn.propertyPath,\n joinColumn.databaseName,\n )\n })\n\n qb.from(table, tableAlias)\n .where(\"(\" + condition + \")\") // need brackets because if we have additional condition and no brackets, it looks like (a = 1) OR (a = 2) AND b = 1, that is incorrect\n .setParameters(parameters)\n\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb)\n\n const results = await qb.getRawMany()\n results.forEach((result) => {\n joinColumns.forEach((column) => {\n result[column.databaseName] =\n this.dataSource.driver.prepareHydratedValue(\n result[column.databaseName],\n column.referencedColumn!,\n )\n })\n relation.inverseRelation!.entityMetadata.primaryColumns.forEach(\n (column) => {\n result[column.databaseName] =\n this.dataSource.driver.prepareHydratedValue(\n result[column.databaseName],\n column,\n )\n },\n )\n })\n\n return {\n relationIdAttribute: relationIdAttr,\n results,\n }\n } else {\n // many-to-many\n // example: Post and Category\n // owner side: loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // inverse side: loadRelationIdAndMap(\"category.postIds\", \"category.posts\")\n // we expect it to load array of post ids\n\n const relation = relationIdAttr.relation\n const joinColumns = relation.isOwning\n ? relation.joinColumns\n : relation.inverseRelation!.inverseJoinColumns\n const inverseJoinColumns = relation.isOwning\n ? relation.inverseJoinColumns\n : relation.inverseRelation!.joinColumns\n const junctionAlias = relationIdAttr.junctionAlias\n const inverseSideTableName =\n relationIdAttr.joinInverseSideMetadata.tableName\n const inverseSideTableAlias =\n relationIdAttr.alias ?? inverseSideTableName\n const junctionTableName = relation.isOwning\n ? relation.junctionEntityMetadata!.tableName\n : relation.inverseRelation!.junctionEntityMetadata!\n .tableName\n\n const mappedColumns = rawEntities.map((rawEntity) => {\n return joinColumns.reduce((map, joinColumn) => {\n map[joinColumn.propertyPath] =\n rawEntity[\n DriverUtils.buildAlias(\n this.dataSource.driver,\n undefined,\n relationIdAttr.parentAlias,\n joinColumn.referencedColumn!\n .databaseName,\n )\n ]\n return map\n }, {} as ObjectLiteral)\n })\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (mappedColumns.length === 0)\n return {\n relationIdAttribute: relationIdAttr,\n results: [],\n }\n\n const parameters: ObjectLiteral = {}\n const duplicates: { [duplicateKey: string]: boolean } = {}\n const joinColumnConditions = mappedColumns\n .map((mappedColumn, index) => {\n const duplicateParts: Array<string> = []\n const parameterParts: ObjectLiteral = {}\n const queryPart = Object.keys(mappedColumn)\n .map((key) => {\n const parameterName = key + index\n const parameterValue = mappedColumn[key]\n const duplicatePart = `${junctionAlias}:${key}:${parameterValue}`\n if (\n duplicateParts.indexOf(\n duplicatePart,\n ) !== -1\n ) {\n return \"\"\n }\n duplicateParts.push(duplicatePart)\n parameterParts[parameterName] =\n parameterValue\n return (\n junctionAlias +\n \".\" +\n key +\n \" = :\" +\n parameterName\n )\n })\n .filter((s) => s)\n .join(\" AND \")\n duplicateParts.sort()\n const duplicate = duplicateParts.join(\"::\")\n if (duplicates[duplicate]) {\n return \"\"\n }\n duplicates[duplicate] = true\n Object.assign(parameters, parameterParts)\n return queryPart\n })\n .filter((s) => s)\n\n const inverseJoinColumnCondition = inverseJoinColumns\n .map((joinColumn) => {\n return (\n junctionAlias +\n \".\" +\n joinColumn.propertyPath +\n \" = \" +\n inverseSideTableAlias +\n \".\" +\n joinColumn.referencedColumn!.propertyPath\n )\n })\n .join(\" AND \")\n\n const condition = joinColumnConditions\n .map((condition) => {\n return (\n \"(\" +\n condition +\n \" AND \" +\n inverseJoinColumnCondition +\n \")\"\n )\n })\n .join(\" OR \")\n\n const qb = this.dataSource.createQueryBuilder(\n this.queryRunner,\n )\n\n inverseJoinColumns.forEach((joinColumn) => {\n qb.addSelect(\n junctionAlias + \".\" + joinColumn.propertyPath,\n joinColumn.databaseName,\n ).addOrderBy(\n junctionAlias + \".\" + joinColumn.propertyPath,\n )\n })\n\n joinColumns.forEach((joinColumn) => {\n qb.addSelect(\n junctionAlias + \".\" + joinColumn.propertyPath,\n joinColumn.databaseName,\n ).addOrderBy(\n junctionAlias + \".\" + joinColumn.propertyPath,\n )\n })\n\n qb.from(inverseSideTableName, inverseSideTableAlias)\n .innerJoin(junctionTableName, junctionAlias, condition)\n .setParameters(parameters)\n\n if (this.withDeleted) qb.withDeleted()\n\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb)\n\n const results = await qb.getRawMany()\n results.forEach((result) => {\n ;[...joinColumns, ...inverseJoinColumns].forEach(\n (column) => {\n result[column.databaseName] =\n this.dataSource.driver.prepareHydratedValue(\n result[column.databaseName],\n column.referencedColumn!,\n )\n },\n )\n })\n\n return {\n relationIdAttribute: relationIdAttr,\n results,\n }\n }\n },\n )\n\n return Promise.all(promises)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RelationIdLoader.js","sourceRoot":"../build/browser/src/","sources":["query-builder/relation-id/RelationIdLoader.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RelationIdAttribute } from \"./RelationIdAttribute\"\nimport type { DataSource } from \"../../data-source/DataSource\"\nimport type { RelationIdLoadResult } from \"./RelationIdLoadResult\"\nimport type { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport type { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport { DriverUtils } from \"../../driver/DriverUtils\"\nimport { TypeORMError } from \"../../error/TypeORMError\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\n\nexport class RelationIdLoader {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected dataSource: DataSource,\n protected queryRunner: QueryRunner | undefined,\n protected relationIdAttributes: RelationIdAttribute[],\n protected withDeleted: boolean = false,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async load(rawEntities: any[]): Promise<RelationIdLoadResult[]> {\n const loadRelationIdAttribute = async (\n relationIdAttr: RelationIdAttribute,\n ): Promise<RelationIdLoadResult> => {\n if (\n relationIdAttr.relation.isManyToOne ||\n relationIdAttr.relation.isOneToOneOwner\n ) {\n // example: Post and Tag\n // loadRelationIdAndMap(\"post.tagId\", \"post.tag\")\n // we expect it to load id of tag\n\n if (relationIdAttr.queryBuilderFactory)\n throw new TypeORMError(\n \"Additional condition can not be used with ManyToOne or OneToOne owner relations.\",\n )\n\n const duplicates: { [duplicateKey: string]: boolean } = {}\n const results = rawEntities\n .map((rawEntity) => {\n const result: ObjectLiteral = {}\n const duplicateParts: Array<string> = []\n relationIdAttr.relation.joinColumns.forEach(\n (joinColumn) => {\n result[joinColumn.databaseName] =\n this.dataSource.driver.prepareHydratedValue(\n rawEntity[\n DriverUtils.buildAlias(\n this.dataSource.driver,\n undefined,\n relationIdAttr.parentAlias,\n joinColumn.databaseName,\n )\n ],\n joinColumn.referencedColumn!,\n )\n const duplicatePart = `${\n joinColumn.databaseName\n }:${result[joinColumn.databaseName]}`\n if (\n duplicateParts.indexOf(duplicatePart) === -1\n ) {\n duplicateParts.push(duplicatePart)\n }\n },\n )\n\n relationIdAttr.relation.entityMetadata.primaryColumns.forEach(\n (primaryColumn) => {\n result[primaryColumn.databaseName] =\n this.dataSource.driver.prepareHydratedValue(\n rawEntity[\n DriverUtils.buildAlias(\n this.dataSource.driver,\n undefined,\n relationIdAttr.parentAlias,\n primaryColumn.databaseName,\n )\n ],\n primaryColumn,\n )\n const duplicatePart = `${\n primaryColumn.databaseName\n }:${result[primaryColumn.databaseName]}`\n if (\n duplicateParts.indexOf(duplicatePart) === -1\n ) {\n duplicateParts.push(duplicatePart)\n }\n },\n )\n\n duplicateParts.sort()\n const duplicate = duplicateParts.join(\"::\")\n if (duplicates[duplicate]) {\n return null\n }\n duplicates[duplicate] = true\n return result\n })\n .filter((v) => v)\n\n return {\n relationIdAttribute: relationIdAttr,\n results: results,\n }\n } else if (\n relationIdAttr.relation.isOneToMany ||\n relationIdAttr.relation.isOneToOneNotOwner\n ) {\n // example: Post and Category\n // loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // we expect it to load array of category ids\n\n const relation = relationIdAttr.relation // \"post.categories\"\n const joinColumns = relation.isOwning\n ? relation.joinColumns\n : relation.inverseRelation!.joinColumns\n const table = relation.inverseEntityMetadata.target // category\n const tableName = relation.inverseEntityMetadata.tableName // category\n const tableAlias = relationIdAttr.alias ?? tableName // if condition (custom query builder factory) is set then relationIdAttr.alias defined\n\n const duplicates: { [duplicateKey: string]: boolean } = {}\n const parameters: ObjectLiteral = {}\n const condition = rawEntities\n .map((rawEntity, index) => {\n const duplicateParts: Array<string> = []\n const parameterParts: ObjectLiteral = {}\n const queryPart = joinColumns\n .map((joinColumn) => {\n const parameterName =\n joinColumn.databaseName + index\n const parameterValue =\n rawEntity[\n DriverUtils.buildAlias(\n this.dataSource.driver,\n undefined,\n relationIdAttr.parentAlias,\n joinColumn.referencedColumn!\n .databaseName,\n )\n ]\n const duplicatePart = `${tableAlias}:${joinColumn.propertyPath}:${parameterValue}`\n if (\n duplicateParts.indexOf(duplicatePart) !== -1\n ) {\n return \"\"\n }\n duplicateParts.push(duplicatePart)\n parameterParts[parameterName] = parameterValue\n return (\n tableAlias +\n \".\" +\n joinColumn.propertyPath +\n \" = :\" +\n parameterName\n )\n })\n .filter((v) => v)\n .join(\" AND \")\n duplicateParts.sort()\n const duplicate = duplicateParts.join(\"::\")\n if (duplicates[duplicate]) {\n return \"\"\n }\n duplicates[duplicate] = true\n Object.assign(parameters, parameterParts)\n return queryPart\n })\n .filter((v) => v)\n .map((condition) => \"(\" + condition + \")\")\n .join(\" OR \")\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (!condition)\n return {\n relationIdAttribute: relationIdAttr,\n results: [],\n }\n\n // generate query:\n // SELECT category.id, category.postId FROM category category ON category.postId = :postId\n const qb = this.dataSource.createQueryBuilder(this.queryRunner)\n\n const columns = OrmUtils.uniq(\n [\n ...joinColumns,\n ...relation.inverseRelation!.entityMetadata\n .primaryColumns,\n ],\n (column) => column.propertyPath,\n )\n\n columns.forEach((joinColumn) => {\n qb.addSelect(\n tableAlias + \".\" + joinColumn.propertyPath,\n joinColumn.databaseName,\n )\n })\n\n qb.from(table, tableAlias)\n .where(\"(\" + condition + \")\") // need brackets because if we have additional condition and no brackets, it looks like (a = 1) OR (a = 2) AND b = 1, that is incorrect\n .setParameters(parameters)\n\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb)\n\n const results = await qb.getRawMany()\n results.forEach((result) => {\n joinColumns.forEach((column) => {\n result[column.databaseName] =\n this.dataSource.driver.prepareHydratedValue(\n result[column.databaseName],\n column.referencedColumn!,\n )\n })\n relation.inverseRelation!.entityMetadata.primaryColumns.forEach(\n (column) => {\n result[column.databaseName] =\n this.dataSource.driver.prepareHydratedValue(\n result[column.databaseName],\n column,\n )\n },\n )\n })\n\n return {\n relationIdAttribute: relationIdAttr,\n results,\n }\n } else {\n // many-to-many\n // example: Post and Category\n // owner side: loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // inverse side: loadRelationIdAndMap(\"category.postIds\", \"category.posts\")\n // we expect it to load array of post ids\n\n const relation = relationIdAttr.relation\n const joinColumns = relation.isOwning\n ? relation.joinColumns\n : relation.inverseRelation!.inverseJoinColumns\n const inverseJoinColumns = relation.isOwning\n ? relation.inverseJoinColumns\n : relation.inverseRelation!.joinColumns\n const junctionAlias = relationIdAttr.junctionAlias\n const inverseSideTableName =\n relationIdAttr.joinInverseSideMetadata.tableName\n const inverseSideTableAlias =\n relationIdAttr.alias ?? inverseSideTableName\n const junctionTableName = relation.isOwning\n ? relation.junctionEntityMetadata!.tableName\n : relation.inverseRelation!.junctionEntityMetadata!\n .tableName\n\n const mappedColumns = rawEntities.map((rawEntity) => {\n return joinColumns.reduce((map, joinColumn) => {\n map[joinColumn.propertyPath] =\n rawEntity[\n DriverUtils.buildAlias(\n this.dataSource.driver,\n undefined,\n relationIdAttr.parentAlias,\n joinColumn.referencedColumn!.databaseName,\n )\n ]\n return map\n }, {} as ObjectLiteral)\n })\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (mappedColumns.length === 0)\n return {\n relationIdAttribute: relationIdAttr,\n results: [],\n }\n\n const parameters: ObjectLiteral = {}\n const duplicates: { [duplicateKey: string]: boolean } = {}\n const joinColumnConditions = mappedColumns\n .map((mappedColumn, index) => {\n const duplicateParts: Array<string> = []\n const parameterParts: ObjectLiteral = {}\n const queryPart = Object.keys(mappedColumn)\n .map((key) => {\n const parameterName = key + index\n const parameterValue = mappedColumn[key]\n const duplicatePart = `${junctionAlias}:${key}:${parameterValue}`\n if (\n duplicateParts.indexOf(duplicatePart) !== -1\n ) {\n return \"\"\n }\n duplicateParts.push(duplicatePart)\n parameterParts[parameterName] = parameterValue\n return (\n junctionAlias +\n \".\" +\n key +\n \" = :\" +\n parameterName\n )\n })\n .filter((s) => s)\n .join(\" AND \")\n duplicateParts.sort()\n const duplicate = duplicateParts.join(\"::\")\n if (duplicates[duplicate]) {\n return \"\"\n }\n duplicates[duplicate] = true\n Object.assign(parameters, parameterParts)\n return queryPart\n })\n .filter((s) => s)\n\n const inverseJoinColumnCondition = inverseJoinColumns\n .map((joinColumn) => {\n return (\n junctionAlias +\n \".\" +\n joinColumn.propertyPath +\n \" = \" +\n inverseSideTableAlias +\n \".\" +\n joinColumn.referencedColumn!.propertyPath\n )\n })\n .join(\" AND \")\n\n const condition = joinColumnConditions\n .map((condition) => {\n return (\n \"(\" +\n condition +\n \" AND \" +\n inverseJoinColumnCondition +\n \")\"\n )\n })\n .join(\" OR \")\n\n const qb = this.dataSource.createQueryBuilder(this.queryRunner)\n\n inverseJoinColumns.forEach((joinColumn) => {\n qb.addSelect(\n junctionAlias + \".\" + joinColumn.propertyPath,\n joinColumn.databaseName,\n ).addOrderBy(junctionAlias + \".\" + joinColumn.propertyPath)\n })\n\n joinColumns.forEach((joinColumn) => {\n qb.addSelect(\n junctionAlias + \".\" + joinColumn.propertyPath,\n joinColumn.databaseName,\n ).addOrderBy(junctionAlias + \".\" + joinColumn.propertyPath)\n })\n\n qb.from(inverseSideTableName, inverseSideTableAlias)\n .innerJoin(junctionTableName, junctionAlias, condition)\n .setParameters(parameters)\n\n if (this.withDeleted) qb.withDeleted()\n\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb)\n\n const results = await qb.getRawMany()\n results.forEach((result) => {\n ;[...joinColumns, ...inverseJoinColumns].forEach(\n (column) => {\n result[column.databaseName] =\n this.dataSource.driver.prepareHydratedValue(\n result[column.databaseName],\n column.referencedColumn!,\n )\n },\n )\n })\n\n return {\n relationIdAttribute: relationIdAttr,\n results,\n }\n }\n }\n\n // Avoid concurrent queries on the same pg client; see #12238.\n // CockroachDB uses the pg package over a single connection too.\n const driverType = this.dataSource.options.type\n if (driverType === \"postgres\" || driverType === \"cockroachdb\") {\n const results: RelationIdLoadResult[] = []\n for (const relationIdAttr of this.relationIdAttributes) {\n results.push(await loadRelationIdAttribute(relationIdAttr))\n }\n return results\n }\n return Promise.all(\n this.relationIdAttributes.map(loadRelationIdAttribute),\n )\n }\n}\n"]}
|
|
@@ -11,6 +11,8 @@ import type { ReplicationMode } from "../driver/types/ReplicationMode";
|
|
|
11
11
|
import type { EntityMetadata } from "../metadata/EntityMetadata";
|
|
12
12
|
import type { TableForeignKey } from "../schema-builder/table/TableForeignKey";
|
|
13
13
|
import type { MetadataTableType } from "../driver/types/MetadataTableType";
|
|
14
|
+
import type { ObjectLiteral } from "../common/ObjectLiteral";
|
|
15
|
+
import type { QueryDeepPartialEntity } from "../query-builder/QueryPartialEntity";
|
|
14
16
|
export declare abstract class BaseQueryRunner implements AsyncDisposable {
|
|
15
17
|
/**
|
|
16
18
|
* DataSource used by this query runner.
|
|
@@ -90,7 +92,7 @@ export declare abstract class BaseQueryRunner implements AsyncDisposable {
|
|
|
90
92
|
/**
|
|
91
93
|
* Executes a given SQL query.
|
|
92
94
|
*/
|
|
93
|
-
abstract query(query: string, parameters?: any[], useStructuredResult?: boolean): Promise<any>;
|
|
95
|
+
abstract query(query: string, parameters?: any[] | ObjectLiteral, useStructuredResult?: boolean): Promise<any>;
|
|
94
96
|
/**
|
|
95
97
|
* Tagged template function that executes raw SQL query and returns raw database results.
|
|
96
98
|
* Template expressions are automatically transformed into database parameters.
|
|
@@ -192,30 +194,30 @@ export declare abstract class BaseQueryRunner implements AsyncDisposable {
|
|
|
192
194
|
/**
|
|
193
195
|
* Generates SQL query to select record from typeorm metadata table.
|
|
194
196
|
*
|
|
195
|
-
* @param
|
|
196
|
-
* @param
|
|
197
|
-
* @param
|
|
198
|
-
* @param
|
|
199
|
-
* @param
|
|
200
|
-
* @param
|
|
197
|
+
* @param param0
|
|
198
|
+
* @param param0.database
|
|
199
|
+
* @param param0.schema
|
|
200
|
+
* @param param0.table
|
|
201
|
+
* @param param0.type
|
|
202
|
+
* @param param0.name
|
|
201
203
|
*/
|
|
202
204
|
protected selectTypeormMetadataSql({ database, schema, table, type, name, }: {
|
|
203
205
|
database?: string;
|
|
204
206
|
schema?: string;
|
|
205
207
|
table?: string;
|
|
206
208
|
type: MetadataTableType;
|
|
207
|
-
name
|
|
209
|
+
name?: string;
|
|
208
210
|
}): Query;
|
|
209
211
|
/**
|
|
210
212
|
* Generates SQL query to insert a record into typeorm metadata table.
|
|
211
213
|
*
|
|
212
|
-
* @param
|
|
213
|
-
* @param
|
|
214
|
-
* @param
|
|
215
|
-
* @param
|
|
216
|
-
* @param
|
|
217
|
-
* @param
|
|
218
|
-
* @param
|
|
214
|
+
* @param param0
|
|
215
|
+
* @param param0.database
|
|
216
|
+
* @param param0.schema
|
|
217
|
+
* @param param0.table
|
|
218
|
+
* @param param0.type
|
|
219
|
+
* @param param0.name
|
|
220
|
+
* @param param0.value
|
|
219
221
|
*/
|
|
220
222
|
protected insertTypeormMetadataSql({ database, schema, table, type, name, value, }: {
|
|
221
223
|
database?: string;
|
|
@@ -225,15 +227,36 @@ export declare abstract class BaseQueryRunner implements AsyncDisposable {
|
|
|
225
227
|
name: string;
|
|
226
228
|
value?: string;
|
|
227
229
|
}): Query;
|
|
230
|
+
/**
|
|
231
|
+
* Generates SQL query to update a record in typeorm metadata table.
|
|
232
|
+
*
|
|
233
|
+
* @param param0
|
|
234
|
+
* @param param0.database
|
|
235
|
+
* @param param0.schema
|
|
236
|
+
* @param param0.table
|
|
237
|
+
* @param param0.name
|
|
238
|
+
* @param param0.value
|
|
239
|
+
* @param param0.valueToSet
|
|
240
|
+
* @param param0.type
|
|
241
|
+
*/
|
|
242
|
+
protected updateTypeormMetadataSql({ database, schema, table, type, name, value, valueToSet, }: {
|
|
243
|
+
database?: string;
|
|
244
|
+
schema?: string;
|
|
245
|
+
table?: string;
|
|
246
|
+
name?: string;
|
|
247
|
+
value?: string;
|
|
248
|
+
valueToSet: QueryDeepPartialEntity<unknown>;
|
|
249
|
+
type: MetadataTableType;
|
|
250
|
+
}): Query;
|
|
228
251
|
/**
|
|
229
252
|
* Generates SQL query to delete a record from typeorm metadata table.
|
|
230
253
|
*
|
|
231
|
-
* @param
|
|
232
|
-
* @param
|
|
233
|
-
* @param
|
|
234
|
-
* @param
|
|
235
|
-
* @param
|
|
236
|
-
* @param
|
|
254
|
+
* @param param0
|
|
255
|
+
* @param param0.database
|
|
256
|
+
* @param param0.schema
|
|
257
|
+
* @param param0.table
|
|
258
|
+
* @param param0.type
|
|
259
|
+
* @param param0.name
|
|
237
260
|
*/
|
|
238
261
|
protected deleteTypeormMetadataSql({ database, schema, table, type, name, }: {
|
|
239
262
|
database?: string;
|
|
@@ -285,20 +285,22 @@ class BaseQueryRunner {
|
|
|
285
285
|
/**
|
|
286
286
|
* Generates SQL query to select record from typeorm metadata table.
|
|
287
287
|
*
|
|
288
|
-
* @param
|
|
289
|
-
* @param
|
|
290
|
-
* @param
|
|
291
|
-
* @param
|
|
292
|
-
* @param
|
|
293
|
-
* @param
|
|
288
|
+
* @param param0
|
|
289
|
+
* @param param0.database
|
|
290
|
+
* @param param0.schema
|
|
291
|
+
* @param param0.table
|
|
292
|
+
* @param param0.type
|
|
293
|
+
* @param param0.name
|
|
294
294
|
*/
|
|
295
295
|
selectTypeormMetadataSql({ database, schema, table, type, name, }) {
|
|
296
296
|
const qb = this.dataSource.createQueryBuilder();
|
|
297
297
|
const selectQb = qb
|
|
298
298
|
.select()
|
|
299
299
|
.from(this.getTypeormMetadataTableName(), "t")
|
|
300
|
-
.where(`${qb.escape("type")} = :type`, { type })
|
|
301
|
-
|
|
300
|
+
.where(`${qb.escape("type")} = :type`, { type });
|
|
301
|
+
if (name) {
|
|
302
|
+
selectQb.andWhere(`${qb.escape("name")} = :name`, { name });
|
|
303
|
+
}
|
|
302
304
|
if (database) {
|
|
303
305
|
selectQb.andWhere(`${qb.escape("database")} = :database`, {
|
|
304
306
|
database,
|
|
@@ -316,13 +318,13 @@ class BaseQueryRunner {
|
|
|
316
318
|
/**
|
|
317
319
|
* Generates SQL query to insert a record into typeorm metadata table.
|
|
318
320
|
*
|
|
319
|
-
* @param
|
|
320
|
-
* @param
|
|
321
|
-
* @param
|
|
322
|
-
* @param
|
|
323
|
-
* @param
|
|
324
|
-
* @param
|
|
325
|
-
* @param
|
|
321
|
+
* @param param0
|
|
322
|
+
* @param param0.database
|
|
323
|
+
* @param param0.schema
|
|
324
|
+
* @param param0.table
|
|
325
|
+
* @param param0.type
|
|
326
|
+
* @param param0.name
|
|
327
|
+
* @param param0.value
|
|
326
328
|
*/
|
|
327
329
|
insertTypeormMetadataSql({ database, schema, table, type, name, value, }) {
|
|
328
330
|
const [query, parameters] = this.dataSource
|
|
@@ -340,15 +342,53 @@ class BaseQueryRunner {
|
|
|
340
342
|
.getQueryAndParameters();
|
|
341
343
|
return new Query_1.Query(query, parameters);
|
|
342
344
|
}
|
|
345
|
+
/**
|
|
346
|
+
* Generates SQL query to update a record in typeorm metadata table.
|
|
347
|
+
*
|
|
348
|
+
* @param param0
|
|
349
|
+
* @param param0.database
|
|
350
|
+
* @param param0.schema
|
|
351
|
+
* @param param0.table
|
|
352
|
+
* @param param0.name
|
|
353
|
+
* @param param0.value
|
|
354
|
+
* @param param0.valueToSet
|
|
355
|
+
* @param param0.type
|
|
356
|
+
*/
|
|
357
|
+
updateTypeormMetadataSql({ database, schema, table, type, name, value, valueToSet, }) {
|
|
358
|
+
const qb = this.dataSource.createQueryBuilder();
|
|
359
|
+
const updateQb = qb
|
|
360
|
+
.update(this.getTypeormMetadataTableName())
|
|
361
|
+
.set(valueToSet)
|
|
362
|
+
.where(`${qb.escape("type")} = :type`, { type });
|
|
363
|
+
if (value) {
|
|
364
|
+
updateQb.andWhere(`${qb.escape("value")} = :value`, { value });
|
|
365
|
+
}
|
|
366
|
+
if (name) {
|
|
367
|
+
updateQb.andWhere(`${qb.escape("name")} = :name`, { name });
|
|
368
|
+
}
|
|
369
|
+
if (database) {
|
|
370
|
+
updateQb.andWhere(`${qb.escape("database")} = :database`, {
|
|
371
|
+
database,
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
if (schema) {
|
|
375
|
+
updateQb.andWhere(`${qb.escape("schema")} = :schema`, { schema });
|
|
376
|
+
}
|
|
377
|
+
if (table) {
|
|
378
|
+
updateQb.andWhere(`${qb.escape("table")} = :table`, { table });
|
|
379
|
+
}
|
|
380
|
+
const [query, parameters] = updateQb.getQueryAndParameters();
|
|
381
|
+
return new Query_1.Query(query, parameters);
|
|
382
|
+
}
|
|
343
383
|
/**
|
|
344
384
|
* Generates SQL query to delete a record from typeorm metadata table.
|
|
345
385
|
*
|
|
346
|
-
* @param
|
|
347
|
-
* @param
|
|
348
|
-
* @param
|
|
349
|
-
* @param
|
|
350
|
-
* @param
|
|
351
|
-
* @param
|
|
386
|
+
* @param param0
|
|
387
|
+
* @param param0.database
|
|
388
|
+
* @param param0.schema
|
|
389
|
+
* @param param0.table
|
|
390
|
+
* @param param0.type
|
|
391
|
+
* @param param0.name
|
|
352
392
|
*/
|
|
353
393
|
deleteTypeormMetadataSql({ database, schema, table, type, name, }) {
|
|
354
394
|
const qb = this.dataSource.createQueryBuilder();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseQueryRunner.js","sourceRoot":"../build/browser/src/","sources":["query-runner/BaseQueryRunner.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PostgresDataSourceOptions } from \"../driver/postgres/PostgresDataSourceOptions\"\nimport { Query } from \"../driver/Query\"\nimport { SqlInMemory } from \"../driver/SqlInMemory\"\nimport type { SqlServerDataSourceOptions } from \"../driver/sqlserver/SqlServerDataSourceOptions\"\nimport type { TableIndex } from \"../schema-builder/table/TableIndex\"\nimport type { View } from \"../schema-builder/view/View\"\nimport type { DataSource } from \"../data-source/DataSource\"\nimport type { Table } from \"../schema-builder/table/Table\"\nimport type { EntityManager } from \"../entity-manager/EntityManager\"\nimport type { TableColumn } from \"../schema-builder/table/TableColumn\"\nimport type { Broadcaster } from \"../subscriber/Broadcaster\"\nimport type { ReplicationMode } from \"../driver/types/ReplicationMode\"\nimport { TypeORMError } from \"../error/TypeORMError\"\nimport type { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport type { TableForeignKey } from \"../schema-builder/table/TableForeignKey\"\nimport { OrmUtils } from \"../util/OrmUtils\"\nimport type { MetadataTableType } from \"../driver/types/MetadataTableType\"\nimport { InstanceChecker } from \"../util/InstanceChecker\"\nimport { buildSqlTag } from \"../util/SqlTagUtils\"\n\nexport abstract class BaseQueryRunner implements AsyncDisposable {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * DataSource used by this query runner.\n */\n dataSource: DataSource\n\n /**\n * DataSource used by this query runner.\n *\n * @deprecated since 1.0.0. Use {@link dataSource} instance instead.\n */\n get connection(): DataSource {\n return this.dataSource\n }\n\n /**\n * Entity manager working only with current query runner.\n */\n manager: EntityManager\n\n /**\n * Indicates if connection for this query runner is released.\n * Once its released, query runner cannot run queries anymore.\n */\n isReleased = false\n\n /**\n * Indicates if transaction is in progress.\n */\n isTransactionActive = false\n\n /**\n * Stores temporarily user data.\n * Useful for sharing data with subscribers.\n */\n data = {}\n\n /**\n * All synchronized tables in the database.\n */\n loadedTables: Table[] = []\n\n /**\n * All synchronized views in the database.\n */\n loadedViews: View[] = []\n\n /**\n * Broadcaster used on this query runner to broadcast entity events.\n */\n broadcaster: Broadcaster\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Real database connection from a connection pool used to perform queries.\n */\n protected databaseConnection: any\n\n /**\n * Indicates if special query runner mode in which sql queries won't be executed is enabled.\n */\n protected sqlMemoryMode: boolean = false\n\n /**\n * Sql-s stored if \"sql in memory\" mode is enabled.\n */\n protected sqlInMemory: SqlInMemory = new SqlInMemory()\n\n /**\n * Mode in which query runner executes.\n * Used for replication.\n * If replication is not setup its value is ignored.\n */\n protected mode: ReplicationMode\n\n /**\n * current depth of transaction.\n * for transactionDepth > 0 will use SAVEPOINT to start and commit/rollback transaction blocks\n */\n protected transactionDepth = 0\n\n private cachedTablePaths: Record<string, string> = {}\n\n // -------------------------------------------------------------------------\n // Public Abstract Methods\n // -------------------------------------------------------------------------\n\n /**\n * Releases used database connection.\n * You cannot use query runner methods after connection is released.\n */\n abstract release(): Promise<void>\n\n async [Symbol.asyncDispose](): Promise<void> {\n try {\n if (this.isTransactionActive) {\n this.transactionDepth = 1 // ignore all savepoints and commit directly\n await this.commitTransaction()\n }\n } finally {\n await this.release()\n }\n }\n\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n abstract commitTransaction(): Promise<void>\n\n /**\n * Executes a given SQL query.\n */\n abstract query(\n query: string,\n parameters?: any[],\n useStructuredResult?: boolean,\n ): Promise<any>\n\n /**\n * Tagged template function that executes raw SQL query and returns raw database results.\n * Template expressions are automatically transformed into database parameters.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n * Note: Don't call this as a regular function, it is meant to be used with backticks to tag a template literal.\n *\n * @example\n * queryRunner.sql`SELECT * FROM table_name WHERE id = ${id}`\n *\n * @param strings\n * @param values\n */\n async sql<T = any>(\n strings: TemplateStringsArray,\n ...values: unknown[]\n ): Promise<T> {\n const { query, parameters } = buildSqlTag({\n driver: this.dataSource.driver,\n strings: strings,\n expressions: values,\n })\n\n return await this.query(query, parameters)\n }\n\n // -------------------------------------------------------------------------\n // Protected Abstract Methods\n // -------------------------------------------------------------------------\n\n protected abstract loadTables(tablePaths?: string[]): Promise<Table[]>\n\n protected abstract loadViews(tablePaths?: string[]): Promise<View[]>\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n // Do nothing\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n // Do nothing\n }\n\n /**\n * Loads given table's data from the database.\n *\n * @param tablePath\n */\n async getTable(tablePath: string): Promise<Table | undefined> {\n this.loadedTables = await this.loadTables([tablePath])\n return this.loadedTables.length > 0 ? this.loadedTables[0] : undefined\n }\n\n /**\n * Loads all tables (with given names) from the database.\n *\n * @param tableNames\n */\n async getTables(tableNames?: string[]): Promise<Table[]> {\n if (!tableNames) {\n // Don't cache in this case.\n // This is the new case & isn't used anywhere else anyway.\n return await this.loadTables(tableNames)\n }\n\n this.loadedTables = await this.loadTables(tableNames)\n return this.loadedTables\n }\n\n /**\n * Loads given view's data from the database.\n *\n * @param viewPath\n */\n async getView(viewPath: string): Promise<View | undefined> {\n this.loadedViews = await this.loadViews([viewPath])\n return this.loadedViews.length > 0 ? this.loadedViews[0] : undefined\n }\n\n /**\n * Loads given view's data from the database.\n *\n * @param viewPaths\n */\n async getViews(viewPaths?: string[]): Promise<View[]> {\n this.loadedViews = await this.loadViews(viewPaths)\n return this.loadedViews\n }\n\n /**\n * Enables special query runner mode in which sql queries won't be executed,\n * instead they will be memorized into a special variable inside query runner.\n * You can get memorized sql using getMemorySql() method.\n */\n enableSqlMemory(): void {\n this.sqlInMemory = new SqlInMemory()\n this.sqlMemoryMode = true\n }\n\n /**\n * Disables special query runner mode in which sql queries won't be executed\n * started by calling enableSqlMemory() method.\n *\n * Previously memorized sql will be flushed.\n */\n disableSqlMemory(): void {\n this.sqlInMemory = new SqlInMemory()\n this.sqlMemoryMode = false\n }\n\n /**\n * Flushes all memorized sqls.\n */\n clearSqlMemory(): void {\n this.sqlInMemory = new SqlInMemory()\n }\n\n /**\n * Gets sql stored in the memory. Parameters in the sql are already replaced.\n */\n getMemorySql(): SqlInMemory {\n return this.sqlInMemory\n }\n\n /**\n * Executes up sql queries.\n */\n async executeMemoryUpSql(): Promise<void> {\n for (const { query, parameters } of this.sqlInMemory.upQueries) {\n await this.query(query, parameters)\n }\n }\n\n /**\n * Executes down sql queries.\n */\n async executeMemoryDownSql(): Promise<void> {\n for (const {\n query,\n parameters,\n } of this.sqlInMemory.downQueries.reverse()) {\n await this.query(query, parameters)\n }\n }\n\n getReplicationMode(): ReplicationMode {\n return this.mode\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets view from previously loaded views, otherwise loads it from database.\n *\n * @param viewName\n */\n protected async getCachedView(viewName: string): Promise<View> {\n const view = this.loadedViews.find((view) => view.name === viewName)\n if (view) return view\n\n const foundViews = await this.loadViews([viewName])\n if (foundViews.length > 0) {\n this.loadedViews.push(foundViews[0])\n return foundViews[0]\n } else {\n throw new TypeORMError(`View \"${viewName}\" does not exist.`)\n }\n }\n\n /**\n * Gets table from previously loaded tables, otherwise loads it from database.\n *\n * @param tableName\n */\n protected async getCachedTable(tableName: string): Promise<Table> {\n if (tableName in this.cachedTablePaths) {\n const tablePath = this.cachedTablePaths[tableName]\n const table = this.loadedTables.find(\n (table) => this.getTablePath(table) === tablePath,\n )\n\n if (table) {\n return table\n }\n }\n\n const foundTables = await this.loadTables([tableName])\n\n if (foundTables.length > 0) {\n const foundTablePath = this.getTablePath(foundTables[0])\n\n const cachedTable = this.loadedTables.find(\n (table) => this.getTablePath(table) === foundTablePath,\n )\n\n if (!cachedTable) {\n this.cachedTablePaths[tableName] = this.getTablePath(\n foundTables[0],\n )\n this.loadedTables.push(foundTables[0])\n return foundTables[0]\n } else {\n return cachedTable\n }\n } else {\n throw new TypeORMError(`Table \"${tableName}\" does not exist.`)\n }\n }\n\n /**\n * Replaces loaded table with given changed table.\n *\n * @param table\n * @param changedTable\n */\n protected replaceCachedTable(table: Table, changedTable: Table): void {\n const oldTablePath = this.getTablePath(table)\n const foundTable = this.loadedTables.find(\n (loadedTable) => this.getTablePath(loadedTable) === oldTablePath,\n )\n\n // Clean up the lookup cache..\n for (const [key, cachedPath] of Object.entries(this.cachedTablePaths)) {\n if (cachedPath === oldTablePath) {\n this.cachedTablePaths[key] = this.getTablePath(changedTable)\n }\n }\n\n if (foundTable) {\n foundTable.database = changedTable.database\n foundTable.schema = changedTable.schema\n foundTable.name = changedTable.name\n foundTable.columns = changedTable.columns\n foundTable.indices = changedTable.indices\n foundTable.foreignKeys = changedTable.foreignKeys\n foundTable.uniques = changedTable.uniques\n foundTable.checks = changedTable.checks\n foundTable.justCreated = changedTable.justCreated\n foundTable.engine = changedTable.engine\n foundTable.comment = changedTable.comment\n }\n }\n\n protected getTablePath(\n target: EntityMetadata | Table | View | TableForeignKey | string,\n ): string {\n const parsed = this.dataSource.driver.parseTableName(target)\n\n return this.dataSource.driver.buildTableName(\n parsed.tableName,\n parsed.schema,\n parsed.database,\n )\n }\n\n protected getTypeormMetadataTableName(): string {\n const options = <\n SqlServerDataSourceOptions | PostgresDataSourceOptions\n >this.dataSource.driver.options\n return this.dataSource.driver.buildTableName(\n this.dataSource.metadataTableName,\n options.schema,\n options.database,\n )\n }\n\n /**\n * Generates SQL query to select record from typeorm metadata table.\n *\n * @param root0\n * @param root0.database\n * @param root0.schema\n * @param root0.table\n * @param root0.type\n * @param root0.name\n */\n protected selectTypeormMetadataSql({\n database,\n schema,\n table,\n type,\n name,\n }: {\n database?: string\n schema?: string\n table?: string\n type: MetadataTableType\n name: string\n }): Query {\n const qb = this.dataSource.createQueryBuilder()\n const selectQb = qb\n .select()\n .from(this.getTypeormMetadataTableName(), \"t\")\n .where(`${qb.escape(\"type\")} = :type`, { type })\n .andWhere(`${qb.escape(\"name\")} = :name`, { name })\n\n if (database) {\n selectQb.andWhere(`${qb.escape(\"database\")} = :database`, {\n database,\n })\n }\n\n if (schema) {\n selectQb.andWhere(`${qb.escape(\"schema\")} = :schema`, { schema })\n }\n\n if (table) {\n selectQb.andWhere(`${qb.escape(\"table\")} = :table`, { table })\n }\n\n const [query, parameters] = selectQb.getQueryAndParameters()\n return new Query(query, parameters)\n }\n\n /**\n * Generates SQL query to insert a record into typeorm metadata table.\n *\n * @param root0\n * @param root0.database\n * @param root0.schema\n * @param root0.table\n * @param root0.type\n * @param root0.name\n * @param root0.value\n */\n protected insertTypeormMetadataSql({\n database,\n schema,\n table,\n type,\n name,\n value,\n }: {\n database?: string\n schema?: string\n table?: string\n type: MetadataTableType\n name: string\n value?: string\n }): Query {\n const [query, parameters] = this.dataSource\n .createQueryBuilder()\n .insert()\n .into(this.getTypeormMetadataTableName())\n .values({\n database: database,\n schema: schema,\n table: table,\n type: type,\n name: name,\n value: value,\n })\n .getQueryAndParameters()\n\n return new Query(query, parameters)\n }\n\n /**\n * Generates SQL query to delete a record from typeorm metadata table.\n *\n * @param root0\n * @param root0.database\n * @param root0.schema\n * @param root0.table\n * @param root0.type\n * @param root0.name\n */\n protected deleteTypeormMetadataSql({\n database,\n schema,\n table,\n type,\n name,\n }: {\n database?: string\n schema?: string\n table?: string\n type: MetadataTableType\n name: string\n }): Query {\n const qb = this.dataSource.createQueryBuilder()\n const deleteQb = qb\n .delete()\n .from(this.getTypeormMetadataTableName())\n .where(`${qb.escape(\"type\")} = :type`, { type })\n .andWhere(`${qb.escape(\"name\")} = :name`, { name })\n\n if (database) {\n deleteQb.andWhere(`${qb.escape(\"database\")} = :database`, {\n database,\n })\n }\n\n if (schema) {\n deleteQb.andWhere(`${qb.escape(\"schema\")} = :schema`, { schema })\n }\n\n if (table) {\n deleteQb.andWhere(`${qb.escape(\"table\")} = :table`, { table })\n }\n\n const [query, parameters] = deleteQb.getQueryAndParameters()\n return new Query(query, parameters)\n }\n\n /**\n * Checks if at least one of column properties was changed.\n * Does not checks column type, length and autoincrement, because these properties changes separately.\n *\n * @param oldColumn\n * @param newColumn\n * @param checkDefault\n * @param checkComment\n * @param checkEnum\n */\n protected isColumnChanged(\n oldColumn: TableColumn,\n newColumn: TableColumn,\n checkDefault?: boolean,\n checkComment?: boolean,\n checkEnum = true,\n ): boolean {\n return (\n oldColumn.charset !== newColumn.charset ||\n oldColumn.collation !== newColumn.collation ||\n oldColumn.precision !== newColumn.precision ||\n oldColumn.scale !== newColumn.scale ||\n oldColumn.unsigned !== newColumn.unsigned || // MySQL only\n oldColumn.asExpression !== newColumn.asExpression ||\n (!!checkDefault && oldColumn.default !== newColumn.default) ||\n oldColumn.onUpdate !== newColumn.onUpdate || // MySQL only\n oldColumn.isNullable !== newColumn.isNullable ||\n (!!checkComment && oldColumn.comment !== newColumn.comment) ||\n (checkEnum && this.isEnumChanged(oldColumn, newColumn))\n )\n }\n\n protected isEnumChanged(oldColumn: TableColumn, newColumn: TableColumn) {\n return !OrmUtils.isArraysEqual(\n oldColumn.enum ?? [],\n newColumn.enum ?? [],\n )\n }\n\n /**\n * Checks if column length is by default.\n *\n * @param table\n * @param column\n * @param length\n */\n protected isDefaultColumnLength(\n table: Table,\n column: TableColumn,\n length: string,\n ): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.dataSource.hasMetadata(table.name)) {\n const metadata = this.dataSource.getMetadata(table.name)\n const columnMetadata = metadata.findColumnWithDatabaseName(\n column.name,\n )\n\n if (columnMetadata) {\n const columnMetadataLength =\n this.dataSource.driver.getColumnLength(columnMetadata)\n if (columnMetadataLength) return false\n }\n }\n\n if (this.dataSource.driver.dataTypeDefaults?.[column.type]?.length) {\n return (\n this.dataSource.driver.dataTypeDefaults[\n column.type\n ].length!.toString() === length.toString()\n )\n }\n\n return false\n }\n\n /**\n * Checks if column precision is by default.\n *\n * @param table\n * @param column\n * @param precision\n */\n protected isDefaultColumnPrecision(\n table: Table,\n column: TableColumn,\n precision: number,\n ): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.dataSource.hasMetadata(table.name)) {\n const metadata = this.dataSource.getMetadata(table.name)\n const columnMetadata = metadata.findColumnWithDatabaseName(\n column.name,\n )\n if (\n columnMetadata?.precision !== null &&\n columnMetadata?.precision !== undefined\n )\n return false\n }\n\n if (\n this.dataSource.driver.dataTypeDefaults?.[column.type]\n ?.precision !== null &&\n this.dataSource.driver.dataTypeDefaults?.[column.type]\n ?.precision !== undefined\n )\n return (\n this.dataSource.driver.dataTypeDefaults[column.type]\n .precision === precision\n )\n\n return false\n }\n\n /**\n * Checks if column scale is by default.\n *\n * @param table\n * @param column\n * @param scale\n */\n protected isDefaultColumnScale(\n table: Table,\n column: TableColumn,\n scale: number,\n ): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.dataSource.hasMetadata(table.name)) {\n const metadata = this.dataSource.getMetadata(table.name)\n const columnMetadata = metadata.findColumnWithDatabaseName(\n column.name,\n )\n if (\n columnMetadata?.scale !== null &&\n columnMetadata?.scale !== undefined\n )\n return false\n }\n\n if (\n this.dataSource.driver.dataTypeDefaults?.[column.type]?.scale !==\n null &&\n this.dataSource.driver.dataTypeDefaults?.[column.type]?.scale !==\n undefined\n )\n return (\n this.dataSource.driver.dataTypeDefaults[column.type].scale ===\n scale\n )\n\n return false\n }\n\n /**\n * Executes sql used special for schema build.\n *\n * @param upQueries\n * @param downQueries\n */\n protected async executeQueries(\n upQueries: Query | Query[],\n downQueries: Query | Query[],\n ): Promise<void> {\n if (InstanceChecker.isQuery(upQueries)) upQueries = [upQueries]\n if (InstanceChecker.isQuery(downQueries)) downQueries = [downQueries]\n\n this.sqlInMemory.upQueries.push(...upQueries)\n this.sqlInMemory.downQueries.push(...downQueries)\n\n // if sql-in-memory mode is enabled then simply store sql in memory and return\n if (this.sqlMemoryMode === true)\n return Promise.resolve() as Promise<any>\n\n for (const { query, parameters } of upQueries) {\n await this.query(query, parameters)\n }\n }\n\n /**\n * Generated an index name for a table and index\n *\n * @param table\n * @param index\n */\n protected generateIndexName(\n table: Table | View,\n index: TableIndex,\n ): string {\n // new index may be passed without name. In this case we generate index name manually.\n return this.dataSource.namingStrategy.indexName(\n table,\n index.columnNames,\n index.where,\n )\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BaseQueryRunner.js","sourceRoot":"../build/browser/src/","sources":["query-runner/BaseQueryRunner.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PostgresDataSourceOptions } from \"../driver/postgres/PostgresDataSourceOptions\"\nimport { Query } from \"../driver/Query\"\nimport { SqlInMemory } from \"../driver/SqlInMemory\"\nimport type { SqlServerDataSourceOptions } from \"../driver/sqlserver/SqlServerDataSourceOptions\"\nimport type { TableIndex } from \"../schema-builder/table/TableIndex\"\nimport type { View } from \"../schema-builder/view/View\"\nimport type { DataSource } from \"../data-source/DataSource\"\nimport type { Table } from \"../schema-builder/table/Table\"\nimport type { EntityManager } from \"../entity-manager/EntityManager\"\nimport type { TableColumn } from \"../schema-builder/table/TableColumn\"\nimport type { Broadcaster } from \"../subscriber/Broadcaster\"\nimport type { ReplicationMode } from \"../driver/types/ReplicationMode\"\nimport { TypeORMError } from \"../error/TypeORMError\"\nimport type { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport type { TableForeignKey } from \"../schema-builder/table/TableForeignKey\"\nimport { OrmUtils } from \"../util/OrmUtils\"\nimport type { MetadataTableType } from \"../driver/types/MetadataTableType\"\nimport { InstanceChecker } from \"../util/InstanceChecker\"\nimport { buildSqlTag } from \"../util/SqlTagUtils\"\nimport type { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport type { QueryDeepPartialEntity } from \"../query-builder/QueryPartialEntity\"\n\nexport abstract class BaseQueryRunner implements AsyncDisposable {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * DataSource used by this query runner.\n */\n dataSource: DataSource\n\n /**\n * DataSource used by this query runner.\n *\n * @deprecated since 1.0.0. Use {@link dataSource} instance instead.\n */\n get connection(): DataSource {\n return this.dataSource\n }\n\n /**\n * Entity manager working only with current query runner.\n */\n manager: EntityManager\n\n /**\n * Indicates if connection for this query runner is released.\n * Once its released, query runner cannot run queries anymore.\n */\n isReleased = false\n\n /**\n * Indicates if transaction is in progress.\n */\n isTransactionActive = false\n\n /**\n * Stores temporarily user data.\n * Useful for sharing data with subscribers.\n */\n data = {}\n\n /**\n * All synchronized tables in the database.\n */\n loadedTables: Table[] = []\n\n /**\n * All synchronized views in the database.\n */\n loadedViews: View[] = []\n\n /**\n * Broadcaster used on this query runner to broadcast entity events.\n */\n broadcaster: Broadcaster\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Real database connection from a connection pool used to perform queries.\n */\n protected databaseConnection: any\n\n /**\n * Indicates if special query runner mode in which sql queries won't be executed is enabled.\n */\n protected sqlMemoryMode: boolean = false\n\n /**\n * Sql-s stored if \"sql in memory\" mode is enabled.\n */\n protected sqlInMemory: SqlInMemory = new SqlInMemory()\n\n /**\n * Mode in which query runner executes.\n * Used for replication.\n * If replication is not setup its value is ignored.\n */\n protected mode: ReplicationMode\n\n /**\n * current depth of transaction.\n * for transactionDepth > 0 will use SAVEPOINT to start and commit/rollback transaction blocks\n */\n protected transactionDepth = 0\n\n private cachedTablePaths: Record<string, string> = {}\n\n // -------------------------------------------------------------------------\n // Public Abstract Methods\n // -------------------------------------------------------------------------\n\n /**\n * Releases used database connection.\n * You cannot use query runner methods after connection is released.\n */\n abstract release(): Promise<void>\n\n async [Symbol.asyncDispose](): Promise<void> {\n try {\n if (this.isTransactionActive) {\n this.transactionDepth = 1 // ignore all savepoints and commit directly\n await this.commitTransaction()\n }\n } finally {\n await this.release()\n }\n }\n\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n abstract commitTransaction(): Promise<void>\n\n /**\n * Executes a given SQL query.\n */\n abstract query(\n query: string,\n parameters?: any[] | ObjectLiteral,\n useStructuredResult?: boolean,\n ): Promise<any>\n\n /**\n * Tagged template function that executes raw SQL query and returns raw database results.\n * Template expressions are automatically transformed into database parameters.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n * Note: Don't call this as a regular function, it is meant to be used with backticks to tag a template literal.\n *\n * @example\n * queryRunner.sql`SELECT * FROM table_name WHERE id = ${id}`\n *\n * @param strings\n * @param values\n */\n async sql<T = any>(\n strings: TemplateStringsArray,\n ...values: unknown[]\n ): Promise<T> {\n const { query, parameters } = buildSqlTag({\n driver: this.dataSource.driver,\n strings: strings,\n expressions: values,\n })\n\n return await this.query(query, parameters)\n }\n\n // -------------------------------------------------------------------------\n // Protected Abstract Methods\n // -------------------------------------------------------------------------\n\n protected abstract loadTables(tablePaths?: string[]): Promise<Table[]>\n\n protected abstract loadViews(tablePaths?: string[]): Promise<View[]>\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n // Do nothing\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n // Do nothing\n }\n\n /**\n * Loads given table's data from the database.\n *\n * @param tablePath\n */\n async getTable(tablePath: string): Promise<Table | undefined> {\n this.loadedTables = await this.loadTables([tablePath])\n return this.loadedTables.length > 0 ? this.loadedTables[0] : undefined\n }\n\n /**\n * Loads all tables (with given names) from the database.\n *\n * @param tableNames\n */\n async getTables(tableNames?: string[]): Promise<Table[]> {\n if (!tableNames) {\n // Don't cache in this case.\n // This is the new case & isn't used anywhere else anyway.\n return await this.loadTables(tableNames)\n }\n\n this.loadedTables = await this.loadTables(tableNames)\n return this.loadedTables\n }\n\n /**\n * Loads given view's data from the database.\n *\n * @param viewPath\n */\n async getView(viewPath: string): Promise<View | undefined> {\n this.loadedViews = await this.loadViews([viewPath])\n return this.loadedViews.length > 0 ? this.loadedViews[0] : undefined\n }\n\n /**\n * Loads given view's data from the database.\n *\n * @param viewPaths\n */\n async getViews(viewPaths?: string[]): Promise<View[]> {\n this.loadedViews = await this.loadViews(viewPaths)\n return this.loadedViews\n }\n\n /**\n * Enables special query runner mode in which sql queries won't be executed,\n * instead they will be memorized into a special variable inside query runner.\n * You can get memorized sql using getMemorySql() method.\n */\n enableSqlMemory(): void {\n this.sqlInMemory = new SqlInMemory()\n this.sqlMemoryMode = true\n }\n\n /**\n * Disables special query runner mode in which sql queries won't be executed\n * started by calling enableSqlMemory() method.\n *\n * Previously memorized sql will be flushed.\n */\n disableSqlMemory(): void {\n this.sqlInMemory = new SqlInMemory()\n this.sqlMemoryMode = false\n }\n\n /**\n * Flushes all memorized sqls.\n */\n clearSqlMemory(): void {\n this.sqlInMemory = new SqlInMemory()\n }\n\n /**\n * Gets sql stored in the memory. Parameters in the sql are already replaced.\n */\n getMemorySql(): SqlInMemory {\n return this.sqlInMemory\n }\n\n /**\n * Executes up sql queries.\n */\n async executeMemoryUpSql(): Promise<void> {\n for (const { query, parameters } of this.sqlInMemory.upQueries) {\n await this.query(query, parameters)\n }\n }\n\n /**\n * Executes down sql queries.\n */\n async executeMemoryDownSql(): Promise<void> {\n for (const {\n query,\n parameters,\n } of this.sqlInMemory.downQueries.reverse()) {\n await this.query(query, parameters)\n }\n }\n\n getReplicationMode(): ReplicationMode {\n return this.mode\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets view from previously loaded views, otherwise loads it from database.\n *\n * @param viewName\n */\n protected async getCachedView(viewName: string): Promise<View> {\n const view = this.loadedViews.find((view) => view.name === viewName)\n if (view) return view\n\n const foundViews = await this.loadViews([viewName])\n if (foundViews.length > 0) {\n this.loadedViews.push(foundViews[0])\n return foundViews[0]\n } else {\n throw new TypeORMError(`View \"${viewName}\" does not exist.`)\n }\n }\n\n /**\n * Gets table from previously loaded tables, otherwise loads it from database.\n *\n * @param tableName\n */\n protected async getCachedTable(tableName: string): Promise<Table> {\n if (tableName in this.cachedTablePaths) {\n const tablePath = this.cachedTablePaths[tableName]\n const table = this.loadedTables.find(\n (table) => this.getTablePath(table) === tablePath,\n )\n\n if (table) {\n return table\n }\n }\n\n const foundTables = await this.loadTables([tableName])\n\n if (foundTables.length > 0) {\n const foundTablePath = this.getTablePath(foundTables[0])\n\n const cachedTable = this.loadedTables.find(\n (table) => this.getTablePath(table) === foundTablePath,\n )\n\n if (!cachedTable) {\n this.cachedTablePaths[tableName] = this.getTablePath(\n foundTables[0],\n )\n this.loadedTables.push(foundTables[0])\n return foundTables[0]\n } else {\n return cachedTable\n }\n } else {\n throw new TypeORMError(`Table \"${tableName}\" does not exist.`)\n }\n }\n\n /**\n * Replaces loaded table with given changed table.\n *\n * @param table\n * @param changedTable\n */\n protected replaceCachedTable(table: Table, changedTable: Table): void {\n const oldTablePath = this.getTablePath(table)\n const foundTable = this.loadedTables.find(\n (loadedTable) => this.getTablePath(loadedTable) === oldTablePath,\n )\n\n // Clean up the lookup cache..\n for (const [key, cachedPath] of Object.entries(this.cachedTablePaths)) {\n if (cachedPath === oldTablePath) {\n this.cachedTablePaths[key] = this.getTablePath(changedTable)\n }\n }\n\n if (foundTable) {\n foundTable.database = changedTable.database\n foundTable.schema = changedTable.schema\n foundTable.name = changedTable.name\n foundTable.columns = changedTable.columns\n foundTable.indices = changedTable.indices\n foundTable.foreignKeys = changedTable.foreignKeys\n foundTable.uniques = changedTable.uniques\n foundTable.checks = changedTable.checks\n foundTable.justCreated = changedTable.justCreated\n foundTable.engine = changedTable.engine\n foundTable.comment = changedTable.comment\n }\n }\n\n protected getTablePath(\n target: EntityMetadata | Table | View | TableForeignKey | string,\n ): string {\n const parsed = this.dataSource.driver.parseTableName(target)\n\n return this.dataSource.driver.buildTableName(\n parsed.tableName,\n parsed.schema,\n parsed.database,\n )\n }\n\n protected getTypeormMetadataTableName(): string {\n const options = <\n SqlServerDataSourceOptions | PostgresDataSourceOptions\n >this.dataSource.driver.options\n return this.dataSource.driver.buildTableName(\n this.dataSource.metadataTableName,\n options.schema,\n options.database,\n )\n }\n\n /**\n * Generates SQL query to select record from typeorm metadata table.\n *\n * @param param0\n * @param param0.database\n * @param param0.schema\n * @param param0.table\n * @param param0.type\n * @param param0.name\n */\n protected selectTypeormMetadataSql({\n database,\n schema,\n table,\n type,\n name,\n }: {\n database?: string\n schema?: string\n table?: string\n type: MetadataTableType\n name?: string\n }): Query {\n const qb = this.dataSource.createQueryBuilder()\n const selectQb = qb\n .select()\n .from(this.getTypeormMetadataTableName(), \"t\")\n .where(`${qb.escape(\"type\")} = :type`, { type })\n\n if (name) {\n selectQb.andWhere(`${qb.escape(\"name\")} = :name`, { name })\n }\n\n if (database) {\n selectQb.andWhere(`${qb.escape(\"database\")} = :database`, {\n database,\n })\n }\n\n if (schema) {\n selectQb.andWhere(`${qb.escape(\"schema\")} = :schema`, { schema })\n }\n\n if (table) {\n selectQb.andWhere(`${qb.escape(\"table\")} = :table`, { table })\n }\n\n const [query, parameters] = selectQb.getQueryAndParameters()\n return new Query(query, parameters)\n }\n\n /**\n * Generates SQL query to insert a record into typeorm metadata table.\n *\n * @param param0\n * @param param0.database\n * @param param0.schema\n * @param param0.table\n * @param param0.type\n * @param param0.name\n * @param param0.value\n */\n protected insertTypeormMetadataSql({\n database,\n schema,\n table,\n type,\n name,\n value,\n }: {\n database?: string\n schema?: string\n table?: string\n type: MetadataTableType\n name: string\n value?: string\n }): Query {\n const [query, parameters] = this.dataSource\n .createQueryBuilder()\n .insert()\n .into(this.getTypeormMetadataTableName())\n .values({\n database: database,\n schema: schema,\n table: table,\n type: type,\n name: name,\n value: value,\n })\n .getQueryAndParameters()\n\n return new Query(query, parameters)\n }\n\n /**\n * Generates SQL query to update a record in typeorm metadata table.\n *\n * @param param0\n * @param param0.database\n * @param param0.schema\n * @param param0.table\n * @param param0.name\n * @param param0.value\n * @param param0.valueToSet\n * @param param0.type\n */\n protected updateTypeormMetadataSql({\n database,\n schema,\n table,\n type,\n name,\n value,\n valueToSet,\n }: {\n database?: string\n schema?: string\n table?: string\n name?: string\n value?: string\n valueToSet: QueryDeepPartialEntity<unknown>\n type: MetadataTableType\n }): Query {\n const qb = this.dataSource.createQueryBuilder()\n const updateQb = qb\n .update(this.getTypeormMetadataTableName())\n .set(valueToSet)\n .where(`${qb.escape(\"type\")} = :type`, { type })\n\n if (value) {\n updateQb.andWhere(`${qb.escape(\"value\")} = :value`, { value })\n }\n if (name) {\n updateQb.andWhere(`${qb.escape(\"name\")} = :name`, { name })\n }\n if (database) {\n updateQb.andWhere(`${qb.escape(\"database\")} = :database`, {\n database,\n })\n }\n if (schema) {\n updateQb.andWhere(`${qb.escape(\"schema\")} = :schema`, { schema })\n }\n if (table) {\n updateQb.andWhere(`${qb.escape(\"table\")} = :table`, { table })\n }\n\n const [query, parameters] = updateQb.getQueryAndParameters()\n return new Query(query, parameters)\n }\n\n /**\n * Generates SQL query to delete a record from typeorm metadata table.\n *\n * @param param0\n * @param param0.database\n * @param param0.schema\n * @param param0.table\n * @param param0.type\n * @param param0.name\n */\n protected deleteTypeormMetadataSql({\n database,\n schema,\n table,\n type,\n name,\n }: {\n database?: string\n schema?: string\n table?: string\n type: MetadataTableType\n name: string\n }): Query {\n const qb = this.dataSource.createQueryBuilder()\n const deleteQb = qb\n .delete()\n .from(this.getTypeormMetadataTableName())\n .where(`${qb.escape(\"type\")} = :type`, { type })\n .andWhere(`${qb.escape(\"name\")} = :name`, { name })\n\n if (database) {\n deleteQb.andWhere(`${qb.escape(\"database\")} = :database`, {\n database,\n })\n }\n\n if (schema) {\n deleteQb.andWhere(`${qb.escape(\"schema\")} = :schema`, { schema })\n }\n\n if (table) {\n deleteQb.andWhere(`${qb.escape(\"table\")} = :table`, { table })\n }\n\n const [query, parameters] = deleteQb.getQueryAndParameters()\n return new Query(query, parameters)\n }\n\n /**\n * Checks if at least one of column properties was changed.\n * Does not checks column type, length and autoincrement, because these properties changes separately.\n *\n * @param oldColumn\n * @param newColumn\n * @param checkDefault\n * @param checkComment\n * @param checkEnum\n */\n protected isColumnChanged(\n oldColumn: TableColumn,\n newColumn: TableColumn,\n checkDefault?: boolean,\n checkComment?: boolean,\n checkEnum = true,\n ): boolean {\n return (\n oldColumn.charset !== newColumn.charset ||\n oldColumn.collation !== newColumn.collation ||\n oldColumn.precision !== newColumn.precision ||\n oldColumn.scale !== newColumn.scale ||\n oldColumn.unsigned !== newColumn.unsigned || // MySQL only\n oldColumn.asExpression !== newColumn.asExpression ||\n (!!checkDefault && oldColumn.default !== newColumn.default) ||\n oldColumn.onUpdate !== newColumn.onUpdate || // MySQL only\n oldColumn.isNullable !== newColumn.isNullable ||\n (!!checkComment && oldColumn.comment !== newColumn.comment) ||\n (checkEnum && this.isEnumChanged(oldColumn, newColumn))\n )\n }\n\n protected isEnumChanged(oldColumn: TableColumn, newColumn: TableColumn) {\n return !OrmUtils.isArraysEqual(\n oldColumn.enum ?? [],\n newColumn.enum ?? [],\n )\n }\n\n /**\n * Checks if column length is by default.\n *\n * @param table\n * @param column\n * @param length\n */\n protected isDefaultColumnLength(\n table: Table,\n column: TableColumn,\n length: string,\n ): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.dataSource.hasMetadata(table.name)) {\n const metadata = this.dataSource.getMetadata(table.name)\n const columnMetadata = metadata.findColumnWithDatabaseName(\n column.name,\n )\n\n if (columnMetadata) {\n const columnMetadataLength =\n this.dataSource.driver.getColumnLength(columnMetadata)\n if (columnMetadataLength) return false\n }\n }\n\n if (this.dataSource.driver.dataTypeDefaults?.[column.type]?.length) {\n return (\n this.dataSource.driver.dataTypeDefaults[\n column.type\n ].length!.toString() === length.toString()\n )\n }\n\n return false\n }\n\n /**\n * Checks if column precision is by default.\n *\n * @param table\n * @param column\n * @param precision\n */\n protected isDefaultColumnPrecision(\n table: Table,\n column: TableColumn,\n precision: number,\n ): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.dataSource.hasMetadata(table.name)) {\n const metadata = this.dataSource.getMetadata(table.name)\n const columnMetadata = metadata.findColumnWithDatabaseName(\n column.name,\n )\n if (\n columnMetadata?.precision !== null &&\n columnMetadata?.precision !== undefined\n )\n return false\n }\n\n if (\n this.dataSource.driver.dataTypeDefaults?.[column.type]\n ?.precision !== null &&\n this.dataSource.driver.dataTypeDefaults?.[column.type]\n ?.precision !== undefined\n )\n return (\n this.dataSource.driver.dataTypeDefaults[column.type]\n .precision === precision\n )\n\n return false\n }\n\n /**\n * Checks if column scale is by default.\n *\n * @param table\n * @param column\n * @param scale\n */\n protected isDefaultColumnScale(\n table: Table,\n column: TableColumn,\n scale: number,\n ): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.dataSource.hasMetadata(table.name)) {\n const metadata = this.dataSource.getMetadata(table.name)\n const columnMetadata = metadata.findColumnWithDatabaseName(\n column.name,\n )\n if (\n columnMetadata?.scale !== null &&\n columnMetadata?.scale !== undefined\n )\n return false\n }\n\n if (\n this.dataSource.driver.dataTypeDefaults?.[column.type]?.scale !==\n null &&\n this.dataSource.driver.dataTypeDefaults?.[column.type]?.scale !==\n undefined\n )\n return (\n this.dataSource.driver.dataTypeDefaults[column.type].scale ===\n scale\n )\n\n return false\n }\n\n /**\n * Executes sql used special for schema build.\n *\n * @param upQueries\n * @param downQueries\n */\n protected async executeQueries(\n upQueries: Query | Query[],\n downQueries: Query | Query[],\n ): Promise<void> {\n if (InstanceChecker.isQuery(upQueries)) upQueries = [upQueries]\n if (InstanceChecker.isQuery(downQueries)) downQueries = [downQueries]\n\n this.sqlInMemory.upQueries.push(...upQueries)\n this.sqlInMemory.downQueries.push(...downQueries)\n\n // if sql-in-memory mode is enabled then simply store sql in memory and return\n if (this.sqlMemoryMode === true)\n return Promise.resolve() as Promise<any>\n\n for (const { query, parameters } of upQueries) {\n await this.query(query, parameters)\n }\n }\n\n /**\n * Generated an index name for a table and index\n *\n * @param table\n * @param index\n */\n protected generateIndexName(\n table: Table | View,\n index: TableIndex,\n ): string {\n // new index may be passed without name. In this case we generate index name manually.\n return this.dataSource.namingStrategy.indexName(\n table,\n index.columnNames,\n index.where,\n )\n }\n}\n"]}
|
|
@@ -92,12 +92,21 @@ export interface QueryRunner extends AsyncDisposable {
|
|
|
92
92
|
rollbackTransaction(): Promise<void>;
|
|
93
93
|
/**
|
|
94
94
|
* Executes a given SQL query and returns raw database results.
|
|
95
|
+
*
|
|
96
|
+
* Note: Parameters may be named if using mysql2 with extra.namedPlaceholders set:
|
|
97
|
+
* Example:
|
|
98
|
+
* ```ts
|
|
99
|
+
* query(
|
|
100
|
+
* "SELECT * FROM USERS WHERE name = :name and age = :age",
|
|
101
|
+
* { name: "John", age: 24 },
|
|
102
|
+
* )
|
|
103
|
+
* ```
|
|
95
104
|
*/
|
|
96
|
-
query(query: string, parameters: any[] | undefined, useStructuredResult: true): Promise<QueryResult>;
|
|
105
|
+
query(query: string, parameters: any[] | ObjectLiteral | undefined, useStructuredResult: true): Promise<QueryResult>;
|
|
97
106
|
/**
|
|
98
107
|
* Executes a given SQL query and returns raw database results.
|
|
99
108
|
*/
|
|
100
|
-
query(query: string, parameters?: any[]): Promise<any>;
|
|
109
|
+
query(query: string, parameters?: any[] | ObjectLiteral): Promise<any>;
|
|
101
110
|
/**
|
|
102
111
|
* Tagged template function that executes raw SQL query and returns raw database results.
|
|
103
112
|
* Template expressions are automatically transformed into database parameters.
|