typeorm 0.3.0-rc.9 → 0.3.0
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 +175 -119
- package/browser/cache/DbQueryResultCache.d.ts +6 -4
- package/browser/cache/DbQueryResultCache.js +180 -187
- package/browser/cache/DbQueryResultCache.js.map +1 -1
- package/browser/cache/QueryResultCache.js +1 -1
- package/browser/cache/QueryResultCache.js.map +1 -1
- package/browser/cache/QueryResultCacheFactory.d.ts +3 -3
- package/browser/cache/QueryResultCacheFactory.js +19 -15
- package/browser/cache/QueryResultCacheFactory.js.map +1 -1
- package/browser/cache/QueryResultCacheOptions.js +1 -1
- package/browser/cache/QueryResultCacheOptions.js.map +1 -1
- package/browser/cache/RedisQueryResultCache.d.ts +3 -3
- package/browser/cache/RedisQueryResultCache.js +104 -127
- package/browser/cache/RedisQueryResultCache.js.map +1 -1
- package/browser/common/DeepPartial.d.ts +3 -3
- package/browser/common/DeepPartial.js +1 -1
- package/browser/common/DeepPartial.js.map +1 -1
- package/browser/common/EntityTarget.d.ts +9 -0
- package/browser/common/EntityTarget.js +3 -0
- package/browser/common/EntityTarget.js.map +1 -0
- package/browser/common/MixedList.d.ts +8 -0
- package/browser/common/MixedList.js +3 -0
- package/browser/common/MixedList.js.map +1 -0
- package/browser/common/NonNever.d.ts +6 -0
- package/browser/common/NonNever.js +3 -0
- package/browser/common/NonNever.js.map +1 -0
- package/browser/common/ObjectLiteral.js +1 -1
- package/browser/common/ObjectLiteral.js.map +1 -1
- package/browser/common/ObjectType.js +1 -1
- package/browser/common/ObjectType.js.map +1 -1
- package/browser/common/RelationType.d.ts +14 -0
- package/browser/common/RelationType.js +3 -0
- package/browser/common/RelationType.js.map +1 -0
- package/browser/connection/BaseConnectionOptions.d.ts +4 -144
- package/browser/connection/BaseConnectionOptions.js +1 -1
- package/browser/connection/BaseConnectionOptions.js.map +1 -1
- package/browser/connection/Connection.d.ts +4 -219
- package/browser/connection/Connection.js +5 -531
- package/browser/connection/Connection.js.map +1 -1
- package/browser/connection/ConnectionManager.d.ts +11 -5
- package/browser/connection/ConnectionManager.js +26 -26
- package/browser/connection/ConnectionManager.js.map +1 -1
- package/browser/connection/ConnectionMetadataBuilder.d.ts +6 -6
- package/browser/connection/ConnectionMetadataBuilder.js +37 -31
- package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
- package/browser/connection/ConnectionOptions.d.ts +4 -14
- package/browser/connection/ConnectionOptions.js +1 -1
- package/browser/connection/ConnectionOptions.js.map +1 -1
- package/browser/connection/ConnectionOptionsReader.d.ts +8 -8
- package/browser/connection/ConnectionOptionsReader.js +145 -169
- package/browser/connection/ConnectionOptionsReader.js.map +1 -1
- package/browser/connection/options-reader/ConnectionOptionsEnvReader.d.ts +8 -2
- package/browser/connection/options-reader/ConnectionOptionsEnvReader.js +68 -49
- package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
- package/browser/connection/options-reader/ConnectionOptionsXmlReader.d.ts +4 -2
- package/browser/connection/options-reader/ConnectionOptionsXmlReader.js +46 -42
- package/browser/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
- package/browser/connection/options-reader/ConnectionOptionsYmlReader.d.ts +4 -2
- package/browser/connection/options-reader/ConnectionOptionsYmlReader.js +14 -11
- package/browser/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
- package/browser/container.d.ts +12 -0
- package/browser/container.js +19 -11
- package/browser/container.js.map +1 -1
- package/browser/data-source/BaseDataSourceOptions.d.ts +179 -0
- package/browser/data-source/BaseDataSourceOptions.js +3 -0
- package/browser/data-source/BaseDataSourceOptions.js.map +1 -0
- package/browser/data-source/DataSource.d.ts +246 -0
- package/browser/data-source/DataSource.js +448 -0
- package/browser/data-source/DataSource.js.map +1 -0
- package/browser/data-source/DataSourceOptions.d.ts +21 -0
- package/browser/data-source/DataSourceOptions.js +3 -0
- package/browser/data-source/DataSourceOptions.js.map +1 -0
- package/browser/data-source/index.d.ts +2 -0
- package/browser/data-source/index.js +4 -0
- package/browser/data-source/index.js.map +1 -0
- package/browser/decorator/Check.d.ts +2 -2
- package/browser/decorator/Check.js +9 -6
- package/browser/decorator/Check.js.map +1 -1
- package/browser/decorator/EntityRepository.d.ts +3 -1
- package/browser/decorator/EntityRepository.js +3 -1
- package/browser/decorator/EntityRepository.js.map +1 -1
- package/browser/decorator/Exclusion.d.ts +2 -2
- package/browser/decorator/Exclusion.js +9 -6
- package/browser/decorator/Exclusion.js.map +1 -1
- package/browser/decorator/Generated.d.ts +1 -1
- package/browser/decorator/Generated.js +3 -4
- package/browser/decorator/Generated.js.map +1 -1
- package/browser/decorator/Index.d.ts +10 -10
- package/browser/decorator/Index.js +28 -8
- package/browser/decorator/Index.js.map +1 -1
- package/browser/decorator/Unique.d.ts +7 -6
- package/browser/decorator/Unique.js +36 -7
- package/browser/decorator/Unique.js.map +1 -1
- package/browser/decorator/columns/Column.d.ts +13 -13
- package/browser/decorator/columns/Column.js +24 -12
- package/browser/decorator/columns/Column.js.map +1 -1
- package/browser/decorator/columns/CreateDateColumn.d.ts +2 -2
- package/browser/decorator/columns/CreateDateColumn.js +2 -2
- package/browser/decorator/columns/CreateDateColumn.js.map +1 -1
- package/browser/decorator/columns/DeleteDateColumn.d.ts +6 -0
- package/browser/decorator/columns/DeleteDateColumn.js +17 -0
- package/browser/decorator/columns/DeleteDateColumn.js.map +1 -0
- package/browser/decorator/columns/ObjectIdColumn.d.ts +2 -2
- package/browser/decorator/columns/ObjectIdColumn.js +2 -2
- package/browser/decorator/columns/ObjectIdColumn.js.map +1 -1
- package/browser/decorator/columns/PrimaryColumn.d.ts +11 -3
- package/browser/decorator/columns/PrimaryColumn.js +9 -5
- package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
- package/browser/decorator/columns/PrimaryGeneratedColumn.d.ts +7 -5
- package/browser/decorator/columns/PrimaryGeneratedColumn.js +9 -8
- package/browser/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
- package/browser/decorator/columns/UpdateDateColumn.d.ts +2 -2
- package/browser/decorator/columns/UpdateDateColumn.js +2 -2
- package/browser/decorator/columns/UpdateDateColumn.js.map +1 -1
- package/browser/decorator/columns/VersionColumn.d.ts +2 -2
- package/browser/decorator/columns/VersionColumn.js +2 -2
- package/browser/decorator/columns/VersionColumn.js.map +1 -1
- package/browser/decorator/columns/ViewColumn.d.ts +2 -1
- package/browser/decorator/columns/ViewColumn.js +3 -3
- package/browser/decorator/columns/ViewColumn.js.map +1 -1
- package/browser/decorator/entity/ChildEntity.d.ts +1 -1
- package/browser/decorator/entity/ChildEntity.js +3 -3
- package/browser/decorator/entity/ChildEntity.js.map +1 -1
- package/browser/decorator/entity/Entity.d.ts +3 -3
- package/browser/decorator/entity/Entity.js +7 -4
- package/browser/decorator/entity/Entity.js.map +1 -1
- package/browser/decorator/entity/TableInheritance.d.ts +2 -2
- package/browser/decorator/entity/TableInheritance.js +6 -2
- package/browser/decorator/entity/TableInheritance.js.map +1 -1
- package/browser/decorator/entity-view/ViewEntity.d.ts +2 -2
- package/browser/decorator/entity-view/ViewEntity.js +10 -4
- package/browser/decorator/entity-view/ViewEntity.js.map +1 -1
- package/browser/decorator/listeners/AfterInsert.d.ts +1 -1
- package/browser/decorator/listeners/AfterInsert.js +2 -2
- package/browser/decorator/listeners/AfterInsert.js.map +1 -1
- package/browser/decorator/listeners/AfterLoad.d.ts +1 -1
- package/browser/decorator/listeners/AfterLoad.js +2 -2
- package/browser/decorator/listeners/AfterLoad.js.map +1 -1
- package/browser/decorator/listeners/AfterRecover.d.ts +4 -0
- package/browser/decorator/listeners/AfterRecover.js +16 -0
- package/browser/decorator/listeners/AfterRecover.js.map +1 -0
- package/browser/decorator/listeners/AfterRemove.d.ts +1 -1
- package/browser/decorator/listeners/AfterRemove.js +2 -2
- package/browser/decorator/listeners/AfterRemove.js.map +1 -1
- package/browser/decorator/listeners/AfterSoftRemove.d.ts +4 -0
- package/browser/decorator/listeners/AfterSoftRemove.js +16 -0
- package/browser/decorator/listeners/AfterSoftRemove.js.map +1 -0
- package/browser/decorator/listeners/AfterUpdate.d.ts +1 -1
- package/browser/decorator/listeners/AfterUpdate.js +2 -2
- package/browser/decorator/listeners/AfterUpdate.js.map +1 -1
- package/browser/decorator/listeners/BeforeInsert.d.ts +1 -1
- package/browser/decorator/listeners/BeforeInsert.js +2 -2
- package/browser/decorator/listeners/BeforeInsert.js.map +1 -1
- package/browser/decorator/listeners/BeforeRecover.d.ts +4 -0
- package/browser/decorator/listeners/BeforeRecover.js +16 -0
- package/browser/decorator/listeners/BeforeRecover.js.map +1 -0
- package/browser/decorator/listeners/BeforeRemove.d.ts +1 -1
- package/browser/decorator/listeners/BeforeRemove.js +2 -2
- package/browser/decorator/listeners/BeforeRemove.js.map +1 -1
- package/browser/decorator/listeners/BeforeSoftRemove.d.ts +4 -0
- package/browser/decorator/listeners/BeforeSoftRemove.js +16 -0
- package/browser/decorator/listeners/BeforeSoftRemove.js.map +1 -0
- package/browser/decorator/listeners/BeforeUpdate.d.ts +1 -1
- package/browser/decorator/listeners/BeforeUpdate.js +2 -2
- package/browser/decorator/listeners/BeforeUpdate.js.map +1 -1
- package/browser/decorator/listeners/EventSubscriber.d.ts +1 -1
- package/browser/decorator/listeners/EventSubscriber.js +2 -2
- package/browser/decorator/listeners/EventSubscriber.js.map +1 -1
- package/browser/decorator/options/ColumnCommonOptions.d.ts +1 -1
- package/browser/decorator/options/ColumnCommonOptions.js +1 -1
- package/browser/decorator/options/ColumnCommonOptions.js.map +1 -1
- package/browser/decorator/options/ColumnEmbeddedOptions.d.ts +6 -0
- package/browser/decorator/options/ColumnEmbeddedOptions.js +1 -1
- package/browser/decorator/options/ColumnEmbeddedOptions.js.map +1 -1
- package/browser/decorator/options/ColumnEnumOptions.js +1 -1
- package/browser/decorator/options/ColumnEnumOptions.js.map +1 -1
- package/browser/decorator/options/ColumnHstoreOptions.js +1 -1
- package/browser/decorator/options/ColumnHstoreOptions.js.map +1 -1
- package/browser/decorator/options/ColumnNumericOptions.js +1 -1
- package/browser/decorator/options/ColumnNumericOptions.js.map +1 -1
- package/browser/decorator/options/ColumnOptions.d.ts +5 -1
- package/browser/decorator/options/ColumnOptions.js +1 -1
- package/browser/decorator/options/ColumnOptions.js.map +1 -1
- package/browser/decorator/options/ColumnWithLengthOptions.js +1 -1
- package/browser/decorator/options/ColumnWithLengthOptions.js.map +1 -1
- package/browser/decorator/options/ColumnWithWidthOptions.js +1 -1
- package/browser/decorator/options/ColumnWithWidthOptions.js.map +1 -1
- package/browser/decorator/options/EntityOptions.js +1 -1
- package/browser/decorator/options/EntityOptions.js.map +1 -1
- package/browser/decorator/options/IndexOptions.d.ts +5 -0
- package/browser/decorator/options/IndexOptions.js +1 -1
- package/browser/decorator/options/IndexOptions.js.map +1 -1
- package/browser/decorator/options/JoinColumnOptions.js +1 -1
- package/browser/decorator/options/JoinColumnOptions.js.map +1 -1
- package/browser/decorator/options/JoinTableMultipleColumnsOptions.js +1 -1
- package/browser/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
- package/browser/decorator/options/JoinTableOptions.js +1 -1
- package/browser/decorator/options/JoinTableOptions.js.map +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +22 -0
- package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js +3 -0
- package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -0
- package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
- package/browser/decorator/options/RelationOptions.d.ts +12 -2
- package/browser/decorator/options/RelationOptions.js +1 -1
- package/browser/decorator/options/RelationOptions.js.map +1 -1
- package/browser/decorator/options/SpatialColumnOptions.js +1 -1
- package/browser/decorator/options/SpatialColumnOptions.js.map +1 -1
- package/browser/decorator/options/TransactionOptions.js +1 -1
- package/browser/decorator/options/TransactionOptions.js.map +1 -1
- package/browser/decorator/options/UniqueOptions.d.ts +10 -0
- package/browser/decorator/options/UniqueOptions.js +3 -0
- package/browser/decorator/options/UniqueOptions.js.map +1 -0
- package/browser/decorator/options/ValueTransformer.js +1 -1
- package/browser/decorator/options/ValueTransformer.js.map +1 -1
- package/browser/decorator/options/ViewColumnOptions.d.ts +15 -0
- package/browser/decorator/options/ViewColumnOptions.js +3 -0
- package/browser/decorator/options/ViewColumnOptions.js.map +1 -0
- package/browser/decorator/options/ViewEntityOptions.d.ts +7 -2
- package/browser/decorator/options/ViewEntityOptions.js +1 -1
- package/browser/decorator/options/ViewEntityOptions.js.map +1 -1
- package/browser/decorator/relations/JoinColumn.d.ts +4 -4
- package/browser/decorator/relations/JoinColumn.js +6 -4
- package/browser/decorator/relations/JoinColumn.js.map +1 -1
- package/browser/decorator/relations/JoinTable.d.ts +4 -4
- package/browser/decorator/relations/JoinTable.js +13 -4
- package/browser/decorator/relations/JoinTable.js.map +1 -1
- package/browser/decorator/relations/ManyToMany.d.ts +4 -3
- package/browser/decorator/relations/ManyToMany.js +12 -8
- package/browser/decorator/relations/ManyToMany.js.map +1 -1
- package/browser/decorator/relations/ManyToOne.d.ts +10 -9
- package/browser/decorator/relations/ManyToOne.js +17 -13
- package/browser/decorator/relations/ManyToOne.js.map +1 -1
- package/browser/decorator/relations/OneToMany.d.ts +6 -4
- package/browser/decorator/relations/OneToMany.js +13 -9
- package/browser/decorator/relations/OneToMany.js.map +1 -1
- package/browser/decorator/relations/OneToOne.d.ts +4 -3
- package/browser/decorator/relations/OneToOne.js +12 -8
- package/browser/decorator/relations/OneToOne.js.map +1 -1
- package/browser/decorator/relations/RelationCount.d.ts +2 -2
- package/browser/decorator/relations/RelationCount.js +2 -2
- package/browser/decorator/relations/RelationCount.js.map +1 -1
- package/browser/decorator/relations/RelationId.d.ts +2 -2
- package/browser/decorator/relations/RelationId.js +2 -2
- package/browser/decorator/relations/RelationId.js.map +1 -1
- package/browser/decorator/tree/Tree.d.ts +2 -1
- package/browser/decorator/tree/Tree.js +4 -3
- package/browser/decorator/tree/Tree.js.map +1 -1
- package/browser/decorator/tree/TreeChildren.d.ts +2 -2
- package/browser/decorator/tree/TreeChildren.js +11 -6
- package/browser/decorator/tree/TreeChildren.js.map +1 -1
- package/browser/decorator/tree/TreeLevelColumn.d.ts +1 -1
- package/browser/decorator/tree/TreeLevelColumn.js +2 -2
- package/browser/decorator/tree/TreeLevelColumn.js.map +1 -1
- package/browser/decorator/tree/TreeParent.d.ts +4 -1
- package/browser/decorator/tree/TreeParent.js +13 -6
- package/browser/decorator/tree/TreeParent.js.map +1 -1
- package/browser/driver/Driver.d.ts +39 -9
- package/browser/driver/Driver.js +1 -1
- package/browser/driver/Driver.js.map +1 -1
- package/browser/driver/DriverFactory.d.ts +2 -2
- package/browser/driver/DriverFactory.js +40 -13
- package/browser/driver/DriverFactory.js.map +1 -1
- package/browser/driver/DriverUtils.d.ts +39 -10
- package/browser/driver/DriverUtils.js +179 -55
- package/browser/driver/DriverUtils.js.map +1 -1
- package/browser/driver/Query.d.ts +1 -0
- package/browser/driver/Query.js +4 -5
- package/browser/driver/Query.js.map +1 -1
- package/browser/driver/SqlInMemory.js +3 -5
- package/browser/driver/SqlInMemory.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlConnection.d.ts +13 -0
- package/browser/driver/aurora-mysql/AuroraMysqlConnection.js +15 -0
- package/browser/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -0
- package/browser/driver/{aurora-data-api/AuroraDataApiConnectionCredentialsOptions.d.ts → aurora-mysql/AuroraMysqlConnectionCredentialsOptions.d.ts} +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js +3 -0
- package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -0
- package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.d.ts +34 -0
- package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.js +3 -0
- package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -0
- package/browser/driver/{aurora-data-api/AuroraDataApiDriver.d.ts → aurora-mysql/AuroraMysqlDriver.d.ts} +49 -18
- package/browser/driver/{aurora-data-api/AuroraDataApiDriver.js → aurora-mysql/AuroraMysqlDriver.js} +322 -211
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -0
- package/{driver/aurora-data-api/AuroraDataApiQueryRunner.d.ts → browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts} +27 -18
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +1677 -0
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -0
- package/browser/driver/aurora-postgres/AuroraPostgresConnectionOptions.d.ts +34 -0
- package/browser/driver/aurora-postgres/AuroraPostgresConnectionOptions.js +3 -0
- package/browser/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -0
- package/browser/driver/aurora-postgres/AuroraPostgresDriver.d.ts +70 -0
- package/browser/driver/aurora-postgres/AuroraPostgresDriver.js +99 -0
- package/browser/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -0
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +48 -0
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js +135 -0
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -0
- package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +55 -0
- package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js +3 -0
- package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -0
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.d.ts +59 -0
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +149 -0
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -0
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +32 -0
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +124 -0
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -0
- package/browser/driver/capacitor/CapacitorConnectionOptions.d.ts +30 -0
- package/browser/driver/capacitor/CapacitorConnectionOptions.js +3 -0
- package/browser/driver/capacitor/CapacitorConnectionOptions.js.map +1 -0
- package/browser/driver/capacitor/CapacitorDriver.d.ts +27 -0
- package/browser/driver/capacitor/CapacitorDriver.js +79 -0
- package/browser/driver/capacitor/CapacitorDriver.js.map +1 -0
- package/browser/driver/capacitor/CapacitorQueryRunner.d.ts +33 -0
- package/browser/driver/capacitor/CapacitorQueryRunner.js +94 -0
- package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -0
- package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.js +1 -1
- package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachConnectionOptions.d.ts +12 -2
- package/browser/driver/cockroachdb/CockroachConnectionOptions.js +1 -1
- package/browser/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.d.ts +49 -8
- package/browser/driver/cockroachdb/CockroachDriver.js +321 -263
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +22 -18
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +1576 -2026
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/cordova/CordovaConnectionOptions.d.ts +7 -2
- package/browser/driver/cordova/CordovaConnectionOptions.js +1 -1
- package/browser/driver/cordova/CordovaConnectionOptions.js.map +1 -1
- package/browser/driver/cordova/CordovaDriver.d.ts +5 -4
- package/browser/driver/cordova/CordovaDriver.js +33 -49
- package/browser/driver/cordova/CordovaDriver.js.map +1 -1
- package/browser/driver/cordova/CordovaQueryRunner.d.ts +27 -1
- package/browser/driver/cordova/CordovaQueryRunner.js +100 -53
- package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/browser/driver/expo/ExpoConnectionOptions.d.ts +6 -2
- package/browser/driver/expo/ExpoConnectionOptions.js +1 -1
- package/browser/driver/expo/ExpoConnectionOptions.js.map +1 -1
- package/browser/driver/expo/ExpoDriver.d.ts +4 -7
- package/browser/driver/expo/ExpoDriver.js +32 -53
- package/browser/driver/expo/ExpoDriver.js.map +1 -1
- package/browser/driver/expo/ExpoQueryRunner.d.ts +9 -1
- package/browser/driver/expo/ExpoQueryRunner.js +123 -94
- package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/MongoConnectionOptions.d.ts +20 -3
- package/browser/driver/mongodb/MongoConnectionOptions.js +1 -1
- package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/browser/driver/mongodb/MongoDriver.d.ts +36 -12
- package/browser/driver/mongodb/MongoDriver.js +145 -99
- package/browser/driver/mongodb/MongoDriver.js.map +1 -1
- package/browser/driver/mongodb/MongoQueryRunner.d.ts +27 -8
- package/browser/driver/mongodb/MongoQueryRunner.js +330 -748
- package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/typings.d.ts +12 -11
- package/browser/driver/mongodb/typings.js.map +1 -1
- package/browser/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +4 -0
- package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js +1 -1
- package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/mysql/MysqlConnectionOptions.d.ts +8 -2
- package/browser/driver/mysql/MysqlConnectionOptions.js +1 -1
- package/browser/driver/mysql/MysqlConnectionOptions.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.d.ts +48 -11
- package/browser/driver/mysql/MysqlDriver.js +440 -271
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.d.ts +25 -15
- package/browser/driver/mysql/MysqlQueryRunner.js +1552 -1751
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/nativescript/NativescriptConnectionOptions.d.ts +27 -2
- package/browser/driver/nativescript/NativescriptConnectionOptions.js +1 -1
- package/browser/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
- package/browser/driver/nativescript/NativescriptDriver.d.ts +5 -4
- package/browser/driver/nativescript/NativescriptDriver.js +36 -43
- package/browser/driver/nativescript/NativescriptDriver.js.map +1 -1
- package/browser/driver/nativescript/NativescriptQueryRunner.d.ts +9 -1
- package/browser/driver/nativescript/NativescriptQueryRunner.js +54 -39
- package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleConnectionCredentialsOptions.d.ts +4 -0
- package/browser/driver/oracle/OracleConnectionCredentialsOptions.js +1 -1
- package/browser/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/oracle/OracleConnectionOptions.d.ts +11 -2
- package/browser/driver/oracle/OracleConnectionOptions.js +1 -1
- package/browser/driver/oracle/OracleConnectionOptions.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.d.ts +31 -7
- package/browser/driver/oracle/OracleDriver.js +328 -234
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.d.ts +23 -9
- package/browser/driver/oracle/OracleQueryRunner.js +1346 -1670
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresConnectionCredentialsOptions.d.ts +1 -1
- package/browser/driver/postgres/PostgresConnectionCredentialsOptions.js +1 -1
- package/browser/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/postgres/PostgresConnectionOptions.d.ts +34 -2
- package/browser/driver/postgres/PostgresConnectionOptions.js +1 -1
- package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.d.ts +81 -19
- package/browser/driver/postgres/PostgresDriver.js +618 -439
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.d.ts +48 -26
- package/browser/driver/postgres/PostgresQueryRunner.js +2128 -2286
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/react-native/ReactNativeConnectionOptions.d.ts +7 -2
- package/browser/driver/react-native/ReactNativeConnectionOptions.js +1 -1
- package/browser/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
- package/browser/driver/react-native/ReactNativeDriver.d.ts +4 -3
- package/browser/driver/react-native/ReactNativeDriver.js +31 -42
- package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.d.ts +9 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.js +62 -53
- package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapConnectionCredentialsOptions.d.ts +45 -0
- package/browser/driver/sap/SapConnectionCredentialsOptions.js +3 -0
- package/browser/driver/sap/SapConnectionCredentialsOptions.js.map +1 -0
- package/browser/driver/sap/SapConnectionOptions.d.ts +59 -0
- package/browser/driver/sap/SapConnectionOptions.js +3 -0
- package/browser/driver/sap/SapConnectionOptions.js.map +1 -0
- package/browser/driver/sap/SapDriver.d.ts +214 -0
- package/browser/driver/sap/SapDriver.js +641 -0
- package/browser/driver/sap/SapDriver.js.map +1 -0
- package/browser/driver/sap/SapQueryRunner.d.ts +342 -0
- package/browser/driver/sap/SapQueryRunner.js +1987 -0
- package/browser/driver/sap/SapQueryRunner.js.map +1 -0
- package/browser/driver/sqlite/SqliteConnectionOptions.d.ts +7 -2
- package/browser/driver/sqlite/SqliteConnectionOptions.js +1 -1
- package/browser/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
- package/browser/driver/sqlite/SqliteDriver.d.ts +18 -4
- package/browser/driver/sqlite/SqliteDriver.js +104 -83
- package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
- package/browser/driver/sqlite/SqliteQueryRunner.d.ts +9 -1
- package/browser/driver/sqlite/SqliteQueryRunner.js +83 -68
- package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +47 -10
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +254 -139
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +25 -5
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +1022 -1441
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqljs/SqljsConnectionOptions.d.ts +7 -2
- package/browser/driver/sqljs/SqljsConnectionOptions.js +1 -1
- package/browser/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
- package/browser/driver/sqljs/SqljsDriver.d.ts +4 -3
- package/browser/driver/sqljs/SqljsDriver.js +153 -227
- package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
- package/browser/driver/sqljs/SqljsQueryRunner.d.ts +15 -1
- package/browser/driver/sqljs/SqljsQueryRunner.js +84 -61
- package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/MssqlParameter.d.ts +1 -0
- package/browser/driver/sqlserver/MssqlParameter.js +4 -9
- package/browser/driver/sqlserver/MssqlParameter.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +18 -2
- package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js +1 -1
- package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerConnectionOptions.d.ts +11 -6
- package/browser/driver/sqlserver/SqlServerConnectionOptions.js +1 -1
- package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.d.ts +43 -9
- package/browser/driver/sqlserver/SqlServerDriver.js +355 -253
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +19 -28
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +1810 -2309
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +10 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js +3 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +20 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js +3 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +16 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js +3 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +17 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js +3 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.d.ts +17 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js +3 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -0
- package/browser/driver/sqlserver/authentication/DefaultAuthentication.d.ts +13 -0
- package/browser/driver/sqlserver/authentication/DefaultAuthentication.js +3 -0
- package/browser/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -0
- package/browser/driver/sqlserver/authentication/NtlmAuthentication.d.ts +19 -0
- package/browser/driver/sqlserver/authentication/NtlmAuthentication.js +3 -0
- package/browser/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -0
- package/browser/driver/types/ColumnTypes.d.ts +5 -5
- package/browser/driver/types/ColumnTypes.js +1 -1
- package/browser/driver/types/ColumnTypes.js.map +1 -1
- package/browser/driver/types/DataTypeDefaults.js +1 -1
- package/browser/driver/types/DataTypeDefaults.js.map +1 -1
- package/browser/driver/types/DatabaseType.d.ts +1 -1
- package/browser/driver/types/DatabaseType.js +1 -1
- package/browser/driver/types/DatabaseType.js.map +1 -1
- package/browser/driver/types/IsolationLevel.js +1 -1
- package/browser/driver/types/IsolationLevel.js.map +1 -1
- package/browser/driver/types/MappedColumnTypes.d.ts +12 -0
- package/browser/driver/types/MappedColumnTypes.js +1 -1
- package/browser/driver/types/MappedColumnTypes.js.map +1 -1
- package/browser/driver/types/MetadataTableType.d.ts +5 -0
- package/browser/driver/types/MetadataTableType.js +8 -0
- package/browser/driver/types/MetadataTableType.js.map +1 -0
- package/browser/driver/types/ReplicationMode.d.ts +1 -0
- package/browser/driver/types/ReplicationMode.js +3 -0
- package/browser/driver/types/ReplicationMode.js.map +1 -0
- package/browser/driver/types/UpsertType.d.ts +1 -0
- package/browser/driver/types/UpsertType.js +3 -0
- package/browser/driver/types/UpsertType.js.map +1 -0
- package/browser/entity-manager/EntityManager.d.ts +143 -286
- package/browser/entity-manager/EntityManager.js +531 -439
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/entity-manager/EntityManagerFactory.d.ts +2 -2
- package/browser/entity-manager/EntityManagerFactory.js +6 -12
- package/browser/entity-manager/EntityManagerFactory.js.map +1 -1
- package/browser/entity-manager/MongoEntityManager.d.ts +101 -64
- package/browser/entity-manager/MongoEntityManager.js +499 -467
- package/browser/entity-manager/MongoEntityManager.js.map +1 -1
- package/browser/entity-manager/SqljsEntityManager.d.ts +3 -2
- package/browser/entity-manager/SqljsEntityManager.js +14 -36
- package/browser/entity-manager/SqljsEntityManager.js.map +1 -1
- package/browser/entity-schema/EntitySchema.d.ts +1 -0
- package/browser/entity-schema/EntitySchema.js +4 -5
- package/browser/entity-schema/EntitySchema.js.map +1 -1
- package/browser/entity-schema/EntitySchemaCheckOptions.js +1 -1
- package/browser/entity-schema/EntitySchemaCheckOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +4 -0
- package/browser/entity-schema/EntitySchemaColumnOptions.js +1 -1
- package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.d.ts +18 -0
- package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.js +4 -0
- package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -0
- package/browser/entity-schema/EntitySchemaEmbeddedError.d.ts +6 -0
- package/browser/entity-schema/EntitySchemaEmbeddedError.js +14 -0
- package/browser/entity-schema/EntitySchemaEmbeddedError.js.map +1 -0
- package/browser/entity-schema/EntitySchemaExclusionOptions.js +1 -1
- package/browser/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaIndexOptions.d.ts +7 -2
- package/browser/entity-schema/EntitySchemaIndexOptions.js +1 -1
- package/browser/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaOptions.d.ts +22 -10
- package/browser/entity-schema/EntitySchemaOptions.js +2 -6
- package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaRelationOptions.d.ts +15 -4
- package/browser/entity-schema/EntitySchemaRelationOptions.js +1 -1
- package/browser/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaTransformer.d.ts +1 -0
- package/browser/entity-schema/EntitySchemaTransformer.js +228 -183
- package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/browser/entity-schema/EntitySchemaUniqueOptions.d.ts +7 -2
- package/browser/entity-schema/EntitySchemaUniqueOptions.js +1 -1
- package/browser/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
- package/browser/error/AlreadyHasActiveConnectionError.d.ts +2 -2
- package/browser/error/AlreadyHasActiveConnectionError.js +6 -13
- package/browser/error/AlreadyHasActiveConnectionError.js.map +1 -1
- package/browser/error/CannotAttachTreeChildrenEntityError.d.ts +3 -3
- package/browser/error/CannotAttachTreeChildrenEntityError.js +7 -13
- package/browser/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
- package/browser/error/CannotConnectAlreadyConnectedError.d.ts +2 -2
- package/browser/error/CannotConnectAlreadyConnectedError.js +5 -12
- package/browser/error/CannotConnectAlreadyConnectedError.js.map +1 -1
- package/browser/error/CannotCreateEntityIdMapError.d.ts +2 -2
- package/browser/error/CannotCreateEntityIdMapError.js +7 -13
- package/browser/error/CannotCreateEntityIdMapError.js.map +1 -1
- package/browser/error/CannotDetermineEntityError.d.ts +2 -2
- package/browser/error/CannotDetermineEntityError.js +6 -12
- package/browser/error/CannotDetermineEntityError.js.map +1 -1
- package/browser/error/CannotExecuteNotConnectedError.d.ts +2 -2
- package/browser/error/CannotExecuteNotConnectedError.js +5 -12
- package/browser/error/CannotExecuteNotConnectedError.js.map +1 -1
- package/browser/error/CannotGetEntityManagerNotConnectedError.d.ts +2 -2
- package/browser/error/CannotGetEntityManagerNotConnectedError.js +5 -12
- package/browser/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
- package/browser/error/CannotReflectMethodParameterTypeError.d.ts +2 -2
- package/browser/error/CannotReflectMethodParameterTypeError.js +7 -14
- package/browser/error/CannotReflectMethodParameterTypeError.js.map +1 -1
- package/browser/error/CircularRelationsError.d.ts +2 -2
- package/browser/error/CircularRelationsError.js +6 -12
- package/browser/error/CircularRelationsError.js.map +1 -1
- package/browser/error/ColumnTypeUndefinedError.d.ts +2 -2
- package/browser/error/ColumnTypeUndefinedError.js +8 -15
- package/browser/error/ColumnTypeUndefinedError.js.map +1 -1
- package/browser/error/ConnectionIsNotSetError.d.ts +2 -2
- package/browser/error/ConnectionIsNotSetError.js +5 -12
- package/browser/error/ConnectionIsNotSetError.js.map +1 -1
- package/browser/error/ConnectionNotFoundError.d.ts +2 -2
- package/browser/error/ConnectionNotFoundError.js +5 -12
- package/browser/error/ConnectionNotFoundError.js.map +1 -1
- package/browser/error/CustomRepositoryCannotInheritRepositoryError.d.ts +2 -2
- package/browser/error/CustomRepositoryCannotInheritRepositoryError.js +8 -13
- package/browser/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
- package/browser/error/CustomRepositoryDoesNotHaveEntityError.d.ts +2 -2
- package/browser/error/CustomRepositoryDoesNotHaveEntityError.js +8 -13
- package/browser/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
- package/browser/error/CustomRepositoryNotFoundError.d.ts +2 -2
- package/browser/error/CustomRepositoryNotFoundError.js +8 -13
- package/browser/error/CustomRepositoryNotFoundError.js.map +1 -1
- package/browser/error/DataTypeNotSupportedError.d.ts +2 -2
- package/browser/error/DataTypeNotSupportedError.js +7 -13
- package/browser/error/DataTypeNotSupportedError.js.map +1 -1
- package/browser/error/DriverOptionNotSetError.d.ts +2 -2
- package/browser/error/DriverOptionNotSetError.js +6 -12
- package/browser/error/DriverOptionNotSetError.js.map +1 -1
- package/browser/error/DriverPackageNotInstalledError.d.ts +2 -2
- package/browser/error/DriverPackageNotInstalledError.js +6 -12
- package/browser/error/DriverPackageNotInstalledError.js.map +1 -1
- package/browser/error/EntityMetadataNotFoundError.d.ts +5 -6
- package/browser/error/EntityMetadataNotFoundError.js +17 -20
- package/browser/error/EntityMetadataNotFoundError.js.map +1 -1
- package/browser/error/EntityNotFoundError.d.ts +5 -5
- package/browser/error/EntityNotFoundError.js +21 -22
- package/browser/error/EntityNotFoundError.js.map +1 -1
- package/browser/error/EntityPropertyNotFoundError.d.ts +8 -0
- package/browser/error/EntityPropertyNotFoundError.js +13 -0
- package/browser/error/EntityPropertyNotFoundError.js.map +1 -0
- package/browser/error/FindRelationsNotFoundError.d.ts +7 -0
- package/browser/error/FindRelationsNotFoundError.js +19 -0
- package/browser/error/FindRelationsNotFoundError.js.map +1 -0
- package/browser/error/InitializedRelationError.d.ts +2 -1
- package/browser/error/InitializedRelationError.js +7 -13
- package/browser/error/InitializedRelationError.js.map +1 -1
- package/browser/error/InsertValuesMissingError.d.ts +2 -2
- package/browser/error/InsertValuesMissingError.js +6 -12
- package/browser/error/InsertValuesMissingError.js.map +1 -1
- package/browser/error/LimitOnUpdateNotSupportedError.d.ts +3 -3
- package/browser/error/LimitOnUpdateNotSupportedError.js +6 -13
- package/browser/error/LimitOnUpdateNotSupportedError.js.map +1 -1
- package/browser/error/LockNotSupportedOnGivenDriverError.d.ts +2 -2
- package/browser/error/LockNotSupportedOnGivenDriverError.js +5 -12
- package/browser/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
- package/browser/error/MetadataAlreadyExistsError.d.ts +2 -4
- package/browser/error/MetadataAlreadyExistsError.js +11 -16
- package/browser/error/MetadataAlreadyExistsError.js.map +1 -1
- package/browser/error/MetadataWithSuchNameAlreadyExistsError.d.ts +2 -4
- package/browser/error/MetadataWithSuchNameAlreadyExistsError.js +9 -15
- package/browser/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
- package/browser/error/MissingDeleteDateColumnError.d.ts +5 -0
- package/browser/error/MissingDeleteDateColumnError.js +8 -0
- package/browser/error/MissingDeleteDateColumnError.js.map +1 -0
- package/browser/error/MissingDriverError.d.ts +3 -3
- package/browser/error/MissingDriverError.js +6 -12
- package/browser/error/MissingDriverError.js.map +1 -1
- package/browser/error/MissingJoinColumnError.d.ts +2 -4
- package/browser/error/MissingJoinColumnError.js +12 -18
- package/browser/error/MissingJoinColumnError.js.map +1 -1
- package/browser/error/MissingJoinTableError.d.ts +2 -4
- package/browser/error/MissingJoinTableError.js +12 -18
- package/browser/error/MissingJoinTableError.js.map +1 -1
- package/browser/error/MissingPrimaryColumnError.d.ts +2 -4
- package/browser/error/MissingPrimaryColumnError.js +6 -15
- package/browser/error/MissingPrimaryColumnError.js.map +1 -1
- package/browser/error/MustBeEntityError.d.ts +2 -2
- package/browser/error/MustBeEntityError.js +5 -12
- package/browser/error/MustBeEntityError.js.map +1 -1
- package/browser/error/NamingStrategyNotFoundError.d.ts +2 -2
- package/browser/error/NamingStrategyNotFoundError.js +11 -14
- package/browser/error/NamingStrategyNotFoundError.js.map +1 -1
- package/browser/error/NestedSetMultipleRootError.d.ts +4 -0
- package/browser/error/NestedSetMultipleRootError.js +8 -0
- package/browser/error/NestedSetMultipleRootError.js.map +1 -0
- package/browser/error/NoConnectionForRepositoryError.d.ts +2 -2
- package/browser/error/NoConnectionForRepositoryError.js +6 -13
- package/browser/error/NoConnectionForRepositoryError.js.map +1 -1
- package/browser/error/NoConnectionOptionError.d.ts +2 -1
- package/browser/error/NoConnectionOptionError.js +6 -11
- package/browser/error/NoConnectionOptionError.js.map +1 -1
- package/browser/error/NoNeedToReleaseEntityManagerError.d.ts +2 -2
- package/browser/error/NoNeedToReleaseEntityManagerError.js +7 -14
- package/browser/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
- package/browser/error/NoVersionOrUpdateDateColumnError.d.ts +2 -2
- package/browser/error/NoVersionOrUpdateDateColumnError.js +5 -12
- package/browser/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
- package/browser/error/OffsetWithoutLimitNotSupportedError.d.ts +4 -4
- package/browser/error/OffsetWithoutLimitNotSupportedError.js +8 -13
- package/browser/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
- package/browser/error/OptimisticLockCanNotBeUsedError.d.ts +2 -2
- package/browser/error/OptimisticLockCanNotBeUsedError.js +5 -12
- package/browser/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
- package/browser/error/OptimisticLockVersionMismatchError.d.ts +2 -2
- package/browser/error/OptimisticLockVersionMismatchError.js +5 -12
- package/browser/error/OptimisticLockVersionMismatchError.js.map +1 -1
- package/browser/error/PersistedEntityNotFoundError.d.ts +2 -2
- package/browser/error/PersistedEntityNotFoundError.js +5 -12
- package/browser/error/PersistedEntityNotFoundError.js.map +1 -1
- package/browser/error/PessimisticLockTransactionRequiredError.d.ts +2 -2
- package/browser/error/PessimisticLockTransactionRequiredError.js +5 -12
- package/browser/error/PessimisticLockTransactionRequiredError.js.map +1 -1
- package/browser/error/PrimaryColumnCannotBeNullableError.d.ts +2 -2
- package/browser/error/PrimaryColumnCannotBeNullableError.js +6 -13
- package/browser/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
- package/browser/error/QueryFailedError.d.ts +6 -2
- package/browser/error/QueryFailedError.js +18 -14
- package/browser/error/QueryFailedError.js.map +1 -1
- package/browser/error/QueryRunnerAlreadyReleasedError.d.ts +2 -4
- package/browser/error/QueryRunnerAlreadyReleasedError.js +5 -14
- package/browser/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
- package/browser/error/QueryRunnerProviderAlreadyReleasedError.d.ts +2 -2
- package/browser/error/QueryRunnerProviderAlreadyReleasedError.js +6 -12
- package/browser/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
- package/browser/error/RepositoryNotFoundError.d.ts +4 -4
- package/browser/error/RepositoryNotFoundError.js +16 -16
- package/browser/error/RepositoryNotFoundError.js.map +1 -1
- package/browser/error/RepositoryNotTreeError.d.ts +4 -4
- package/browser/error/RepositoryNotTreeError.js +18 -19
- package/browser/error/RepositoryNotTreeError.js.map +1 -1
- package/browser/error/ReturningStatementNotSupportedError.d.ts +2 -2
- package/browser/error/ReturningStatementNotSupportedError.js +5 -12
- package/browser/error/ReturningStatementNotSupportedError.js.map +1 -1
- package/browser/error/SubjectRemovedAndUpdatedError.d.ts +2 -2
- package/browser/error/SubjectRemovedAndUpdatedError.js +6 -13
- package/browser/error/SubjectRemovedAndUpdatedError.js.map +1 -1
- package/browser/error/SubjectWithoutIdentifierError.d.ts +2 -2
- package/browser/error/SubjectWithoutIdentifierError.js +5 -13
- package/browser/error/SubjectWithoutIdentifierError.js.map +1 -1
- package/browser/error/TransactionAlreadyStartedError.d.ts +2 -2
- package/browser/error/TransactionAlreadyStartedError.js +5 -12
- package/browser/error/TransactionAlreadyStartedError.js.map +1 -1
- package/browser/error/TransactionNotStartedError.d.ts +2 -2
- package/browser/error/TransactionNotStartedError.js +5 -12
- package/browser/error/TransactionNotStartedError.js.map +1 -1
- package/browser/error/TreeRepositoryNotSupportedError.d.ts +2 -2
- package/browser/error/TreeRepositoryNotSupportedError.js +5 -12
- package/browser/error/TreeRepositoryNotSupportedError.js.map +1 -1
- package/browser/error/TypeORMError.d.ts +4 -0
- package/browser/error/TypeORMError.js +19 -0
- package/browser/error/TypeORMError.js.map +1 -0
- package/browser/error/UpdateValuesMissingError.d.ts +2 -5
- package/browser/error/UpdateValuesMissingError.js +5 -15
- package/browser/error/UpdateValuesMissingError.js.map +1 -1
- package/browser/error/UsingJoinColumnIsNotAllowedError.d.ts +2 -4
- package/browser/error/UsingJoinColumnIsNotAllowedError.js +6 -15
- package/browser/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
- package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.d.ts +2 -4
- package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +7 -16
- package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
- package/browser/error/UsingJoinTableIsNotAllowedError.d.ts +2 -4
- package/browser/error/UsingJoinTableIsNotAllowedError.js +7 -16
- package/browser/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
- package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.d.ts +2 -4
- package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js +7 -16
- package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
- package/browser/error/index.d.ts +62 -0
- package/browser/error/index.js +64 -0
- package/browser/error/index.js.map +1 -0
- package/browser/find-options/EqualOperator.d.ts +5 -0
- package/browser/find-options/EqualOperator.js +9 -0
- package/browser/find-options/EqualOperator.js.map +1 -0
- package/browser/find-options/FindManyOptions.d.ts +14 -0
- package/browser/find-options/FindManyOptions.js +3 -0
- package/browser/find-options/FindManyOptions.js.map +1 -0
- package/browser/find-options/FindOneOptions.d.ts +86 -0
- package/browser/find-options/FindOneOptions.js +3 -0
- package/browser/find-options/FindOneOptions.js.map +1 -0
- package/browser/find-options/FindOperator.d.ts +31 -8
- package/browser/find-options/FindOperator.js +64 -97
- package/browser/find-options/FindOperator.js.map +1 -1
- package/browser/find-options/FindOperatorType.d.ts +1 -1
- package/browser/find-options/FindOperatorType.js +1 -1
- package/browser/find-options/FindOperatorType.js.map +1 -1
- package/browser/find-options/FindOptionsOrder.d.ts +19 -0
- package/browser/find-options/FindOptionsOrder.js +3 -0
- package/browser/find-options/FindOptionsOrder.js.map +1 -0
- package/browser/find-options/FindOptionsRelations.d.ts +19 -0
- package/browser/find-options/FindOptionsRelations.js +3 -0
- package/browser/find-options/FindOptionsRelations.js.map +1 -0
- package/browser/find-options/FindOptionsSelect.d.ts +19 -0
- package/browser/find-options/FindOptionsSelect.js +3 -0
- package/browser/find-options/FindOptionsSelect.js.map +1 -0
- package/browser/find-options/FindOptionsUtils.d.ts +180 -6
- package/browser/find-options/FindOptionsUtils.js +299 -94
- package/browser/find-options/FindOptionsUtils.js.map +1 -1
- package/browser/find-options/FindOptionsWhere.d.ts +14 -0
- package/browser/find-options/FindOptionsWhere.js +3 -0
- package/browser/find-options/FindOptionsWhere.js.map +1 -0
- package/browser/find-options/FindTreeOptions.d.ts +13 -0
- package/browser/find-options/FindTreeOptions.js +3 -0
- package/browser/find-options/FindTreeOptions.js.map +1 -0
- package/browser/find-options/JoinOptions.d.ts +76 -0
- package/browser/find-options/JoinOptions.js +3 -0
- package/browser/find-options/JoinOptions.js.map +1 -0
- package/browser/find-options/OrderByCondition.js +1 -1
- package/browser/find-options/OrderByCondition.js.map +1 -1
- package/browser/find-options/mongodb/MongoFindManyOptions.d.ts +14 -0
- package/browser/find-options/mongodb/MongoFindManyOptions.js +3 -0
- package/browser/find-options/mongodb/MongoFindManyOptions.js.map +1 -0
- package/browser/find-options/mongodb/MongoFindOneOptions.d.ts +11 -0
- package/browser/find-options/mongodb/MongoFindOneOptions.js +3 -0
- package/browser/find-options/mongodb/MongoFindOneOptions.js.map +1 -0
- package/browser/find-options/operator/Any.d.ts +1 -1
- package/browser/find-options/operator/Any.js.map +1 -1
- package/browser/find-options/operator/Between.d.ts +1 -1
- package/browser/find-options/operator/Between.js.map +1 -1
- package/browser/find-options/operator/Equal.d.ts +7 -2
- package/browser/find-options/operator/Equal.js +7 -3
- package/browser/find-options/operator/Equal.js.map +1 -1
- package/browser/find-options/operator/ILike.d.ts +1 -1
- package/browser/find-options/operator/ILike.js +1 -1
- package/browser/find-options/operator/ILike.js.map +1 -1
- package/browser/find-options/operator/In.d.ts +1 -1
- package/browser/find-options/operator/In.js.map +1 -1
- package/browser/find-options/operator/IsNull.js.map +1 -1
- package/browser/find-options/operator/LessThan.js.map +1 -1
- package/browser/find-options/operator/LessThanOrEqual.js.map +1 -1
- package/browser/find-options/operator/Like.d.ts +1 -1
- package/browser/find-options/operator/Like.js +1 -1
- package/browser/find-options/operator/Like.js.map +1 -1
- package/browser/find-options/operator/MoreThan.js.map +1 -1
- package/browser/find-options/operator/MoreThanOrEqual.js.map +1 -1
- package/browser/find-options/operator/Not.d.ts +1 -1
- package/browser/find-options/operator/Not.js +1 -1
- package/browser/find-options/operator/Not.js.map +1 -1
- package/browser/find-options/operator/Raw.d.ts +14 -2
- package/browser/find-options/operator/Raw.js +5 -6
- package/browser/find-options/operator/Raw.js.map +1 -1
- package/browser/globals.d.ts +117 -0
- package/browser/globals.js +166 -0
- package/browser/globals.js.map +1 -0
- package/browser/index.d.ts +45 -113
- package/browser/index.js +57 -190
- package/browser/index.js.map +1 -1
- package/browser/logger/AdvancedConsoleLogger.d.ts +2 -1
- package/browser/logger/AdvancedConsoleLogger.js +55 -33
- package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
- package/browser/logger/DebugLogger.d.ts +1 -2
- package/browser/logger/DebugLogger.js +24 -26
- package/browser/logger/DebugLogger.js.map +1 -1
- package/browser/logger/FileLogger.d.ts +3 -1
- package/browser/logger/FileLogger.js +65 -40
- package/browser/logger/FileLogger.js.map +1 -1
- package/browser/logger/Logger.d.ts +1 -1
- package/browser/logger/Logger.js +1 -1
- package/browser/logger/Logger.js.map +1 -1
- package/browser/logger/LoggerFactory.js +6 -9
- package/browser/logger/LoggerFactory.js.map +1 -1
- package/browser/logger/LoggerOptions.d.ts +9 -0
- package/browser/logger/LoggerOptions.js +1 -1
- package/browser/logger/LoggerOptions.js.map +1 -1
- package/browser/logger/SimpleConsoleLogger.d.ts +2 -1
- package/browser/logger/SimpleConsoleLogger.js +55 -33
- package/browser/logger/SimpleConsoleLogger.js.map +1 -1
- package/browser/metadata/CheckMetadata.js +8 -8
- package/browser/metadata/CheckMetadata.js.map +1 -1
- package/browser/metadata/ColumnMetadata.d.ts +16 -7
- package/browser/metadata/ColumnMetadata.js +240 -126
- package/browser/metadata/ColumnMetadata.js.map +1 -1
- package/browser/metadata/EmbeddedMetadata.d.ts +12 -5
- package/browser/metadata/EmbeddedMetadata.js +77 -51
- package/browser/metadata/EmbeddedMetadata.js.map +1 -1
- package/browser/metadata/EntityListenerMetadata.js +21 -15
- package/browser/metadata/EntityListenerMetadata.js.map +1 -1
- package/browser/metadata/EntityMetadata.d.ts +65 -22
- package/browser/metadata/EntityMetadata.js +250 -160
- package/browser/metadata/EntityMetadata.js.map +1 -1
- package/browser/metadata/ExclusionMetadata.js +8 -8
- package/browser/metadata/ExclusionMetadata.js.map +1 -1
- package/browser/metadata/ForeignKeyMetadata.js +8 -10
- package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
- package/browser/metadata/IndexMetadata.d.ts +7 -2
- package/browser/metadata/IndexMetadata.js +44 -34
- package/browser/metadata/IndexMetadata.js.map +1 -1
- package/browser/metadata/RelationCountMetadata.js +11 -10
- package/browser/metadata/RelationCountMetadata.js.map +1 -1
- package/browser/metadata/RelationIdMetadata.js +21 -19
- package/browser/metadata/RelationIdMetadata.js.map +1 -1
- package/browser/metadata/RelationMetadata.d.ts +28 -5
- package/browser/metadata/RelationMetadata.js +160 -79
- package/browser/metadata/RelationMetadata.js.map +1 -1
- package/browser/metadata/UniqueMetadata.d.ts +7 -2
- package/browser/metadata/UniqueMetadata.js +40 -32
- package/browser/metadata/UniqueMetadata.js.map +1 -1
- package/browser/metadata/types/ClosureTreeOptions.d.ts +10 -0
- package/browser/metadata/types/ClosureTreeOptions.js +3 -0
- package/browser/metadata/types/ClosureTreeOptions.js.map +1 -0
- package/browser/metadata/types/DeferrableType.js +1 -1
- package/browser/metadata/types/DeferrableType.js.map +1 -1
- package/browser/metadata/types/EventListenerTypes.d.ts +12 -8
- package/browser/metadata/types/EventListenerTypes.js +13 -13
- package/browser/metadata/types/EventListenerTypes.js.map +1 -1
- package/browser/metadata/types/OnDeleteType.js +1 -1
- package/browser/metadata/types/OnDeleteType.js.map +1 -1
- package/browser/metadata/types/OnUpdateType.js +1 -1
- package/browser/metadata/types/OnUpdateType.js.map +1 -1
- package/browser/metadata/types/PropertyTypeInFunction.js +1 -1
- package/browser/metadata/types/PropertyTypeInFunction.js.map +1 -1
- package/browser/metadata/types/RelationTypeInFunction.d.ts +2 -1
- package/browser/metadata/types/RelationTypeInFunction.js +1 -1
- package/browser/metadata/types/RelationTypeInFunction.js.map +1 -1
- package/browser/metadata/types/RelationTypes.js +1 -1
- package/browser/metadata/types/RelationTypes.js.map +1 -1
- package/browser/metadata/types/TableTypes.d.ts +1 -1
- package/browser/metadata/types/TableTypes.js +1 -1
- package/browser/metadata/types/TableTypes.js.map +1 -1
- package/browser/metadata/types/TreeTypes.js +1 -1
- package/browser/metadata/types/TreeTypes.js.map +1 -1
- package/browser/metadata-args/CheckMetadataArgs.js +1 -1
- package/browser/metadata-args/CheckMetadataArgs.js.map +1 -1
- package/browser/metadata-args/ColumnMetadataArgs.js +1 -1
- package/browser/metadata-args/ColumnMetadataArgs.js.map +1 -1
- package/browser/metadata-args/DiscriminatorValueMetadataArgs.js +1 -1
- package/browser/metadata-args/DiscriminatorValueMetadataArgs.js.map +1 -1
- package/browser/metadata-args/EmbeddedMetadataArgs.d.ts +2 -2
- package/browser/metadata-args/EmbeddedMetadataArgs.js +1 -1
- package/browser/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
- package/browser/metadata-args/EntityListenerMetadataArgs.js +1 -1
- package/browser/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
- package/browser/metadata-args/EntityRepositoryMetadataArgs.d.ts +2 -2
- package/browser/metadata-args/EntityRepositoryMetadataArgs.js +1 -1
- package/browser/metadata-args/EntityRepositoryMetadataArgs.js.map +1 -1
- package/browser/metadata-args/EntitySubscriberMetadataArgs.js +1 -1
- package/browser/metadata-args/EntitySubscriberMetadataArgs.js.map +1 -1
- package/browser/metadata-args/ExclusionMetadataArgs.js +1 -1
- package/browser/metadata-args/ExclusionMetadataArgs.js.map +1 -1
- package/browser/metadata-args/GeneratedMetadataArgs.js +1 -1
- package/browser/metadata-args/GeneratedMetadataArgs.js.map +1 -1
- package/browser/metadata-args/IndexMetadataArgs.d.ts +7 -2
- package/browser/metadata-args/IndexMetadataArgs.js +1 -1
- package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
- package/browser/metadata-args/InheritanceMetadataArgs.js +1 -1
- package/browser/metadata-args/InheritanceMetadataArgs.js.map +1 -1
- package/browser/metadata-args/JoinColumnMetadataArgs.js +1 -1
- package/browser/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
- package/browser/metadata-args/JoinTableMetadataArgs.js +1 -1
- package/browser/metadata-args/JoinTableMetadataArgs.js.map +1 -1
- package/browser/metadata-args/MetadataArgsStorage.d.ts +4 -0
- package/browser/metadata-args/MetadataArgsStorage.js +145 -95
- package/browser/metadata-args/MetadataArgsStorage.js.map +1 -1
- package/browser/metadata-args/NamingStrategyMetadataArgs.js +1 -1
- package/browser/metadata-args/NamingStrategyMetadataArgs.js.map +1 -1
- package/browser/metadata-args/RelationCountMetadataArgs.js +1 -1
- package/browser/metadata-args/RelationCountMetadataArgs.js.map +1 -1
- package/browser/metadata-args/RelationIdMetadataArgs.js +1 -1
- package/browser/metadata-args/RelationIdMetadataArgs.js.map +1 -1
- package/browser/metadata-args/RelationMetadataArgs.js +1 -1
- package/browser/metadata-args/RelationMetadataArgs.js.map +1 -1
- package/browser/metadata-args/TableMetadataArgs.d.ts +9 -5
- package/browser/metadata-args/TableMetadataArgs.js +1 -1
- package/browser/metadata-args/TableMetadataArgs.js.map +1 -1
- package/browser/metadata-args/TransactionEntityMetadataArgs.js +1 -1
- package/browser/metadata-args/TransactionEntityMetadataArgs.js.map +1 -1
- package/browser/metadata-args/TransactionRepositoryMetadataArgs.d.ts +1 -1
- package/browser/metadata-args/TransactionRepositoryMetadataArgs.js +1 -1
- package/browser/metadata-args/TransactionRepositoryMetadataArgs.js.map +1 -1
- package/browser/metadata-args/TreeMetadataArgs.d.ts +5 -0
- package/browser/metadata-args/TreeMetadataArgs.js +1 -1
- package/browser/metadata-args/TreeMetadataArgs.js.map +1 -1
- package/browser/metadata-args/UniqueMetadataArgs.d.ts +7 -2
- package/browser/metadata-args/UniqueMetadataArgs.js +1 -1
- package/browser/metadata-args/UniqueMetadataArgs.js.map +1 -1
- package/browser/metadata-args/types/ColumnMode.d.ts +1 -1
- package/browser/metadata-args/types/ColumnMode.js +1 -1
- package/browser/metadata-args/types/ColumnMode.js.map +1 -1
- package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.d.ts +2 -2
- package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +47 -30
- package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataBuilder.d.ts +2 -2
- package/browser/metadata-builder/EntityMetadataBuilder.js +396 -267
- package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataValidator.js +78 -68
- package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.d.ts +2 -2
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +144 -92
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/MetadataUtils.js +12 -16
- package/browser/metadata-builder/MetadataUtils.js.map +1 -1
- package/browser/metadata-builder/RelationJoinColumnBuilder.d.ts +3 -2
- package/browser/metadata-builder/RelationJoinColumnBuilder.js +69 -50
- package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/browser/migration/Migration.js +3 -5
- package/browser/migration/Migration.js.map +1 -1
- package/browser/migration/MigrationExecutor.d.ts +6 -4
- package/browser/migration/MigrationExecutor.js +379 -535
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/migration/MigrationInterface.js +1 -1
- package/browser/migration/MigrationInterface.js.map +1 -1
- package/browser/naming-strategy/DefaultNamingStrategy.d.ts +7 -1
- package/browser/naming-strategy/DefaultNamingStrategy.js +90 -80
- package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/browser/naming-strategy/NamingStrategyInterface.d.ts +17 -1
- package/browser/naming-strategy/NamingStrategyInterface.js +1 -1
- package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
- package/browser/persistence/EntityPersistExecutor.d.ts +4 -4
- package/browser/persistence/EntityPersistExecutor.js +126 -151
- package/browser/persistence/EntityPersistExecutor.js.map +1 -1
- package/browser/persistence/Subject.d.ts +27 -3
- package/browser/persistence/Subject.js +103 -67
- package/browser/persistence/Subject.js.map +1 -1
- package/browser/persistence/SubjectChangeMap.js +1 -1
- package/browser/persistence/SubjectChangeMap.js.map +1 -1
- package/browser/persistence/SubjectChangedColumnsComputer.js +74 -52
- package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.d.ts +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.js +97 -114
- package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/browser/persistence/SubjectExecutor.d.ts +19 -2
- package/browser/persistence/SubjectExecutor.js +584 -419
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/persistence/SubjectTopoligicalSorter.js +63 -59
- package/browser/persistence/SubjectTopoligicalSorter.js.map +1 -1
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.js +53 -28
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +64 -59
- package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +60 -43
- package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +32 -29
- package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/browser/persistence/tree/ClosureSubjectExecutor.d.ts +8 -11
- package/browser/persistence/tree/ClosureSubjectExecutor.js +213 -89
- package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
- package/browser/persistence/tree/MaterializedPathSubjectExecutor.d.ts +5 -0
- package/browser/persistence/tree/MaterializedPathSubjectExecutor.js +89 -48
- package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/browser/persistence/tree/NestedSetSubjectExecutor.d.ts +20 -0
- package/browser/persistence/tree/NestedSetSubjectExecutor.js +243 -62
- package/browser/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
- package/browser/platform/BrowserConnectionOptionsReaderDummy.d.ts +38 -0
- package/browser/platform/BrowserConnectionOptionsReaderDummy.js +52 -0
- package/browser/platform/BrowserConnectionOptionsReaderDummy.js.map +1 -0
- package/browser/platform/BrowserDirectoryExportedClassesLoader.d.ts +15 -0
- package/browser/platform/BrowserDirectoryExportedClassesLoader.js +20 -0
- package/browser/platform/BrowserDirectoryExportedClassesLoader.js.map +1 -0
- package/browser/platform/BrowserDisabledDriversDummy.d.ts +38 -2
- package/browser/platform/BrowserDisabledDriversDummy.js +54 -50
- package/browser/platform/BrowserDisabledDriversDummy.js.map +1 -1
- package/browser/platform/BrowserFileLoggerDummy.d.ts +33 -0
- package/browser/platform/BrowserFileLoggerDummy.js +47 -0
- package/browser/platform/BrowserFileLoggerDummy.js.map +1 -0
- package/browser/platform/BrowserPlatformTools.d.ts +74 -0
- package/browser/platform/BrowserPlatformTools.js +141 -0
- package/browser/platform/BrowserPlatformTools.js.map +1 -0
- package/browser/platform/PlatformTools.d.ts +16 -21
- package/browser/platform/PlatformTools.js +174 -117
- package/browser/platform/PlatformTools.js.map +1 -1
- package/browser/query-builder/Alias.d.ts +4 -3
- package/browser/query-builder/Alias.js +18 -31
- package/browser/query-builder/Alias.js.map +1 -1
- package/browser/query-builder/Brackets.d.ts +4 -3
- package/browser/query-builder/Brackets.js +4 -5
- package/browser/query-builder/Brackets.js.map +1 -1
- package/browser/query-builder/DeleteQueryBuilder.d.ts +13 -11
- package/browser/query-builder/DeleteQueryBuilder.js +109 -166
- package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/InsertOrUpdateOptions.d.ts +3 -0
- package/browser/query-builder/InsertOrUpdateOptions.js +3 -0
- package/browser/query-builder/InsertOrUpdateOptions.js.map +1 -0
- package/browser/query-builder/InsertQueryBuilder.d.ts +15 -5
- package/browser/query-builder/InsertQueryBuilder.js +453 -293
- package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
- package/browser/query-builder/JoinAttribute.d.ts +12 -12
- package/browser/query-builder/JoinAttribute.js +140 -189
- package/browser/query-builder/JoinAttribute.js.map +1 -1
- package/browser/query-builder/JoinOptions.js +1 -1
- package/browser/query-builder/JoinOptions.js.map +1 -1
- package/browser/query-builder/NotBrackets.d.ts +8 -0
- package/browser/query-builder/NotBrackets.js +13 -0
- package/browser/query-builder/NotBrackets.js.map +1 -0
- package/browser/query-builder/QueryBuilder.d.ts +55 -32
- package/browser/query-builder/QueryBuilder.js +698 -375
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryBuilderUtils.d.ts +0 -1
- package/browser/query-builder/QueryBuilderUtils.js +5 -16
- package/browser/query-builder/QueryBuilderUtils.js.map +1 -1
- package/browser/query-builder/QueryExpressionMap.d.ts +51 -29
- package/browser/query-builder/QueryExpressionMap.js +92 -85
- package/browser/query-builder/QueryExpressionMap.js.map +1 -1
- package/browser/query-builder/QueryPartialEntity.d.ts +1 -1
- package/browser/query-builder/QueryPartialEntity.js +1 -1
- package/browser/query-builder/QueryPartialEntity.js.map +1 -1
- package/browser/query-builder/RelationIdLoader.d.ts +10 -12
- package/browser/query-builder/RelationIdLoader.js +306 -185
- package/browser/query-builder/RelationIdLoader.js.map +1 -1
- package/browser/query-builder/RelationLoader.d.ts +6 -3
- package/browser/query-builder/RelationLoader.js +181 -146
- package/browser/query-builder/RelationLoader.js.map +1 -1
- package/browser/query-builder/RelationQueryBuilder.d.ts +2 -1
- package/browser/query-builder/RelationQueryBuilder.js +81 -112
- package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
- package/browser/query-builder/RelationRemover.js +119 -84
- package/browser/query-builder/RelationRemover.js.map +1 -1
- package/browser/query-builder/RelationUpdater.js +128 -128
- package/browser/query-builder/RelationUpdater.js.map +1 -1
- package/browser/query-builder/ReturningResultsEntityUpdator.d.ts +4 -4
- package/browser/query-builder/ReturningResultsEntityUpdator.js +135 -155
- package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/browser/query-builder/SelectQuery.js +1 -1
- package/browser/query-builder/SelectQuery.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.d.ts +65 -50
- package/browser/query-builder/SelectQueryBuilder.js +1642 -1291
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilderOption.js +1 -1
- package/browser/query-builder/SelectQueryBuilderOption.js.map +1 -1
- package/browser/query-builder/SoftDeleteQueryBuilder.d.ts +138 -0
- package/browser/query-builder/SoftDeleteQueryBuilder.js +363 -0
- package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -0
- package/browser/query-builder/UpdateQueryBuilder.d.ts +11 -8
- package/browser/query-builder/UpdateQueryBuilder.js +276 -299
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/query-builder/WhereClause.d.ts +16 -0
- package/browser/query-builder/WhereClause.js +3 -0
- package/browser/query-builder/WhereClause.js.map +1 -0
- package/browser/query-builder/{WhereExpression.d.ts → WhereExpressionBuilder.d.ts} +51 -3
- package/browser/query-builder/WhereExpressionBuilder.js +3 -0
- package/browser/query-builder/WhereExpressionBuilder.js.map +1 -0
- package/browser/query-builder/relation-count/RelationCountAttribute.d.ts +7 -7
- package/browser/query-builder/relation-count/RelationCountAttribute.js +66 -96
- package/browser/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
- package/browser/query-builder/relation-count/RelationCountLoadResult.js +1 -1
- package/browser/query-builder/relation-count/RelationCountLoadResult.js.map +1 -1
- package/browser/query-builder/relation-count/RelationCountLoader.d.ts +3 -3
- package/browser/query-builder/relation-count/RelationCountLoader.js +150 -101
- package/browser/query-builder/relation-count/RelationCountLoader.js.map +1 -1
- package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +15 -18
- package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdAttribute.d.ts +8 -8
- package/browser/query-builder/relation-id/RelationIdAttribute.js +67 -101
- package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdLoadResult.js +1 -1
- package/browser/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdLoader.d.ts +3 -3
- package/browser/query-builder/relation-id/RelationIdLoader.js +255 -148
- package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +15 -18
- package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
- package/browser/query-builder/result/DeleteResult.d.ts +3 -1
- package/browser/query-builder/result/DeleteResult.js +7 -5
- package/browser/query-builder/result/DeleteResult.js.map +1 -1
- package/browser/query-builder/result/InsertResult.d.ts +2 -0
- package/browser/query-builder/result/InsertResult.js +8 -5
- package/browser/query-builder/result/InsertResult.js.map +1 -1
- package/browser/query-builder/result/UpdateResult.d.ts +2 -0
- package/browser/query-builder/result/UpdateResult.js +9 -5
- package/browser/query-builder/result/UpdateResult.js.map +1 -1
- package/browser/query-builder/transformer/DocumentToEntityTransformer.d.ts +1 -2
- package/browser/query-builder/transformer/DocumentToEntityTransformer.js +48 -35
- package/browser/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
- package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +74 -101
- package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
- package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js +25 -27
- package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +13 -0
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +228 -159
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/browser/query-runner/BaseQueryRunner.d.ts +49 -12
- package/browser/query-runner/BaseQueryRunner.js +240 -247
- package/browser/query-runner/BaseQueryRunner.js.map +1 -1
- package/browser/query-runner/QueryLock.d.ts +4 -0
- package/browser/query-runner/QueryLock.js +24 -0
- package/browser/query-runner/QueryLock.js.map +1 -0
- package/browser/query-runner/QueryResult.d.ts +17 -0
- package/browser/query-runner/QueryResult.js +13 -0
- package/browser/query-runner/QueryResult.js.map +1 -0
- package/browser/query-runner/QueryRunner.d.ts +37 -8
- package/browser/query-runner/QueryRunner.js +1 -1
- package/browser/query-runner/QueryRunner.js.map +1 -1
- package/browser/repository/AbstractRepository.d.ts +5 -5
- package/browser/repository/AbstractRepository.js +47 -54
- package/browser/repository/AbstractRepository.js.map +1 -1
- package/browser/repository/BaseEntity.d.ts +69 -81
- package/browser/repository/BaseEntity.js +169 -131
- package/browser/repository/BaseEntity.js.map +1 -1
- package/browser/repository/EntityId.js +1 -1
- package/browser/repository/EntityId.js.map +1 -1
- package/browser/repository/FindTreesOptions.d.ts +9 -0
- package/browser/repository/FindTreesOptions.js +3 -0
- package/browser/repository/FindTreesOptions.js.map +1 -0
- package/browser/repository/MongoRepository.d.ts +55 -9
- package/browser/repository/MongoRepository.js +330 -1
- package/browser/repository/MongoRepository.js.map +1 -1
- package/browser/repository/RemoveOptions.js +1 -1
- package/browser/repository/RemoveOptions.js.map +1 -1
- package/browser/repository/Repository.d.ts +130 -97
- package/browser/repository/Repository.js +288 -1
- package/browser/repository/Repository.js.map +1 -1
- package/browser/repository/SaveOptions.d.ts +1 -1
- package/browser/repository/SaveOptions.js +1 -1
- package/browser/repository/SaveOptions.js.map +1 -1
- package/browser/repository/TreeRepository.d.ts +14 -9
- package/browser/repository/TreeRepository.js +263 -1
- package/browser/repository/TreeRepository.js.map +1 -1
- package/browser/repository/UpsertOptions.d.ts +10 -0
- package/browser/repository/UpsertOptions.js +3 -0
- package/browser/repository/UpsertOptions.js.map +1 -0
- package/browser/schema-builder/MongoSchemaBuilder.d.ts +3 -3
- package/browser/schema-builder/MongoSchemaBuilder.js +28 -42
- package/browser/schema-builder/MongoSchemaBuilder.js.map +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +14 -6
- package/browser/schema-builder/RdbmsSchemaBuilder.js +693 -1057
- package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/browser/schema-builder/SchemaBuilder.js +1 -1
- package/browser/schema-builder/SchemaBuilder.js.map +1 -1
- package/browser/schema-builder/options/TableCheckOptions.js +1 -1
- package/browser/schema-builder/options/TableCheckOptions.js.map +1 -1
- package/browser/schema-builder/options/TableColumnOptions.d.ts +6 -2
- package/browser/schema-builder/options/TableColumnOptions.js +1 -1
- package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/browser/schema-builder/options/TableExclusionOptions.js +1 -1
- package/browser/schema-builder/options/TableExclusionOptions.js.map +1 -1
- package/browser/schema-builder/options/TableForeignKeyOptions.d.ts +8 -0
- package/browser/schema-builder/options/TableForeignKeyOptions.js +1 -1
- package/browser/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
- package/browser/schema-builder/options/TableIndexOptions.d.ts +6 -1
- package/browser/schema-builder/options/TableIndexOptions.js +1 -1
- package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
- package/browser/schema-builder/options/TableOptions.d.ts +8 -0
- package/browser/schema-builder/options/TableOptions.js +1 -1
- package/browser/schema-builder/options/TableOptions.js.map +1 -1
- package/browser/schema-builder/options/TableUniqueOptions.d.ts +5 -0
- package/browser/schema-builder/options/TableUniqueOptions.js +1 -1
- package/browser/schema-builder/options/TableUniqueOptions.js.map +1 -1
- package/browser/schema-builder/options/ViewOptions.d.ts +10 -2
- package/browser/schema-builder/options/ViewOptions.js +1 -1
- package/browser/schema-builder/options/ViewOptions.js.map +1 -1
- package/browser/schema-builder/table/Table.d.ts +13 -3
- package/browser/schema-builder/table/Table.js +109 -97
- package/browser/schema-builder/table/Table.js.map +1 -1
- package/browser/schema-builder/table/TableCheck.d.ts +1 -0
- package/browser/schema-builder/table/TableCheck.js +10 -12
- package/browser/schema-builder/table/TableCheck.js.map +1 -1
- package/browser/schema-builder/table/TableColumn.d.ts +7 -2
- package/browser/schema-builder/table/TableColumn.js +10 -9
- package/browser/schema-builder/table/TableColumn.js.map +1 -1
- package/browser/schema-builder/table/TableExclusion.d.ts +1 -0
- package/browser/schema-builder/table/TableExclusion.js +9 -10
- package/browser/schema-builder/table/TableExclusion.js.map +1 -1
- package/browser/schema-builder/table/TableForeignKey.d.ts +11 -1
- package/browser/schema-builder/table/TableForeignKey.js +16 -12
- package/browser/schema-builder/table/TableForeignKey.js.map +1 -1
- package/browser/schema-builder/table/TableIndex.d.ts +6 -0
- package/browser/schema-builder/table/TableIndex.js +15 -14
- package/browser/schema-builder/table/TableIndex.js.map +1 -1
- package/browser/schema-builder/table/TableUnique.d.ts +6 -0
- package/browser/schema-builder/table/TableUnique.js +13 -12
- package/browser/schema-builder/table/TableUnique.js.map +1 -1
- package/browser/schema-builder/util/TableUtils.js +10 -11
- package/browser/schema-builder/util/TableUtils.js.map +1 -1
- package/browser/schema-builder/util/ViewUtils.d.ts +7 -0
- package/browser/schema-builder/util/ViewUtils.js +23 -0
- package/browser/schema-builder/util/ViewUtils.js.map +1 -0
- package/browser/schema-builder/view/View.d.ts +12 -5
- package/browser/schema-builder/view/View.js +16 -11
- package/browser/schema-builder/view/View.js.map +1 -1
- package/browser/subscriber/Broadcaster.d.ts +87 -2
- package/browser/subscriber/Broadcaster.js +412 -119
- package/browser/subscriber/Broadcaster.js.map +1 -1
- package/browser/subscriber/BroadcasterResult.d.ts +4 -0
- package/browser/subscriber/BroadcasterResult.js +12 -5
- package/browser/subscriber/BroadcasterResult.js.map +1 -1
- package/browser/subscriber/EntitySubscriberInterface.d.ts +45 -0
- package/browser/subscriber/EntitySubscriberInterface.js +1 -1
- package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
- package/browser/subscriber/event/InsertEvent.d.ts +7 -7
- package/browser/subscriber/event/InsertEvent.js +1 -1
- package/browser/subscriber/event/InsertEvent.js.map +1 -1
- package/browser/subscriber/event/LoadEvent.d.ts +2 -2
- package/browser/subscriber/event/LoadEvent.js +1 -1
- package/browser/subscriber/event/LoadEvent.js.map +1 -1
- package/browser/subscriber/event/RecoverEvent.d.ts +6 -0
- package/browser/subscriber/event/RecoverEvent.js +3 -0
- package/browser/subscriber/event/RecoverEvent.js.map +1 -0
- package/browser/subscriber/event/RemoveEvent.d.ts +7 -7
- package/browser/subscriber/event/RemoveEvent.js +1 -1
- package/browser/subscriber/event/RemoveEvent.js.map +1 -1
- package/browser/subscriber/event/SoftRemoveEvent.d.ts +6 -0
- package/browser/subscriber/event/SoftRemoveEvent.js +3 -0
- package/browser/subscriber/event/SoftRemoveEvent.js.map +1 -0
- package/browser/subscriber/event/TransactionCommitEvent.d.ts +22 -0
- package/browser/subscriber/event/TransactionCommitEvent.js +3 -0
- package/browser/subscriber/event/TransactionCommitEvent.js.map +1 -0
- package/browser/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
- package/browser/subscriber/event/TransactionRollbackEvent.js +3 -0
- package/browser/subscriber/event/TransactionRollbackEvent.js.map +1 -0
- package/browser/subscriber/event/TransactionStartEvent.d.ts +22 -0
- package/browser/subscriber/event/TransactionStartEvent.js +3 -0
- package/browser/subscriber/event/TransactionStartEvent.js.map +1 -0
- package/browser/subscriber/event/UpdateEvent.d.ts +5 -4
- package/browser/subscriber/event/UpdateEvent.js +1 -1
- package/browser/subscriber/event/UpdateEvent.js.map +1 -1
- package/browser/util/ApplyValueTransformers.js +13 -29
- package/browser/util/ApplyValueTransformers.js.map +1 -1
- package/browser/util/DateUtils.d.ts +2 -2
- package/browser/util/DateUtils.js +110 -83
- package/browser/util/DateUtils.js.map +1 -1
- package/browser/util/DepGraph.js +50 -50
- package/browser/util/DepGraph.js.map +1 -1
- package/browser/util/DirectoryExportedClassesLoader.d.ts +1 -1
- package/browser/util/DirectoryExportedClassesLoader.js +32 -25
- package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/browser/util/ImportUtils.d.ts +1 -0
- package/browser/util/ImportUtils.js +74 -0
- package/browser/util/ImportUtils.js.map +1 -0
- package/browser/util/InstanceChecker.d.ts +61 -0
- package/browser/util/InstanceChecker.js +103 -0
- package/browser/util/InstanceChecker.js.map +1 -0
- package/browser/util/ObjectUtils.d.ts +17 -6
- package/browser/util/ObjectUtils.js +26 -36
- package/browser/util/ObjectUtils.js.map +1 -1
- package/browser/util/OrmUtils.d.ts +16 -8
- package/browser/util/OrmUtils.js +198 -98
- package/browser/util/OrmUtils.js.map +1 -1
- package/browser/util/PathUtils.d.ts +10 -0
- package/browser/util/PathUtils.js +28 -0
- package/browser/util/PathUtils.js.map +1 -0
- package/browser/util/RandomGenerator.d.ts +0 -4
- package/browser/util/RandomGenerator.js +61 -52
- package/browser/util/RandomGenerator.js.map +1 -1
- package/browser/util/StringUtils.d.ts +13 -3
- package/browser/util/StringUtils.js +42 -19
- package/browser/util/StringUtils.js.map +1 -1
- package/browser/util/TreeRepositoryUtils.d.ts +23 -0
- package/browser/util/TreeRepositoryUtils.js +56 -0
- package/browser/util/TreeRepositoryUtils.js.map +1 -0
- package/browser/util/VersionUtils.js +11 -16
- package/browser/util/VersionUtils.js.map +1 -1
- package/cache/DbQueryResultCache.d.ts +6 -4
- package/cache/DbQueryResultCache.js +182 -187
- package/cache/DbQueryResultCache.js.map +1 -1
- package/cache/QueryResultCache.js.map +1 -1
- package/cache/QueryResultCacheFactory.d.ts +3 -3
- package/cache/QueryResultCacheFactory.js +22 -16
- package/cache/QueryResultCacheFactory.js.map +1 -1
- package/cache/QueryResultCacheOptions.js.map +1 -1
- package/cache/RedisQueryResultCache.d.ts +3 -3
- package/cache/RedisQueryResultCache.js +106 -127
- package/cache/RedisQueryResultCache.js.map +1 -1
- package/cli.js +18 -23
- package/cli.js.map +1 -1
- package/commands/CacheClearCommand.d.ts +1 -3
- package/commands/CacheClearCommand.js +42 -77
- package/commands/CacheClearCommand.js.map +1 -1
- package/commands/CommandUtils.d.ts +7 -1
- package/commands/CommandUtils.js +63 -42
- package/commands/CommandUtils.js.map +1 -1
- package/commands/EntityCreateCommand.d.ts +0 -9
- package/commands/EntityCreateCommand.js +38 -84
- package/commands/EntityCreateCommand.js.map +1 -1
- package/commands/InitCommand.d.ts +12 -9
- package/commands/InitCommand.js +463 -233
- package/commands/InitCommand.js.map +1 -1
- package/commands/MigrationCreateCommand.d.ts +6 -7
- package/commands/MigrationCreateCommand.js +72 -83
- package/commands/MigrationCreateCommand.js.map +1 -1
- package/commands/MigrationGenerateCommand.d.ts +20 -5
- package/commands/MigrationGenerateCommand.js +187 -142
- package/commands/MigrationGenerateCommand.js.map +1 -1
- package/commands/MigrationRevertCommand.d.ts +1 -4
- package/commands/MigrationRevertCommand.js +55 -91
- package/commands/MigrationRevertCommand.js.map +1 -1
- package/commands/MigrationRunCommand.d.ts +1 -4
- package/commands/MigrationRunCommand.js +57 -94
- package/commands/MigrationRunCommand.js.map +1 -1
- package/commands/MigrationShowCommand.d.ts +2 -4
- package/commands/MigrationShowCommand.js +38 -74
- package/commands/MigrationShowCommand.js.map +1 -1
- package/commands/QueryCommand.d.ts +3 -3
- package/commands/QueryCommand.js +58 -86
- package/commands/QueryCommand.js.map +1 -1
- package/commands/SchemaDropCommand.d.ts +2 -4
- package/commands/SchemaDropCommand.js +39 -72
- package/commands/SchemaDropCommand.js.map +1 -1
- package/commands/SchemaLogCommand.d.ts +1 -3
- package/commands/SchemaLogCommand.js +62 -81
- package/commands/SchemaLogCommand.js.map +1 -1
- package/commands/SchemaSyncCommand.d.ts +1 -3
- package/commands/SchemaSyncCommand.js +37 -70
- package/commands/SchemaSyncCommand.js.map +1 -1
- package/commands/SubscriberCreateCommand.d.ts +0 -9
- package/commands/SubscriberCreateCommand.js +38 -78
- package/commands/SubscriberCreateCommand.js.map +1 -1
- package/commands/VersionCommand.js +39 -46
- package/commands/VersionCommand.js.map +1 -1
- package/common/DeepPartial.d.ts +3 -3
- package/common/DeepPartial.js.map +1 -1
- package/common/EntityTarget.d.ts +9 -0
- package/{query-builder/WhereExpression.js → common/EntityTarget.js} +1 -1
- package/common/EntityTarget.js.map +1 -0
- package/common/MixedList.d.ts +8 -0
- package/{find-options/FindOptions.js → common/MixedList.js} +1 -1
- package/common/MixedList.js.map +1 -0
- package/common/NonNever.d.ts +6 -0
- package/{entity-factory/EntityFactoryInterface.js → common/NonNever.js} +1 -1
- package/common/NonNever.js.map +1 -0
- package/common/ObjectLiteral.js.map +1 -1
- package/common/ObjectType.js.map +1 -1
- package/common/RelationType.d.ts +14 -0
- package/{driver/aurora-data-api/AuroraDataApiConnectionOptions.js → common/RelationType.js} +1 -1
- package/common/RelationType.js.map +1 -0
- package/connection/BaseConnectionOptions.d.ts +4 -144
- package/connection/BaseConnectionOptions.js.map +1 -1
- package/connection/Connection.d.ts +4 -219
- package/connection/Connection.js +6 -530
- package/connection/Connection.js.map +1 -1
- package/connection/ConnectionManager.d.ts +11 -5
- package/connection/ConnectionManager.js +29 -27
- package/connection/ConnectionManager.js.map +1 -1
- package/connection/ConnectionMetadataBuilder.d.ts +6 -6
- package/connection/ConnectionMetadataBuilder.js +44 -36
- package/connection/ConnectionMetadataBuilder.js.map +1 -1
- package/connection/ConnectionOptions.d.ts +4 -14
- package/connection/ConnectionOptions.js.map +1 -1
- package/connection/ConnectionOptionsReader.d.ts +8 -8
- package/connection/ConnectionOptionsReader.js +151 -172
- package/connection/ConnectionOptionsReader.js.map +1 -1
- package/connection/options-reader/ConnectionOptionsEnvReader.d.ts +8 -2
- package/connection/options-reader/ConnectionOptionsEnvReader.js +71 -50
- package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
- package/connection/options-reader/ConnectionOptionsXmlReader.d.ts +4 -2
- package/connection/options-reader/ConnectionOptionsXmlReader.js +48 -42
- package/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
- package/connection/options-reader/ConnectionOptionsYmlReader.d.ts +4 -2
- package/connection/options-reader/ConnectionOptionsYmlReader.js +17 -11
- package/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
- package/container.d.ts +12 -0
- package/container.js +20 -11
- package/container.js.map +1 -1
- package/data-source/BaseDataSourceOptions.d.ts +179 -0
- package/data-source/BaseDataSourceOptions.js +4 -0
- package/data-source/BaseDataSourceOptions.js.map +1 -0
- package/data-source/DataSource.d.ts +246 -0
- package/data-source/DataSource.js +452 -0
- package/data-source/DataSource.js.map +1 -0
- package/data-source/DataSourceOptions.d.ts +21 -0
- package/data-source/DataSourceOptions.js +4 -0
- package/data-source/DataSourceOptions.js.map +1 -0
- package/data-source/index.d.ts +2 -0
- package/data-source/index.js +7 -0
- package/data-source/index.js.map +1 -0
- package/decorator/Check.d.ts +2 -2
- package/decorator/Check.js +11 -7
- package/decorator/Check.js.map +1 -1
- package/decorator/EntityRepository.d.ts +3 -1
- package/decorator/EntityRepository.js +5 -2
- package/decorator/EntityRepository.js.map +1 -1
- package/decorator/Exclusion.d.ts +2 -2
- package/decorator/Exclusion.js +11 -7
- package/decorator/Exclusion.js.map +1 -1
- package/decorator/Generated.d.ts +1 -1
- package/decorator/Generated.js +5 -5
- package/decorator/Generated.js.map +1 -1
- package/decorator/Index.d.ts +10 -10
- package/decorator/Index.js +30 -9
- package/decorator/Index.js.map +1 -1
- package/decorator/Unique.d.ts +7 -6
- package/decorator/Unique.js +38 -8
- package/decorator/Unique.js.map +1 -1
- package/decorator/columns/Column.d.ts +13 -13
- package/decorator/columns/Column.js +29 -16
- package/decorator/columns/Column.js.map +1 -1
- package/decorator/columns/CreateDateColumn.d.ts +2 -2
- package/decorator/columns/CreateDateColumn.js +4 -3
- package/decorator/columns/CreateDateColumn.js.map +1 -1
- package/decorator/columns/DeleteDateColumn.d.ts +6 -0
- package/decorator/columns/DeleteDateColumn.js +21 -0
- package/decorator/columns/DeleteDateColumn.js.map +1 -0
- package/decorator/columns/ObjectIdColumn.d.ts +2 -2
- package/decorator/columns/ObjectIdColumn.js +4 -3
- package/decorator/columns/ObjectIdColumn.js.map +1 -1
- package/decorator/columns/PrimaryColumn.d.ts +11 -3
- package/decorator/columns/PrimaryColumn.js +14 -9
- package/decorator/columns/PrimaryColumn.js.map +1 -1
- package/decorator/columns/PrimaryGeneratedColumn.d.ts +7 -5
- package/decorator/columns/PrimaryGeneratedColumn.js +12 -10
- package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
- package/decorator/columns/UpdateDateColumn.d.ts +2 -2
- package/decorator/columns/UpdateDateColumn.js +4 -3
- package/decorator/columns/UpdateDateColumn.js.map +1 -1
- package/decorator/columns/VersionColumn.d.ts +2 -2
- package/decorator/columns/VersionColumn.js +4 -3
- package/decorator/columns/VersionColumn.js.map +1 -1
- package/decorator/columns/ViewColumn.d.ts +2 -1
- package/decorator/columns/ViewColumn.js +5 -4
- package/decorator/columns/ViewColumn.js.map +1 -1
- package/decorator/entity/ChildEntity.d.ts +1 -1
- package/decorator/entity/ChildEntity.js +6 -5
- package/decorator/entity/ChildEntity.js.map +1 -1
- package/decorator/entity/Entity.d.ts +3 -3
- package/decorator/entity/Entity.js +9 -5
- package/decorator/entity/Entity.js.map +1 -1
- package/decorator/entity/TableInheritance.d.ts +2 -2
- package/decorator/entity/TableInheritance.js +8 -3
- package/decorator/entity/TableInheritance.js.map +1 -1
- package/decorator/entity-view/ViewEntity.d.ts +2 -2
- package/decorator/entity-view/ViewEntity.js +12 -5
- package/decorator/entity-view/ViewEntity.js.map +1 -1
- package/decorator/listeners/AfterInsert.d.ts +1 -1
- package/decorator/listeners/AfterInsert.js +5 -4
- package/decorator/listeners/AfterInsert.js.map +1 -1
- package/decorator/listeners/AfterLoad.d.ts +1 -1
- package/decorator/listeners/AfterLoad.js +5 -4
- package/decorator/listeners/AfterLoad.js.map +1 -1
- package/decorator/listeners/AfterRecover.d.ts +4 -0
- package/decorator/listeners/AfterRecover.js +20 -0
- package/decorator/listeners/AfterRecover.js.map +1 -0
- package/decorator/listeners/AfterRemove.d.ts +1 -1
- package/decorator/listeners/AfterRemove.js +5 -4
- package/decorator/listeners/AfterRemove.js.map +1 -1
- package/decorator/listeners/AfterSoftRemove.d.ts +4 -0
- package/decorator/listeners/AfterSoftRemove.js +20 -0
- package/decorator/listeners/AfterSoftRemove.js.map +1 -0
- package/decorator/listeners/AfterUpdate.d.ts +1 -1
- package/decorator/listeners/AfterUpdate.js +5 -4
- package/decorator/listeners/AfterUpdate.js.map +1 -1
- package/decorator/listeners/BeforeInsert.d.ts +1 -1
- package/decorator/listeners/BeforeInsert.js +5 -4
- package/decorator/listeners/BeforeInsert.js.map +1 -1
- package/decorator/listeners/BeforeRecover.d.ts +4 -0
- package/decorator/listeners/BeforeRecover.js +20 -0
- package/decorator/listeners/BeforeRecover.js.map +1 -0
- package/decorator/listeners/BeforeRemove.d.ts +1 -1
- package/decorator/listeners/BeforeRemove.js +5 -4
- package/decorator/listeners/BeforeRemove.js.map +1 -1
- package/decorator/listeners/BeforeSoftRemove.d.ts +4 -0
- package/decorator/listeners/BeforeSoftRemove.js +20 -0
- package/decorator/listeners/BeforeSoftRemove.js.map +1 -0
- package/decorator/listeners/BeforeUpdate.d.ts +1 -1
- package/decorator/listeners/BeforeUpdate.js +5 -4
- package/decorator/listeners/BeforeUpdate.js.map +1 -1
- package/decorator/listeners/EventSubscriber.d.ts +1 -1
- package/decorator/listeners/EventSubscriber.js +4 -3
- package/decorator/listeners/EventSubscriber.js.map +1 -1
- package/decorator/options/ColumnCommonOptions.d.ts +1 -1
- package/decorator/options/ColumnCommonOptions.js.map +1 -1
- package/decorator/options/ColumnEmbeddedOptions.d.ts +6 -0
- package/decorator/options/ColumnEmbeddedOptions.js.map +1 -1
- package/decorator/options/ColumnEnumOptions.js.map +1 -1
- package/decorator/options/ColumnHstoreOptions.js.map +1 -1
- package/decorator/options/ColumnNumericOptions.js.map +1 -1
- package/decorator/options/ColumnOptions.d.ts +5 -1
- package/decorator/options/ColumnOptions.js.map +1 -1
- package/decorator/options/ColumnWithLengthOptions.js.map +1 -1
- package/decorator/options/ColumnWithWidthOptions.js.map +1 -1
- package/decorator/options/EntityOptions.js.map +1 -1
- package/decorator/options/IndexOptions.d.ts +5 -0
- package/decorator/options/IndexOptions.js.map +1 -1
- package/decorator/options/JoinColumnOptions.js.map +1 -1
- package/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
- package/decorator/options/JoinTableOptions.js.map +1 -1
- package/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +22 -0
- package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js +4 -0
- package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -0
- package/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
- package/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
- package/decorator/options/RelationOptions.d.ts +12 -2
- package/decorator/options/RelationOptions.js.map +1 -1
- package/decorator/options/SpatialColumnOptions.js.map +1 -1
- package/decorator/options/TransactionOptions.js.map +1 -1
- package/decorator/options/UniqueOptions.d.ts +10 -0
- package/decorator/options/UniqueOptions.js +4 -0
- package/decorator/options/UniqueOptions.js.map +1 -0
- package/decorator/options/ValueTransformer.js.map +1 -1
- package/decorator/options/ViewColumnOptions.d.ts +15 -0
- package/decorator/options/ViewColumnOptions.js +4 -0
- package/decorator/options/ViewColumnOptions.js.map +1 -0
- package/decorator/options/ViewEntityOptions.d.ts +7 -2
- package/decorator/options/ViewEntityOptions.js.map +1 -1
- package/decorator/relations/JoinColumn.d.ts +4 -4
- package/decorator/relations/JoinColumn.js +8 -5
- package/decorator/relations/JoinColumn.js.map +1 -1
- package/decorator/relations/JoinTable.d.ts +4 -4
- package/decorator/relations/JoinTable.js +15 -5
- package/decorator/relations/JoinTable.js.map +1 -1
- package/decorator/relations/ManyToMany.d.ts +4 -3
- package/decorator/relations/ManyToMany.js +14 -9
- package/decorator/relations/ManyToMany.js.map +1 -1
- package/decorator/relations/ManyToOne.d.ts +10 -9
- package/decorator/relations/ManyToOne.js +19 -14
- package/decorator/relations/ManyToOne.js.map +1 -1
- package/decorator/relations/OneToMany.d.ts +6 -4
- package/decorator/relations/OneToMany.js +15 -10
- package/decorator/relations/OneToMany.js.map +1 -1
- package/decorator/relations/OneToOne.d.ts +4 -3
- package/decorator/relations/OneToOne.js +14 -9
- package/decorator/relations/OneToOne.js.map +1 -1
- package/decorator/relations/RelationCount.d.ts +2 -2
- package/decorator/relations/RelationCount.js +4 -3
- package/decorator/relations/RelationCount.js.map +1 -1
- package/decorator/relations/RelationId.d.ts +2 -2
- package/decorator/relations/RelationId.js +4 -3
- package/decorator/relations/RelationId.js.map +1 -1
- package/decorator/tree/Tree.d.ts +2 -1
- package/decorator/tree/Tree.js +6 -4
- package/decorator/tree/Tree.js.map +1 -1
- package/decorator/tree/TreeChildren.d.ts +2 -2
- package/decorator/tree/TreeChildren.js +13 -7
- package/decorator/tree/TreeChildren.js.map +1 -1
- package/decorator/tree/TreeLevelColumn.d.ts +1 -1
- package/decorator/tree/TreeLevelColumn.js +4 -3
- package/decorator/tree/TreeLevelColumn.js.map +1 -1
- package/decorator/tree/TreeParent.d.ts +4 -1
- package/decorator/tree/TreeParent.js +15 -7
- package/decorator/tree/TreeParent.js.map +1 -1
- package/driver/Driver.d.ts +39 -9
- package/driver/Driver.js.map +1 -1
- package/driver/DriverFactory.d.ts +2 -2
- package/driver/DriverFactory.js +54 -25
- package/driver/DriverFactory.js.map +1 -1
- package/driver/DriverUtils.d.ts +39 -10
- package/driver/DriverUtils.js +180 -54
- package/driver/DriverUtils.js.map +1 -1
- package/driver/Query.d.ts +1 -0
- package/driver/Query.js +5 -4
- package/driver/Query.js.map +1 -1
- package/driver/SqlInMemory.js +4 -4
- package/driver/SqlInMemory.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlConnection.d.ts +13 -0
- package/driver/aurora-mysql/AuroraMysqlConnection.js +19 -0
- package/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -0
- package/driver/{aurora-data-api/AuroraDataApiConnectionCredentialsOptions.d.ts → aurora-mysql/AuroraMysqlConnectionCredentialsOptions.d.ts} +1 -1
- package/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js +4 -0
- package/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -0
- package/driver/aurora-mysql/AuroraMysqlConnectionOptions.d.ts +34 -0
- package/driver/aurora-mysql/AuroraMysqlConnectionOptions.js +4 -0
- package/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -0
- package/driver/{aurora-data-api/AuroraDataApiDriver.d.ts → aurora-mysql/AuroraMysqlDriver.d.ts} +49 -18
- package/driver/{aurora-data-api/AuroraDataApiDriver.js → aurora-mysql/AuroraMysqlDriver.js} +330 -217
- package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -0
- package/{browser/driver/aurora-data-api/AuroraDataApiQueryRunner.d.ts → driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts} +28 -18
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +1681 -0
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -0
- package/driver/aurora-postgres/AuroraPostgresConnectionOptions.d.ts +34 -0
- package/driver/aurora-postgres/AuroraPostgresConnectionOptions.js +4 -0
- package/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -0
- package/driver/aurora-postgres/AuroraPostgresDriver.d.ts +70 -0
- package/driver/aurora-postgres/AuroraPostgresDriver.js +103 -0
- package/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -0
- package/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +48 -0
- package/driver/aurora-postgres/AuroraPostgresQueryRunner.js +139 -0
- package/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -0
- package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +55 -0
- package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js +4 -0
- package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -0
- package/driver/better-sqlite3/BetterSqlite3Driver.d.ts +59 -0
- package/driver/better-sqlite3/BetterSqlite3Driver.js +154 -0
- package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -0
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +32 -0
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +128 -0
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -0
- package/driver/capacitor/CapacitorConnectionOptions.d.ts +30 -0
- package/driver/capacitor/CapacitorConnectionOptions.js +4 -0
- package/driver/capacitor/CapacitorConnectionOptions.js.map +1 -0
- package/driver/capacitor/CapacitorDriver.d.ts +27 -0
- package/driver/capacitor/CapacitorDriver.js +83 -0
- package/driver/capacitor/CapacitorDriver.js.map +1 -0
- package/driver/capacitor/CapacitorQueryRunner.d.ts +33 -0
- package/driver/capacitor/CapacitorQueryRunner.js +98 -0
- package/driver/capacitor/CapacitorQueryRunner.js.map +1 -0
- package/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
- package/driver/cockroachdb/CockroachConnectionOptions.d.ts +12 -2
- package/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.d.ts +49 -8
- package/driver/cockroachdb/CockroachDriver.js +331 -271
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.d.ts +21 -18
- package/driver/cockroachdb/CockroachQueryRunner.js +1592 -2040
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/cordova/CordovaConnectionOptions.d.ts +7 -2
- package/driver/cordova/CordovaConnectionOptions.js.map +1 -1
- package/driver/cordova/CordovaDriver.d.ts +5 -4
- package/driver/cordova/CordovaDriver.js +38 -52
- package/driver/cordova/CordovaDriver.js.map +1 -1
- package/driver/cordova/CordovaQueryRunner.d.ts +27 -1
- package/driver/cordova/CordovaQueryRunner.js +105 -56
- package/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/driver/expo/ExpoConnectionOptions.d.ts +6 -2
- package/driver/expo/ExpoConnectionOptions.js.map +1 -1
- package/driver/expo/ExpoDriver.d.ts +4 -7
- package/driver/expo/ExpoDriver.js +36 -55
- package/driver/expo/ExpoDriver.js.map +1 -1
- package/driver/expo/ExpoQueryRunner.d.ts +9 -1
- package/driver/expo/ExpoQueryRunner.js +129 -98
- package/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/driver/mongodb/MongoConnectionOptions.d.ts +20 -3
- package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/driver/mongodb/MongoDriver.d.ts +36 -12
- package/driver/mongodb/MongoDriver.js +153 -105
- package/driver/mongodb/MongoDriver.js.map +1 -1
- package/driver/mongodb/MongoQueryRunner.d.ts +26 -8
- package/driver/mongodb/MongoQueryRunner.js +332 -748
- package/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/driver/mongodb/typings.d.ts +12 -11
- package/driver/mongodb/typings.js +1 -1
- package/driver/mongodb/typings.js.map +1 -1
- package/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +4 -0
- package/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
- package/driver/mysql/MysqlConnectionOptions.d.ts +8 -2
- package/driver/mysql/MysqlConnectionOptions.js.map +1 -1
- package/driver/mysql/MysqlDriver.d.ts +48 -11
- package/driver/mysql/MysqlDriver.js +450 -279
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.d.ts +24 -15
- package/driver/mysql/MysqlQueryRunner.js +1567 -1764
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/nativescript/NativescriptConnectionOptions.d.ts +27 -2
- package/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
- package/driver/nativescript/NativescriptDriver.d.ts +5 -4
- package/driver/nativescript/NativescriptDriver.js +41 -46
- package/driver/nativescript/NativescriptDriver.js.map +1 -1
- package/driver/nativescript/NativescriptQueryRunner.d.ts +9 -1
- package/driver/nativescript/NativescriptQueryRunner.js +59 -42
- package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/driver/oracle/OracleConnectionCredentialsOptions.d.ts +4 -0
- package/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
- package/driver/oracle/OracleConnectionOptions.d.ts +11 -2
- package/driver/oracle/OracleConnectionOptions.js.map +1 -1
- package/driver/oracle/OracleDriver.d.ts +31 -7
- package/driver/oracle/OracleDriver.js +338 -242
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.d.ts +22 -9
- package/driver/oracle/OracleQueryRunner.js +1361 -1683
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresConnectionCredentialsOptions.d.ts +1 -1
- package/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
- package/driver/postgres/PostgresConnectionOptions.d.ts +34 -2
- package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
- package/driver/postgres/PostgresDriver.d.ts +81 -19
- package/driver/postgres/PostgresDriver.js +624 -443
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.d.ts +47 -26
- package/driver/postgres/PostgresQueryRunner.js +2144 -2300
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/react-native/ReactNativeConnectionOptions.d.ts +7 -2
- package/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
- package/driver/react-native/ReactNativeDriver.d.ts +4 -3
- package/driver/react-native/ReactNativeDriver.js +36 -45
- package/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/driver/react-native/ReactNativeQueryRunner.d.ts +9 -1
- package/driver/react-native/ReactNativeQueryRunner.js +67 -56
- package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/driver/sap/SapConnectionCredentialsOptions.d.ts +45 -0
- package/driver/sap/SapConnectionCredentialsOptions.js +4 -0
- package/driver/sap/SapConnectionCredentialsOptions.js.map +1 -0
- package/driver/sap/SapConnectionOptions.d.ts +59 -0
- package/driver/sap/SapConnectionOptions.js +4 -0
- package/driver/sap/SapConnectionOptions.js.map +1 -0
- package/driver/sap/SapDriver.d.ts +214 -0
- package/driver/sap/SapDriver.js +645 -0
- package/driver/sap/SapDriver.js.map +1 -0
- package/driver/sap/SapQueryRunner.d.ts +342 -0
- package/driver/sap/SapQueryRunner.js +1991 -0
- package/driver/sap/SapQueryRunner.js.map +1 -0
- package/driver/sqlite/SqliteConnectionOptions.d.ts +7 -2
- package/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
- package/driver/sqlite/SqliteDriver.d.ts +18 -4
- package/driver/sqlite/SqliteDriver.js +111 -87
- package/driver/sqlite/SqliteDriver.js.map +1 -1
- package/driver/sqlite/SqliteQueryRunner.d.ts +9 -1
- package/driver/sqlite/SqliteQueryRunner.js +88 -71
- package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +47 -10
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +259 -142
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +24 -5
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +1034 -1451
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqljs/SqljsConnectionOptions.d.ts +7 -2
- package/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
- package/driver/sqljs/SqljsDriver.d.ts +4 -3
- package/driver/sqljs/SqljsDriver.js +160 -232
- package/driver/sqljs/SqljsDriver.js.map +1 -1
- package/driver/sqljs/SqljsQueryRunner.d.ts +15 -1
- package/driver/sqljs/SqljsQueryRunner.js +89 -64
- package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/driver/sqlserver/MssqlParameter.d.ts +1 -0
- package/driver/sqlserver/MssqlParameter.js +5 -8
- package/driver/sqlserver/MssqlParameter.js.map +1 -1
- package/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +18 -2
- package/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
- package/driver/sqlserver/SqlServerConnectionOptions.d.ts +11 -6
- package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.d.ts +43 -9
- package/driver/sqlserver/SqlServerDriver.js +366 -262
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.d.ts +18 -28
- package/driver/sqlserver/SqlServerQueryRunner.js +1825 -2322
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +10 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js +4 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +20 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js +4 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +16 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js +4 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +17 -0
- package/driver/{aurora-data-api/AuroraDataApiConnectionCredentialsOptions.js → sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js} +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.d.ts +17 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js +4 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -0
- package/driver/sqlserver/authentication/DefaultAuthentication.d.ts +13 -0
- package/driver/sqlserver/authentication/DefaultAuthentication.js +4 -0
- package/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -0
- package/driver/sqlserver/authentication/NtlmAuthentication.d.ts +19 -0
- package/driver/sqlserver/authentication/NtlmAuthentication.js +4 -0
- package/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -0
- package/driver/types/ColumnTypes.d.ts +5 -5
- package/driver/types/ColumnTypes.js.map +1 -1
- package/driver/types/DataTypeDefaults.js.map +1 -1
- package/driver/types/DatabaseType.d.ts +1 -1
- package/driver/types/DatabaseType.js.map +1 -1
- package/driver/types/IsolationLevel.js.map +1 -1
- package/driver/types/MappedColumnTypes.d.ts +12 -0
- package/driver/types/MappedColumnTypes.js.map +1 -1
- package/driver/types/MetadataTableType.d.ts +5 -0
- package/driver/types/MetadataTableType.js +11 -0
- package/driver/types/MetadataTableType.js.map +1 -0
- package/driver/types/ReplicationMode.d.ts +1 -0
- package/driver/types/ReplicationMode.js +4 -0
- package/driver/types/ReplicationMode.js.map +1 -0
- package/driver/types/UpsertType.d.ts +1 -0
- package/driver/types/UpsertType.js +4 -0
- package/driver/types/UpsertType.js.map +1 -0
- package/entity-manager/EntityManager.d.ts +143 -286
- package/entity-manager/EntityManager.js +541 -447
- package/entity-manager/EntityManager.js.map +1 -1
- package/entity-manager/EntityManagerFactory.d.ts +2 -2
- package/entity-manager/EntityManagerFactory.js +10 -14
- package/entity-manager/EntityManagerFactory.js.map +1 -1
- package/entity-manager/MongoEntityManager.d.ts +101 -64
- package/entity-manager/MongoEntityManager.js +507 -473
- package/entity-manager/MongoEntityManager.js.map +1 -1
- package/entity-manager/SqljsEntityManager.d.ts +3 -2
- package/entity-manager/SqljsEntityManager.js +16 -36
- package/entity-manager/SqljsEntityManager.js.map +1 -1
- package/entity-schema/EntitySchema.d.ts +1 -0
- package/entity-schema/EntitySchema.js +5 -4
- package/entity-schema/EntitySchema.js.map +1 -1
- package/entity-schema/EntitySchemaCheckOptions.js.map +1 -1
- package/entity-schema/EntitySchemaColumnOptions.d.ts +4 -0
- package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/entity-schema/EntitySchemaEmbeddedColumnOptions.d.ts +18 -0
- package/entity-schema/EntitySchemaEmbeddedColumnOptions.js +8 -0
- package/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -0
- package/entity-schema/EntitySchemaEmbeddedError.d.ts +6 -0
- package/entity-schema/EntitySchemaEmbeddedError.js +18 -0
- package/entity-schema/EntitySchemaEmbeddedError.js.map +1 -0
- package/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
- package/entity-schema/EntitySchemaIndexOptions.d.ts +7 -2
- package/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
- package/entity-schema/EntitySchemaOptions.d.ts +22 -10
- package/entity-schema/EntitySchemaOptions.js +3 -5
- package/entity-schema/EntitySchemaOptions.js.map +1 -1
- package/entity-schema/EntitySchemaRelationOptions.d.ts +15 -4
- package/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
- package/entity-schema/EntitySchemaTransformer.d.ts +1 -0
- package/entity-schema/EntitySchemaTransformer.js +230 -183
- package/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/entity-schema/EntitySchemaUniqueOptions.d.ts +7 -2
- package/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
- package/error/AlreadyHasActiveConnectionError.d.ts +2 -2
- package/error/AlreadyHasActiveConnectionError.js +7 -12
- package/error/AlreadyHasActiveConnectionError.js.map +1 -1
- package/error/CannotAttachTreeChildrenEntityError.d.ts +3 -3
- package/error/CannotAttachTreeChildrenEntityError.js +8 -12
- package/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
- package/error/CannotConnectAlreadyConnectedError.d.ts +2 -2
- package/error/CannotConnectAlreadyConnectedError.js +6 -11
- package/error/CannotConnectAlreadyConnectedError.js.map +1 -1
- package/error/CannotCreateEntityIdMapError.d.ts +2 -2
- package/error/CannotCreateEntityIdMapError.js +8 -12
- package/error/CannotCreateEntityIdMapError.js.map +1 -1
- package/error/CannotDetermineEntityError.d.ts +2 -2
- package/error/CannotDetermineEntityError.js +7 -11
- package/error/CannotDetermineEntityError.js.map +1 -1
- package/error/CannotExecuteNotConnectedError.d.ts +2 -2
- package/error/CannotExecuteNotConnectedError.js +6 -11
- package/error/CannotExecuteNotConnectedError.js.map +1 -1
- package/error/CannotGetEntityManagerNotConnectedError.d.ts +2 -2
- package/error/CannotGetEntityManagerNotConnectedError.js +6 -11
- package/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
- package/error/CannotReflectMethodParameterTypeError.d.ts +2 -2
- package/error/CannotReflectMethodParameterTypeError.js +8 -13
- package/error/CannotReflectMethodParameterTypeError.js.map +1 -1
- package/error/CircularRelationsError.d.ts +2 -2
- package/error/CircularRelationsError.js +7 -11
- package/error/CircularRelationsError.js.map +1 -1
- package/error/ColumnTypeUndefinedError.d.ts +2 -2
- package/error/ColumnTypeUndefinedError.js +9 -14
- package/error/ColumnTypeUndefinedError.js.map +1 -1
- package/error/ConnectionIsNotSetError.d.ts +2 -2
- package/error/ConnectionIsNotSetError.js +6 -11
- package/error/ConnectionIsNotSetError.js.map +1 -1
- package/error/ConnectionNotFoundError.d.ts +2 -2
- package/error/ConnectionNotFoundError.js +6 -11
- package/error/ConnectionNotFoundError.js.map +1 -1
- package/error/CustomRepositoryCannotInheritRepositoryError.d.ts +2 -2
- package/error/CustomRepositoryCannotInheritRepositoryError.js +9 -12
- package/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
- package/error/CustomRepositoryDoesNotHaveEntityError.d.ts +2 -2
- package/error/CustomRepositoryDoesNotHaveEntityError.js +9 -12
- package/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
- package/error/CustomRepositoryNotFoundError.d.ts +2 -2
- package/error/CustomRepositoryNotFoundError.js +9 -12
- package/error/CustomRepositoryNotFoundError.js.map +1 -1
- package/error/DataTypeNotSupportedError.d.ts +2 -2
- package/error/DataTypeNotSupportedError.js +8 -12
- package/error/DataTypeNotSupportedError.js.map +1 -1
- package/error/DriverOptionNotSetError.d.ts +2 -2
- package/error/DriverOptionNotSetError.js +7 -11
- package/error/DriverOptionNotSetError.js.map +1 -1
- package/error/DriverPackageNotInstalledError.d.ts +2 -2
- package/error/DriverPackageNotInstalledError.js +7 -11
- package/error/DriverPackageNotInstalledError.js.map +1 -1
- package/error/EntityMetadataNotFoundError.d.ts +5 -6
- package/error/EntityMetadataNotFoundError.js +18 -19
- package/error/EntityMetadataNotFoundError.js.map +1 -1
- package/error/EntityNotFoundError.d.ts +5 -5
- package/error/EntityNotFoundError.js +22 -21
- package/error/EntityNotFoundError.js.map +1 -1
- package/error/EntityPropertyNotFoundError.d.ts +8 -0
- package/error/EntityPropertyNotFoundError.js +17 -0
- package/error/EntityPropertyNotFoundError.js.map +1 -0
- package/error/FindRelationsNotFoundError.d.ts +7 -0
- package/error/FindRelationsNotFoundError.js +23 -0
- package/error/FindRelationsNotFoundError.js.map +1 -0
- package/error/InitializedRelationError.d.ts +2 -1
- package/error/InitializedRelationError.js +8 -12
- package/error/InitializedRelationError.js.map +1 -1
- package/error/InsertValuesMissingError.d.ts +2 -2
- package/error/InsertValuesMissingError.js +7 -11
- package/error/InsertValuesMissingError.js.map +1 -1
- package/error/LimitOnUpdateNotSupportedError.d.ts +3 -3
- package/error/LimitOnUpdateNotSupportedError.js +7 -12
- package/error/LimitOnUpdateNotSupportedError.js.map +1 -1
- package/error/LockNotSupportedOnGivenDriverError.d.ts +2 -2
- package/error/LockNotSupportedOnGivenDriverError.js +6 -11
- package/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
- package/error/MetadataAlreadyExistsError.d.ts +2 -4
- package/error/MetadataAlreadyExistsError.js +12 -15
- package/error/MetadataAlreadyExistsError.js.map +1 -1
- package/error/MetadataWithSuchNameAlreadyExistsError.d.ts +2 -4
- package/error/MetadataWithSuchNameAlreadyExistsError.js +10 -14
- package/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
- package/error/MissingDeleteDateColumnError.d.ts +5 -0
- package/error/MissingDeleteDateColumnError.js +12 -0
- package/error/MissingDeleteDateColumnError.js.map +1 -0
- package/error/MissingDriverError.d.ts +3 -3
- package/error/MissingDriverError.js +7 -11
- package/error/MissingDriverError.js.map +1 -1
- package/error/MissingJoinColumnError.d.ts +2 -4
- package/error/MissingJoinColumnError.js +13 -17
- package/error/MissingJoinColumnError.js.map +1 -1
- package/error/MissingJoinTableError.d.ts +2 -4
- package/error/MissingJoinTableError.js +13 -17
- package/error/MissingJoinTableError.js.map +1 -1
- package/error/MissingPrimaryColumnError.d.ts +2 -4
- package/error/MissingPrimaryColumnError.js +7 -14
- package/error/MissingPrimaryColumnError.js.map +1 -1
- package/error/MustBeEntityError.d.ts +2 -2
- package/error/MustBeEntityError.js +6 -11
- package/error/MustBeEntityError.js.map +1 -1
- package/error/NamingStrategyNotFoundError.d.ts +2 -2
- package/error/NamingStrategyNotFoundError.js +12 -13
- package/error/NamingStrategyNotFoundError.js.map +1 -1
- package/error/NestedSetMultipleRootError.d.ts +4 -0
- package/error/NestedSetMultipleRootError.js +12 -0
- package/error/NestedSetMultipleRootError.js.map +1 -0
- package/error/NoConnectionForRepositoryError.d.ts +2 -2
- package/error/NoConnectionForRepositoryError.js +7 -12
- package/error/NoConnectionForRepositoryError.js.map +1 -1
- package/error/NoConnectionOptionError.d.ts +2 -1
- package/error/NoConnectionOptionError.js +7 -10
- package/error/NoConnectionOptionError.js.map +1 -1
- package/error/NoNeedToReleaseEntityManagerError.d.ts +2 -2
- package/error/NoNeedToReleaseEntityManagerError.js +8 -13
- package/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
- package/error/NoVersionOrUpdateDateColumnError.d.ts +2 -2
- package/error/NoVersionOrUpdateDateColumnError.js +6 -11
- package/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
- package/error/OffsetWithoutLimitNotSupportedError.d.ts +4 -4
- package/error/OffsetWithoutLimitNotSupportedError.js +9 -12
- package/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
- package/error/OptimisticLockCanNotBeUsedError.d.ts +2 -2
- package/error/OptimisticLockCanNotBeUsedError.js +6 -11
- package/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
- package/error/OptimisticLockVersionMismatchError.d.ts +2 -2
- package/error/OptimisticLockVersionMismatchError.js +6 -11
- package/error/OptimisticLockVersionMismatchError.js.map +1 -1
- package/error/PersistedEntityNotFoundError.d.ts +2 -2
- package/error/PersistedEntityNotFoundError.js +6 -11
- package/error/PersistedEntityNotFoundError.js.map +1 -1
- package/error/PessimisticLockTransactionRequiredError.d.ts +2 -2
- package/error/PessimisticLockTransactionRequiredError.js +6 -11
- package/error/PessimisticLockTransactionRequiredError.js.map +1 -1
- package/error/PrimaryColumnCannotBeNullableError.d.ts +2 -2
- package/error/PrimaryColumnCannotBeNullableError.js +7 -12
- package/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
- package/error/QueryFailedError.d.ts +6 -2
- package/error/QueryFailedError.js +20 -14
- package/error/QueryFailedError.js.map +1 -1
- package/error/QueryRunnerAlreadyReleasedError.d.ts +2 -4
- package/error/QueryRunnerAlreadyReleasedError.js +6 -13
- package/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
- package/error/QueryRunnerProviderAlreadyReleasedError.d.ts +2 -2
- package/error/QueryRunnerProviderAlreadyReleasedError.js +7 -11
- package/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
- package/error/RepositoryNotFoundError.d.ts +4 -4
- package/error/RepositoryNotFoundError.js +17 -15
- package/error/RepositoryNotFoundError.js.map +1 -1
- package/error/RepositoryNotTreeError.d.ts +4 -4
- package/error/RepositoryNotTreeError.js +19 -18
- package/error/RepositoryNotTreeError.js.map +1 -1
- package/error/ReturningStatementNotSupportedError.d.ts +2 -2
- package/error/ReturningStatementNotSupportedError.js +6 -11
- package/error/ReturningStatementNotSupportedError.js.map +1 -1
- package/error/SubjectRemovedAndUpdatedError.d.ts +2 -2
- package/error/SubjectRemovedAndUpdatedError.js +7 -12
- package/error/SubjectRemovedAndUpdatedError.js.map +1 -1
- package/error/SubjectWithoutIdentifierError.d.ts +2 -2
- package/error/SubjectWithoutIdentifierError.js +6 -12
- package/error/SubjectWithoutIdentifierError.js.map +1 -1
- package/error/TransactionAlreadyStartedError.d.ts +2 -2
- package/error/TransactionAlreadyStartedError.js +6 -11
- package/error/TransactionAlreadyStartedError.js.map +1 -1
- package/error/TransactionNotStartedError.d.ts +2 -2
- package/error/TransactionNotStartedError.js +6 -11
- package/error/TransactionNotStartedError.js.map +1 -1
- package/error/TreeRepositoryNotSupportedError.d.ts +2 -2
- package/error/TreeRepositoryNotSupportedError.js +6 -11
- package/error/TreeRepositoryNotSupportedError.js.map +1 -1
- package/error/TypeORMError.d.ts +4 -0
- package/error/TypeORMError.js +23 -0
- package/error/TypeORMError.js.map +1 -0
- package/error/UpdateValuesMissingError.d.ts +2 -5
- package/error/UpdateValuesMissingError.js +6 -14
- package/error/UpdateValuesMissingError.js.map +1 -1
- package/error/UsingJoinColumnIsNotAllowedError.d.ts +2 -4
- package/error/UsingJoinColumnIsNotAllowedError.js +7 -14
- package/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
- package/error/UsingJoinColumnOnlyOnOneSideAllowedError.d.ts +2 -4
- package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +8 -15
- package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
- package/error/UsingJoinTableIsNotAllowedError.d.ts +2 -4
- package/error/UsingJoinTableIsNotAllowedError.js +8 -15
- package/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
- package/error/UsingJoinTableOnlyOnOneSideAllowedError.d.ts +2 -4
- package/error/UsingJoinTableOnlyOnOneSideAllowedError.js +8 -15
- package/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
- package/error/index.d.ts +62 -0
- package/error/index.js +67 -0
- package/error/index.js.map +1 -0
- package/find-options/EqualOperator.d.ts +5 -0
- package/find-options/EqualOperator.js +13 -0
- package/find-options/EqualOperator.js.map +1 -0
- package/find-options/FindManyOptions.d.ts +14 -0
- package/find-options/FindManyOptions.js +4 -0
- package/find-options/FindManyOptions.js.map +1 -0
- package/find-options/FindOneOptions.d.ts +86 -0
- package/find-options/FindOneOptions.js +4 -0
- package/find-options/FindOneOptions.js.map +1 -0
- package/find-options/FindOperator.d.ts +31 -8
- package/find-options/FindOperator.js +65 -96
- package/find-options/FindOperator.js.map +1 -1
- package/find-options/FindOperatorType.d.ts +1 -1
- package/find-options/FindOperatorType.js.map +1 -1
- package/find-options/FindOptionsOrder.d.ts +19 -0
- package/find-options/FindOptionsOrder.js +4 -0
- package/find-options/FindOptionsOrder.js.map +1 -0
- package/find-options/FindOptionsRelations.d.ts +19 -0
- package/find-options/FindOptionsRelations.js +4 -0
- package/find-options/FindOptionsRelations.js.map +1 -0
- package/find-options/FindOptionsSelect.d.ts +19 -0
- package/find-options/FindOptionsSelect.js +4 -0
- package/find-options/FindOptionsSelect.js.map +1 -0
- package/find-options/FindOptionsUtils.d.ts +180 -6
- package/find-options/FindOptionsUtils.js +301 -95
- package/find-options/FindOptionsUtils.js.map +1 -1
- package/find-options/FindOptionsWhere.d.ts +14 -0
- package/find-options/FindOptionsWhere.js +4 -0
- package/find-options/FindOptionsWhere.js.map +1 -0
- package/find-options/FindTreeOptions.d.ts +13 -0
- package/find-options/FindTreeOptions.js +4 -0
- package/find-options/FindTreeOptions.js.map +1 -0
- package/find-options/JoinOptions.d.ts +76 -0
- package/find-options/JoinOptions.js +4 -0
- package/find-options/JoinOptions.js.map +1 -0
- package/find-options/OrderByCondition.js.map +1 -1
- package/find-options/mongodb/MongoFindManyOptions.d.ts +14 -0
- package/find-options/mongodb/MongoFindManyOptions.js +4 -0
- package/find-options/mongodb/MongoFindManyOptions.js.map +1 -0
- package/find-options/mongodb/MongoFindOneOptions.d.ts +11 -0
- package/find-options/mongodb/MongoFindOneOptions.js +4 -0
- package/find-options/mongodb/MongoFindOneOptions.js.map +1 -0
- package/find-options/operator/Any.d.ts +1 -1
- package/find-options/operator/Any.js +2 -1
- package/find-options/operator/Any.js.map +1 -1
- package/find-options/operator/Between.d.ts +1 -1
- package/find-options/operator/Between.js +2 -1
- package/find-options/operator/Between.js.map +1 -1
- package/find-options/operator/Equal.d.ts +7 -2
- package/find-options/operator/Equal.js +8 -3
- package/find-options/operator/Equal.js.map +1 -1
- package/find-options/operator/ILike.d.ts +1 -1
- package/find-options/operator/ILike.js +3 -2
- package/find-options/operator/ILike.js.map +1 -1
- package/find-options/operator/In.d.ts +1 -1
- package/find-options/operator/In.js +2 -1
- package/find-options/operator/In.js.map +1 -1
- package/find-options/operator/IsNull.js +2 -1
- package/find-options/operator/IsNull.js.map +1 -1
- package/find-options/operator/LessThan.js +2 -1
- package/find-options/operator/LessThan.js.map +1 -1
- package/find-options/operator/LessThanOrEqual.js +2 -1
- package/find-options/operator/LessThanOrEqual.js.map +1 -1
- package/find-options/operator/Like.d.ts +1 -1
- package/find-options/operator/Like.js +3 -2
- package/find-options/operator/Like.js.map +1 -1
- package/find-options/operator/MoreThan.js +2 -1
- package/find-options/operator/MoreThan.js.map +1 -1
- package/find-options/operator/MoreThanOrEqual.js +2 -1
- package/find-options/operator/MoreThanOrEqual.js.map +1 -1
- package/find-options/operator/Not.d.ts +1 -1
- package/find-options/operator/Not.js +3 -2
- package/find-options/operator/Not.js.map +1 -1
- package/find-options/operator/Raw.d.ts +14 -2
- package/find-options/operator/Raw.js +7 -7
- package/find-options/operator/Raw.js.map +1 -1
- package/globals.d.ts +117 -0
- package/globals.js +183 -0
- package/globals.js.map +1 -0
- package/index.d.ts +45 -113
- package/index.js +86 -229
- package/index.js.map +1 -1
- package/index.mjs +366 -0
- package/logger/AdvancedConsoleLogger.d.ts +2 -1
- package/logger/AdvancedConsoleLogger.js +57 -33
- package/logger/AdvancedConsoleLogger.js.map +1 -1
- package/logger/DebugLogger.d.ts +1 -2
- package/logger/DebugLogger.js +27 -26
- package/logger/DebugLogger.js.map +1 -1
- package/logger/FileLogger.d.ts +3 -1
- package/logger/FileLogger.js +68 -40
- package/logger/FileLogger.js.map +1 -1
- package/logger/Logger.d.ts +1 -1
- package/logger/Logger.js.map +1 -1
- package/logger/LoggerFactory.js +11 -12
- package/logger/LoggerFactory.js.map +1 -1
- package/logger/LoggerOptions.d.ts +9 -0
- package/logger/LoggerOptions.js.map +1 -1
- package/logger/SimpleConsoleLogger.d.ts +2 -1
- package/logger/SimpleConsoleLogger.js +56 -32
- package/logger/SimpleConsoleLogger.js.map +1 -1
- package/metadata/CheckMetadata.js +9 -7
- package/metadata/CheckMetadata.js.map +1 -1
- package/metadata/ColumnMetadata.d.ts +16 -7
- package/metadata/ColumnMetadata.js +243 -127
- package/metadata/ColumnMetadata.js.map +1 -1
- package/metadata/EmbeddedMetadata.d.ts +12 -5
- package/metadata/EmbeddedMetadata.js +78 -50
- package/metadata/EmbeddedMetadata.js.map +1 -1
- package/metadata/EntityListenerMetadata.js +22 -14
- package/metadata/EntityListenerMetadata.js.map +1 -1
- package/metadata/EntityMetadata.d.ts +65 -22
- package/metadata/EntityMetadata.js +255 -163
- package/metadata/EntityMetadata.js.map +1 -1
- package/metadata/ExclusionMetadata.js +9 -7
- package/metadata/ExclusionMetadata.js.map +1 -1
- package/metadata/ForeignKeyMetadata.js +9 -9
- package/metadata/ForeignKeyMetadata.js.map +1 -1
- package/metadata/IndexMetadata.d.ts +7 -2
- package/metadata/IndexMetadata.js +45 -33
- package/metadata/IndexMetadata.js.map +1 -1
- package/metadata/RelationCountMetadata.js +12 -9
- package/metadata/RelationCountMetadata.js.map +1 -1
- package/metadata/RelationIdMetadata.js +22 -18
- package/metadata/RelationIdMetadata.js.map +1 -1
- package/metadata/RelationMetadata.d.ts +28 -5
- package/metadata/RelationMetadata.js +162 -79
- package/metadata/RelationMetadata.js.map +1 -1
- package/metadata/UniqueMetadata.d.ts +7 -2
- package/metadata/UniqueMetadata.js +41 -31
- package/metadata/UniqueMetadata.js.map +1 -1
- package/metadata/types/ClosureTreeOptions.d.ts +10 -0
- package/metadata/types/ClosureTreeOptions.js +4 -0
- package/metadata/types/ClosureTreeOptions.js.map +1 -0
- package/metadata/types/DeferrableType.js.map +1 -1
- package/metadata/types/EventListenerTypes.d.ts +12 -8
- package/metadata/types/EventListenerTypes.js +14 -12
- package/metadata/types/EventListenerTypes.js.map +1 -1
- package/metadata/types/OnDeleteType.js.map +1 -1
- package/metadata/types/OnUpdateType.js.map +1 -1
- package/metadata/types/PropertyTypeInFunction.js.map +1 -1
- package/metadata/types/RelationTypeInFunction.d.ts +2 -1
- package/metadata/types/RelationTypeInFunction.js.map +1 -1
- package/metadata/types/RelationTypes.js.map +1 -1
- package/metadata/types/TableTypes.d.ts +1 -1
- package/metadata/types/TableTypes.js.map +1 -1
- package/metadata/types/TreeTypes.js.map +1 -1
- package/metadata-args/CheckMetadataArgs.js.map +1 -1
- package/metadata-args/ColumnMetadataArgs.js.map +1 -1
- package/metadata-args/DiscriminatorValueMetadataArgs.js.map +1 -1
- package/metadata-args/EmbeddedMetadataArgs.d.ts +2 -2
- package/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
- package/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
- package/metadata-args/EntityRepositoryMetadataArgs.d.ts +2 -2
- package/metadata-args/EntityRepositoryMetadataArgs.js.map +1 -1
- package/metadata-args/EntitySubscriberMetadataArgs.js.map +1 -1
- package/metadata-args/ExclusionMetadataArgs.js.map +1 -1
- package/metadata-args/GeneratedMetadataArgs.js.map +1 -1
- package/metadata-args/IndexMetadataArgs.d.ts +7 -2
- package/metadata-args/IndexMetadataArgs.js.map +1 -1
- package/metadata-args/InheritanceMetadataArgs.js.map +1 -1
- package/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
- package/metadata-args/JoinTableMetadataArgs.js.map +1 -1
- package/metadata-args/MetadataArgsStorage.d.ts +4 -0
- package/metadata-args/MetadataArgsStorage.js +147 -95
- package/metadata-args/MetadataArgsStorage.js.map +1 -1
- package/metadata-args/NamingStrategyMetadataArgs.js.map +1 -1
- package/metadata-args/RelationCountMetadataArgs.js.map +1 -1
- package/metadata-args/RelationIdMetadataArgs.js.map +1 -1
- package/metadata-args/RelationMetadataArgs.js.map +1 -1
- package/metadata-args/TableMetadataArgs.d.ts +9 -5
- package/metadata-args/TableMetadataArgs.js.map +1 -1
- package/metadata-args/TransactionEntityMetadataArgs.js.map +1 -1
- package/metadata-args/TransactionRepositoryMetadataArgs.d.ts +1 -1
- package/metadata-args/TransactionRepositoryMetadataArgs.js.map +1 -1
- package/metadata-args/TreeMetadataArgs.d.ts +5 -0
- package/metadata-args/TreeMetadataArgs.js.map +1 -1
- package/metadata-args/UniqueMetadataArgs.d.ts +7 -2
- package/metadata-args/UniqueMetadataArgs.js.map +1 -1
- package/metadata-args/types/ColumnMode.d.ts +1 -1
- package/metadata-args/types/ColumnMode.js.map +1 -1
- package/metadata-builder/ClosureJunctionEntityMetadataBuilder.d.ts +2 -2
- package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +52 -33
- package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/EntityMetadataBuilder.d.ts +2 -2
- package/metadata-builder/EntityMetadataBuilder.js +412 -281
- package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/EntityMetadataValidator.js +85 -73
- package/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/metadata-builder/JunctionEntityMetadataBuilder.d.ts +2 -2
- package/metadata-builder/JunctionEntityMetadataBuilder.js +149 -95
- package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/MetadataUtils.js +13 -15
- package/metadata-builder/MetadataUtils.js.map +1 -1
- package/metadata-builder/RelationJoinColumnBuilder.d.ts +3 -2
- package/metadata-builder/RelationJoinColumnBuilder.js +73 -52
- package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/migration/Migration.js +4 -4
- package/migration/Migration.js.map +1 -1
- package/migration/MigrationExecutor.d.ts +6 -4
- package/migration/MigrationExecutor.js +383 -537
- package/migration/MigrationExecutor.js.map +1 -1
- package/migration/MigrationInterface.js.map +1 -1
- package/naming-strategy/DefaultNamingStrategy.d.ts +7 -1
- package/naming-strategy/DefaultNamingStrategy.js +96 -84
- package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/naming-strategy/NamingStrategyInterface.d.ts +17 -1
- package/naming-strategy/NamingStrategyInterface.js.map +1 -1
- package/package.json +173 -71
- package/persistence/EntityPersistExecutor.d.ts +4 -4
- package/persistence/EntityPersistExecutor.js +137 -160
- package/persistence/EntityPersistExecutor.js.map +1 -1
- package/persistence/Subject.d.ts +27 -3
- package/persistence/Subject.js +105 -67
- package/persistence/Subject.js.map +1 -1
- package/persistence/SubjectChangeMap.js.map +1 -1
- package/persistence/SubjectChangedColumnsComputer.js +77 -53
- package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/persistence/SubjectDatabaseEntityLoader.d.ts +1 -1
- package/persistence/SubjectDatabaseEntityLoader.js +98 -113
- package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/persistence/SubjectExecutor.d.ts +19 -2
- package/persistence/SubjectExecutor.js +594 -427
- package/persistence/SubjectExecutor.js.map +1 -1
- package/persistence/SubjectTopoligicalSorter.js +64 -58
- package/persistence/SubjectTopoligicalSorter.js.map +1 -1
- package/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
- package/persistence/subject-builder/CascadesSubjectBuilder.js +55 -28
- package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/ManyToManySubjectBuilder.js +67 -60
- package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/OneToManySubjectBuilder.js +64 -45
- package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +35 -30
- package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/persistence/tree/ClosureSubjectExecutor.d.ts +8 -11
- package/persistence/tree/ClosureSubjectExecutor.js +215 -89
- package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
- package/persistence/tree/MaterializedPathSubjectExecutor.d.ts +5 -0
- package/persistence/tree/MaterializedPathSubjectExecutor.js +90 -47
- package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/persistence/tree/NestedSetSubjectExecutor.d.ts +20 -0
- package/persistence/tree/NestedSetSubjectExecutor.js +245 -62
- package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
- package/platform/PlatformTools.d.ts +8 -1
- package/platform/PlatformTools.js +123 -118
- package/platform/PlatformTools.js.map +1 -1
- package/query-builder/Alias.d.ts +4 -3
- package/query-builder/Alias.js +20 -31
- package/query-builder/Alias.js.map +1 -1
- package/query-builder/Brackets.d.ts +4 -3
- package/query-builder/Brackets.js +5 -4
- package/query-builder/Brackets.js.map +1 -1
- package/query-builder/DeleteQueryBuilder.d.ts +13 -11
- package/query-builder/DeleteQueryBuilder.js +113 -168
- package/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/query-builder/InsertOrUpdateOptions.d.ts +3 -0
- package/query-builder/InsertOrUpdateOptions.js +4 -0
- package/query-builder/InsertOrUpdateOptions.js.map +1 -0
- package/query-builder/InsertQueryBuilder.d.ts +15 -5
- package/query-builder/InsertQueryBuilder.js +460 -298
- package/query-builder/InsertQueryBuilder.js.map +1 -1
- package/query-builder/JoinAttribute.d.ts +12 -12
- package/query-builder/JoinAttribute.js +143 -190
- package/query-builder/JoinAttribute.js.map +1 -1
- package/query-builder/JoinOptions.js.map +1 -1
- package/query-builder/NotBrackets.d.ts +8 -0
- package/query-builder/NotBrackets.js +17 -0
- package/query-builder/NotBrackets.js.map +1 -0
- package/query-builder/QueryBuilder.d.ts +55 -32
- package/query-builder/QueryBuilder.js +703 -378
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/QueryBuilderUtils.d.ts +0 -1
- package/query-builder/QueryBuilderUtils.js +6 -15
- package/query-builder/QueryBuilderUtils.js.map +1 -1
- package/query-builder/QueryExpressionMap.d.ts +51 -29
- package/query-builder/QueryExpressionMap.js +97 -88
- package/query-builder/QueryExpressionMap.js.map +1 -1
- package/query-builder/QueryPartialEntity.d.ts +1 -1
- package/query-builder/QueryPartialEntity.js.map +1 -1
- package/query-builder/RelationIdLoader.d.ts +10 -12
- package/query-builder/RelationIdLoader.js +307 -184
- package/query-builder/RelationIdLoader.js.map +1 -1
- package/query-builder/RelationLoader.d.ts +6 -3
- package/query-builder/RelationLoader.js +182 -145
- package/query-builder/RelationLoader.js.map +1 -1
- package/query-builder/RelationQueryBuilder.d.ts +2 -1
- package/query-builder/RelationQueryBuilder.js +85 -114
- package/query-builder/RelationQueryBuilder.js.map +1 -1
- package/query-builder/RelationRemover.js +120 -83
- package/query-builder/RelationRemover.js.map +1 -1
- package/query-builder/RelationUpdater.js +129 -127
- package/query-builder/RelationUpdater.js.map +1 -1
- package/query-builder/ReturningResultsEntityUpdator.d.ts +4 -4
- package/query-builder/ReturningResultsEntityUpdator.js +136 -154
- package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/query-builder/SelectQuery.js.map +1 -1
- package/query-builder/SelectQueryBuilder.d.ts +64 -50
- package/query-builder/SelectQueryBuilder.js +1661 -1308
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/SelectQueryBuilderOption.js.map +1 -1
- package/query-builder/SoftDeleteQueryBuilder.d.ts +138 -0
- package/query-builder/SoftDeleteQueryBuilder.js +367 -0
- package/query-builder/SoftDeleteQueryBuilder.js.map +1 -0
- package/query-builder/UpdateQueryBuilder.d.ts +11 -8
- package/query-builder/UpdateQueryBuilder.js +283 -304
- package/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/query-builder/WhereClause.d.ts +16 -0
- package/query-builder/WhereClause.js +4 -0
- package/query-builder/WhereClause.js.map +1 -0
- package/query-builder/{WhereExpression.d.ts → WhereExpressionBuilder.d.ts} +51 -3
- package/query-builder/WhereExpressionBuilder.js +4 -0
- package/query-builder/WhereExpressionBuilder.js.map +1 -0
- package/query-builder/relation-count/RelationCountAttribute.d.ts +7 -7
- package/query-builder/relation-count/RelationCountAttribute.js +69 -97
- package/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
- package/query-builder/relation-count/RelationCountLoadResult.js.map +1 -1
- package/query-builder/relation-count/RelationCountLoader.d.ts +3 -3
- package/query-builder/relation-count/RelationCountLoader.js +151 -100
- package/query-builder/relation-count/RelationCountLoader.js.map +1 -1
- package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +17 -18
- package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
- package/query-builder/relation-id/RelationIdAttribute.d.ts +8 -8
- package/query-builder/relation-id/RelationIdAttribute.js +70 -102
- package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
- package/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
- package/query-builder/relation-id/RelationIdLoader.d.ts +3 -3
- package/query-builder/relation-id/RelationIdLoader.js +257 -148
- package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +17 -18
- package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
- package/query-builder/result/DeleteResult.d.ts +3 -1
- package/query-builder/result/DeleteResult.js +8 -4
- package/query-builder/result/DeleteResult.js.map +1 -1
- package/query-builder/result/InsertResult.d.ts +2 -0
- package/query-builder/result/InsertResult.js +9 -4
- package/query-builder/result/InsertResult.js.map +1 -1
- package/query-builder/result/UpdateResult.d.ts +2 -0
- package/query-builder/result/UpdateResult.js +10 -4
- package/query-builder/result/UpdateResult.js.map +1 -1
- package/query-builder/transformer/DocumentToEntityTransformer.d.ts +1 -2
- package/query-builder/transformer/DocumentToEntityTransformer.js +49 -34
- package/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
- package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +75 -100
- package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
- package/query-builder/transformer/PlainObjectToNewEntityTransformer.js +26 -26
- package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +13 -0
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +231 -160
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/query-runner/BaseQueryRunner.d.ts +49 -12
- package/query-runner/BaseQueryRunner.js +243 -248
- package/query-runner/BaseQueryRunner.js.map +1 -1
- package/query-runner/QueryLock.d.ts +4 -0
- package/query-runner/QueryLock.js +28 -0
- package/query-runner/QueryLock.js.map +1 -0
- package/query-runner/QueryResult.d.ts +17 -0
- package/query-runner/QueryResult.js +17 -0
- package/query-runner/QueryResult.js.map +1 -0
- package/query-runner/QueryRunner.d.ts +36 -8
- package/query-runner/QueryRunner.js.map +1 -1
- package/repository/AbstractRepository.d.ts +5 -5
- package/repository/AbstractRepository.js +50 -55
- package/repository/AbstractRepository.js.map +1 -1
- package/repository/BaseEntity.d.ts +69 -81
- package/repository/BaseEntity.js +171 -131
- package/repository/BaseEntity.js.map +1 -1
- package/repository/EntityId.js.map +1 -1
- package/repository/FindTreesOptions.d.ts +9 -0
- package/repository/FindTreesOptions.js +4 -0
- package/repository/FindTreesOptions.js.map +1 -0
- package/repository/MongoRepository.d.ts +55 -9
- package/repository/MongoRepository.js +332 -0
- package/repository/MongoRepository.js.map +1 -1
- package/repository/RemoveOptions.js.map +1 -1
- package/repository/Repository.d.ts +130 -97
- package/repository/Repository.js +290 -0
- package/repository/Repository.js.map +1 -1
- package/repository/SaveOptions.d.ts +1 -1
- package/repository/SaveOptions.js.map +1 -1
- package/repository/TreeRepository.d.ts +14 -9
- package/repository/TreeRepository.js +265 -0
- package/repository/TreeRepository.js.map +1 -1
- package/repository/UpsertOptions.d.ts +10 -0
- package/repository/UpsertOptions.js +4 -0
- package/repository/UpsertOptions.js.map +1 -0
- package/schema-builder/MongoSchemaBuilder.d.ts +3 -3
- package/schema-builder/MongoSchemaBuilder.js +30 -42
- package/schema-builder/MongoSchemaBuilder.js.map +1 -1
- package/schema-builder/RdbmsSchemaBuilder.d.ts +14 -6
- package/schema-builder/RdbmsSchemaBuilder.js +703 -1065
- package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/schema-builder/SchemaBuilder.js.map +1 -1
- package/schema-builder/options/TableCheckOptions.js.map +1 -1
- package/schema-builder/options/TableColumnOptions.d.ts +6 -2
- package/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/schema-builder/options/TableExclusionOptions.js.map +1 -1
- package/schema-builder/options/TableForeignKeyOptions.d.ts +8 -0
- package/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
- package/schema-builder/options/TableIndexOptions.d.ts +6 -1
- package/schema-builder/options/TableIndexOptions.js.map +1 -1
- package/schema-builder/options/TableOptions.d.ts +8 -0
- package/schema-builder/options/TableOptions.js.map +1 -1
- package/schema-builder/options/TableUniqueOptions.d.ts +5 -0
- package/schema-builder/options/TableUniqueOptions.js.map +1 -1
- package/schema-builder/options/ViewOptions.d.ts +10 -2
- package/schema-builder/options/ViewOptions.js.map +1 -1
- package/schema-builder/table/Table.d.ts +13 -3
- package/schema-builder/table/Table.js +117 -103
- package/schema-builder/table/Table.js.map +1 -1
- package/schema-builder/table/TableCheck.d.ts +1 -0
- package/schema-builder/table/TableCheck.js +11 -11
- package/schema-builder/table/TableCheck.js.map +1 -1
- package/schema-builder/table/TableColumn.d.ts +7 -2
- package/schema-builder/table/TableColumn.js +11 -8
- package/schema-builder/table/TableColumn.js.map +1 -1
- package/schema-builder/table/TableExclusion.d.ts +1 -0
- package/schema-builder/table/TableExclusion.js +10 -9
- package/schema-builder/table/TableExclusion.js.map +1 -1
- package/schema-builder/table/TableForeignKey.d.ts +11 -1
- package/schema-builder/table/TableForeignKey.js +17 -11
- package/schema-builder/table/TableForeignKey.js.map +1 -1
- package/schema-builder/table/TableIndex.d.ts +6 -0
- package/schema-builder/table/TableIndex.js +16 -13
- package/schema-builder/table/TableIndex.js.map +1 -1
- package/schema-builder/table/TableUnique.d.ts +6 -0
- package/schema-builder/table/TableUnique.js +14 -11
- package/schema-builder/table/TableUnique.js.map +1 -1
- package/schema-builder/util/TableUtils.js +11 -10
- package/schema-builder/util/TableUtils.js.map +1 -1
- package/schema-builder/util/ViewUtils.d.ts +7 -0
- package/schema-builder/util/ViewUtils.js +27 -0
- package/schema-builder/util/ViewUtils.js.map +1 -0
- package/schema-builder/view/View.d.ts +12 -5
- package/schema-builder/view/View.js +17 -10
- package/schema-builder/view/View.js.map +1 -1
- package/subscriber/Broadcaster.d.ts +87 -2
- package/subscriber/Broadcaster.js +413 -118
- package/subscriber/Broadcaster.js.map +1 -1
- package/subscriber/BroadcasterResult.d.ts +4 -0
- package/subscriber/BroadcasterResult.js +13 -4
- package/subscriber/BroadcasterResult.js.map +1 -1
- package/subscriber/EntitySubscriberInterface.d.ts +45 -0
- package/subscriber/EntitySubscriberInterface.js.map +1 -1
- package/subscriber/event/InsertEvent.d.ts +7 -7
- package/subscriber/event/InsertEvent.js.map +1 -1
- package/subscriber/event/LoadEvent.d.ts +2 -2
- package/subscriber/event/LoadEvent.js.map +1 -1
- package/subscriber/event/RecoverEvent.d.ts +6 -0
- package/subscriber/event/RecoverEvent.js +4 -0
- package/subscriber/event/RecoverEvent.js.map +1 -0
- package/subscriber/event/RemoveEvent.d.ts +7 -7
- package/subscriber/event/RemoveEvent.js.map +1 -1
- package/subscriber/event/SoftRemoveEvent.d.ts +6 -0
- package/subscriber/event/SoftRemoveEvent.js +4 -0
- package/subscriber/event/SoftRemoveEvent.js.map +1 -0
- package/subscriber/event/TransactionCommitEvent.d.ts +22 -0
- package/subscriber/event/TransactionCommitEvent.js +4 -0
- package/subscriber/event/TransactionCommitEvent.js.map +1 -0
- package/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
- package/subscriber/event/TransactionRollbackEvent.js +4 -0
- package/subscriber/event/TransactionRollbackEvent.js.map +1 -0
- package/subscriber/event/TransactionStartEvent.d.ts +22 -0
- package/subscriber/event/TransactionStartEvent.js +4 -0
- package/subscriber/event/TransactionStartEvent.js.map +1 -0
- package/subscriber/event/UpdateEvent.d.ts +5 -4
- package/subscriber/event/UpdateEvent.js.map +1 -1
- package/typeorm-class-transformer-shim.js +41 -7
- package/typeorm-model-shim.js +166 -111
- package/util/ApplyValueTransformers.js +14 -28
- package/util/ApplyValueTransformers.js.map +1 -1
- package/util/DateUtils.d.ts +2 -2
- package/util/DateUtils.js +111 -82
- package/util/DateUtils.js.map +1 -1
- package/util/DepGraph.js +51 -49
- package/util/DepGraph.js.map +1 -1
- package/util/DirectoryExportedClassesLoader.d.ts +1 -1
- package/util/DirectoryExportedClassesLoader.js +35 -26
- package/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/util/ImportUtils.d.ts +1 -0
- package/util/ImportUtils.js +79 -0
- package/util/ImportUtils.js.map +1 -0
- package/util/InstanceChecker.d.ts +61 -0
- package/util/InstanceChecker.js +107 -0
- package/util/InstanceChecker.js.map +1 -0
- package/util/ObjectUtils.d.ts +17 -6
- package/util/ObjectUtils.js +27 -35
- package/util/ObjectUtils.js.map +1 -1
- package/util/OrmUtils.d.ts +16 -8
- package/util/OrmUtils.js +199 -97
- package/util/OrmUtils.js.map +1 -1
- package/util/PathUtils.d.ts +10 -0
- package/util/PathUtils.js +34 -0
- package/util/PathUtils.js.map +1 -0
- package/util/RandomGenerator.d.ts +0 -4
- package/util/RandomGenerator.js +62 -51
- package/util/RandomGenerator.js.map +1 -1
- package/util/StringUtils.d.ts +13 -3
- package/util/StringUtils.js +45 -19
- package/util/StringUtils.js.map +1 -1
- package/util/TreeRepositoryUtils.d.ts +23 -0
- package/util/TreeRepositoryUtils.js +60 -0
- package/util/TreeRepositoryUtils.js.map +1 -0
- package/util/VersionUtils.js +12 -15
- package/util/VersionUtils.js.map +1 -1
- package/browser/decorator/transaction/Transaction.d.ts +0 -16
- package/browser/decorator/transaction/Transaction.js +0 -85
- package/browser/decorator/transaction/Transaction.js.map +0 -1
- package/browser/decorator/transaction/TransactionManager.d.ts +0 -4
- package/browser/decorator/transaction/TransactionManager.js +0 -15
- package/browser/decorator/transaction/TransactionManager.js.map +0 -1
- package/browser/decorator/transaction/TransactionRepository.d.ts +0 -6
- package/browser/decorator/transaction/TransactionRepository.js +0 -28
- package/browser/decorator/transaction/TransactionRepository.js.map +0 -1
- package/browser/driver/aurora-data-api/AuroraDataApiConnection.d.ts +0 -11
- package/browser/driver/aurora-data-api/AuroraDataApiConnection.js +0 -21
- package/browser/driver/aurora-data-api/AuroraDataApiConnection.js.map +0 -1
- package/browser/driver/aurora-data-api/AuroraDataApiConnectionCredentialsOptions.js +0 -3
- package/browser/driver/aurora-data-api/AuroraDataApiConnectionCredentialsOptions.js.map +0 -1
- package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.d.ts +0 -22
- package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.js +0 -3
- package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.js.map +0 -1
- package/browser/driver/aurora-data-api/AuroraDataApiDriver.js.map +0 -1
- package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +0 -2015
- package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +0 -1
- package/browser/entity-factory/DefaultEntityFactory.d.ts +0 -7
- package/browser/entity-factory/DefaultEntityFactory.js +0 -16
- package/browser/entity-factory/DefaultEntityFactory.js.map +0 -1
- package/browser/entity-factory/EntityFactoryInterface.d.ts +0 -11
- package/browser/entity-factory/EntityFactoryInterface.js +0 -3
- package/browser/entity-factory/EntityFactoryInterface.js.map +0 -1
- package/browser/entity-factory/OldEntityFactory.d.ts +0 -7
- package/browser/entity-factory/OldEntityFactory.js +0 -14
- package/browser/entity-factory/OldEntityFactory.js.map +0 -1
- package/browser/error/EntityColumnNotFound.d.ts +0 -7
- package/browser/error/EntityColumnNotFound.js +0 -18
- package/browser/error/EntityColumnNotFound.js.map +0 -1
- package/browser/error/FindCriteriaNotFoundError.d.ts +0 -7
- package/browser/error/FindCriteriaNotFoundError.js +0 -17
- package/browser/error/FindCriteriaNotFoundError.js.map +0 -1
- package/browser/find-options/FindOptions.d.ts +0 -171
- package/browser/find-options/FindOptions.js +0 -3
- package/browser/find-options/FindOptions.js.map +0 -1
- package/browser/find-options/operator/If.d.ts +0 -8
- package/browser/find-options/operator/If.js +0 -21
- package/browser/find-options/operator/If.js.map +0 -1
- package/browser/find-options/operator/Switch.d.ts +0 -16
- package/browser/find-options/operator/Switch.js +0 -17
- package/browser/find-options/operator/Switch.js.map +0 -1
- package/browser/observer/ObserverExecutor.d.ts +0 -18
- package/browser/observer/ObserverExecutor.js +0 -404
- package/browser/observer/ObserverExecutor.js.map +0 -1
- package/browser/observer/QueryObserver.d.ts +0 -28
- package/browser/observer/QueryObserver.js +0 -120
- package/browser/observer/QueryObserver.js.map +0 -1
- package/browser/query-builder/WhereExpression.js +0 -3
- package/browser/query-builder/WhereExpression.js.map +0 -1
- package/browser/repository/LiteralMongoRepository.d.ts +0 -11
- package/browser/repository/LiteralMongoRepository.js +0 -138
- package/browser/repository/LiteralMongoRepository.js.map +0 -1
- package/browser/repository/LiteralRepository.d.ts +0 -11
- package/browser/repository/LiteralRepository.js +0 -211
- package/browser/repository/LiteralRepository.js.map +0 -1
- package/browser/repository/LiteralTreeRepository.d.ts +0 -9
- package/browser/repository/LiteralTreeRepository.js +0 -224
- package/browser/repository/LiteralTreeRepository.js.map +0 -1
- package/browser/repository/RepositoryFactory.d.ts +0 -13
- package/browser/repository/RepositoryFactory.js +0 -50
- package/browser/repository/RepositoryFactory.js.map +0 -1
- package/browser/util/PromiseUtils.d.ts +0 -24
- package/browser/util/PromiseUtils.js +0 -62
- package/browser/util/PromiseUtils.js.map +0 -1
- package/decorator/transaction/Transaction.d.ts +0 -16
- package/decorator/transaction/Transaction.js +0 -88
- package/decorator/transaction/Transaction.js.map +0 -1
- package/decorator/transaction/TransactionManager.d.ts +0 -4
- package/decorator/transaction/TransactionManager.js +0 -18
- package/decorator/transaction/TransactionManager.js.map +0 -1
- package/decorator/transaction/TransactionRepository.d.ts +0 -6
- package/decorator/transaction/TransactionRepository.js +0 -31
- package/decorator/transaction/TransactionRepository.js.map +0 -1
- package/driver/aurora-data-api/AuroraDataApiConnection.d.ts +0 -11
- package/driver/aurora-data-api/AuroraDataApiConnection.js +0 -23
- package/driver/aurora-data-api/AuroraDataApiConnection.js.map +0 -1
- package/driver/aurora-data-api/AuroraDataApiConnectionCredentialsOptions.js.map +0 -1
- package/driver/aurora-data-api/AuroraDataApiConnectionOptions.d.ts +0 -22
- package/driver/aurora-data-api/AuroraDataApiConnectionOptions.js.map +0 -1
- package/driver/aurora-data-api/AuroraDataApiDriver.js.map +0 -1
- package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +0 -2017
- package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +0 -1
- package/entity-factory/DefaultEntityFactory.d.ts +0 -7
- package/entity-factory/DefaultEntityFactory.js +0 -18
- package/entity-factory/DefaultEntityFactory.js.map +0 -1
- package/entity-factory/EntityFactoryInterface.d.ts +0 -11
- package/entity-factory/EntityFactoryInterface.js.map +0 -1
- package/entity-factory/OldEntityFactory.d.ts +0 -7
- package/entity-factory/OldEntityFactory.js +0 -16
- package/entity-factory/OldEntityFactory.js.map +0 -1
- package/error/EntityColumnNotFound.d.ts +0 -7
- package/error/EntityColumnNotFound.js +0 -20
- package/error/EntityColumnNotFound.js.map +0 -1
- package/error/FindCriteriaNotFoundError.d.ts +0 -7
- package/error/FindCriteriaNotFoundError.js +0 -19
- package/error/FindCriteriaNotFoundError.js.map +0 -1
- package/find-options/FindOptions.d.ts +0 -171
- package/find-options/FindOptions.js.map +0 -1
- package/find-options/operator/If.d.ts +0 -8
- package/find-options/operator/If.js +0 -24
- package/find-options/operator/If.js.map +0 -1
- package/find-options/operator/Switch.d.ts +0 -16
- package/find-options/operator/Switch.js +0 -20
- package/find-options/operator/Switch.js.map +0 -1
- package/observer/ObserverExecutor.d.ts +0 -18
- package/observer/ObserverExecutor.js +0 -406
- package/observer/ObserverExecutor.js.map +0 -1
- package/observer/QueryObserver.d.ts +0 -28
- package/observer/QueryObserver.js +0 -122
- package/observer/QueryObserver.js.map +0 -1
- package/query-builder/WhereExpression.js.map +0 -1
- package/repository/LiteralMongoRepository.d.ts +0 -11
- package/repository/LiteralMongoRepository.js +0 -141
- package/repository/LiteralMongoRepository.js.map +0 -1
- package/repository/LiteralRepository.d.ts +0 -11
- package/repository/LiteralRepository.js +0 -214
- package/repository/LiteralRepository.js.map +0 -1
- package/repository/LiteralTreeRepository.d.ts +0 -9
- package/repository/LiteralTreeRepository.js +0 -227
- package/repository/LiteralTreeRepository.js.map +0 -1
- package/repository/RepositoryFactory.d.ts +0 -13
- package/repository/RepositoryFactory.js +0 -52
- package/repository/RepositoryFactory.js.map +0 -1
- package/util/PromiseUtils.d.ts +0 -24
- package/util/PromiseUtils.js +0 -64
- package/util/PromiseUtils.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/driver/sqlserver/SqlServerQueryRunner.ts"],"names":[],"mappings":"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","file":"SqlServerQueryRunner.js","sourcesContent":["import {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {QueryFailedError} from \"../../error/QueryFailedError\";\nimport {QueryRunnerAlreadyReleasedError} from \"../../error/QueryRunnerAlreadyReleasedError\";\nimport {TransactionAlreadyStartedError} from \"../../error/TransactionAlreadyStartedError\";\nimport {TransactionNotStartedError} from \"../../error/TransactionNotStartedError\";\nimport {ColumnType, PromiseUtils} from \"../../index\";\nimport {ReadStream} from \"../../platform/PlatformTools\";\nimport {BaseQueryRunner} from \"../../query-runner/BaseQueryRunner\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\nimport {TableIndexOptions} from \"../../schema-builder/options/TableIndexOptions\";\nimport {Table} from \"../../schema-builder/table/Table\";\nimport {TableCheck} from \"../../schema-builder/table/TableCheck\";\nimport {TableColumn} from \"../../schema-builder/table/TableColumn\";\nimport {TableExclusion} from \"../../schema-builder/table/TableExclusion\";\nimport {TableForeignKey} from \"../../schema-builder/table/TableForeignKey\";\nimport {TableIndex} from \"../../schema-builder/table/TableIndex\";\nimport {TableUnique} from \"../../schema-builder/table/TableUnique\";\nimport {View} from \"../../schema-builder/view/View\";\nimport {Broadcaster} from \"../../subscriber/Broadcaster\";\nimport {OrmUtils} from \"../../util/OrmUtils\";\nimport {Query} from \"../Query\";\nimport {IsolationLevel} from \"../types/IsolationLevel\";\nimport {MssqlParameter} from \"./MssqlParameter\";\nimport {SqlServerDriver} from \"./SqlServerDriver\";\n\n/**\n * Runs queries on a single SQL Server database connection.\n */\nexport class SqlServerQueryRunner extends BaseQueryRunner implements QueryRunner {\n\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Database driver used by connection.\n */\n driver: SqlServerDriver;\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Last executed query in a transaction.\n * This is needed because in transaction mode mssql cannot execute parallel queries,\n * that's why we store last executed query promise to wait it when we execute next query.\n *\n * @see https://github.com/patriksimek/node-mssql/issues/491\n */\n protected queryResponsibilityChain: Promise<any>[] = [];\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: SqlServerDriver, mode: \"master\"|\"slave\" = \"master\") {\n super();\n this.driver = driver;\n this.connection = driver.connection;\n this.broadcaster = new Broadcaster(this);\n this.mode = mode;\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n connect(): Promise<void> {\n return Promise.resolve();\n }\n\n /**\n * Releases used database connection.\n * You cannot use query runner methods once its released.\n */\n release(): Promise<void> {\n this.isReleased = true;\n return Promise.resolve();\n }\n\n /**\n * Starts transaction.\n */\n async startTransaction(isolationLevel?: IsolationLevel): Promise<void> {\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n\n if (this.isTransactionActive)\n throw new TransactionAlreadyStartedError();\n\n return new Promise<void>(async (ok, fail) => {\n this.isTransactionActive = true;\n\n const pool = await (this.mode === \"slave\" ? this.driver.obtainSlaveConnection() : this.driver.obtainMasterConnection());\n this.databaseConnection = pool.transaction();\n\n const transactionCallback = (err: any) => {\n if (err) {\n this.isTransactionActive = false;\n return fail(err);\n }\n ok();\n this.connection.logger.logQuery(\"BEGIN TRANSACTION\");\n if (isolationLevel) {\n this.connection.logger.logQuery(\"SET TRANSACTION ISOLATION LEVEL \" + isolationLevel);\n }\n };\n\n if (isolationLevel) {\n this.databaseConnection.begin(this.convertIsolationLevel(isolationLevel), transactionCallback);\n } else {\n this.databaseConnection.begin(transactionCallback);\n }\n });\n }\n\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n async commitTransaction(): Promise<void> {\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n\n if (!this.isTransactionActive)\n throw new TransactionNotStartedError();\n\n return new Promise<void>((ok, fail) => {\n this.databaseConnection.commit((err: any) => {\n if (err) return fail(err);\n this.isTransactionActive = false;\n this.databaseConnection = null;\n ok();\n this.connection.logger.logQuery(\"COMMIT\");\n });\n });\n }\n\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n async rollbackTransaction(): Promise<void> {\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n\n if (!this.isTransactionActive)\n throw new TransactionNotStartedError();\n\n return new Promise<void>((ok, fail) => {\n this.databaseConnection.rollback((err: any) => {\n if (err) return fail(err);\n this.isTransactionActive = false;\n this.databaseConnection = null;\n ok();\n this.connection.logger.logQuery(\"ROLLBACK\");\n });\n });\n }\n\n /**\n * Executes a given SQL query.\n */\n async query(query: string, parameters?: any[]): Promise<any> {\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n\n let waitingOkay: Function;\n const waitingPromise = new Promise((ok) => waitingOkay = ok);\n if (this.queryResponsibilityChain.length) {\n const otherWaitingPromises = [...this.queryResponsibilityChain];\n this.queryResponsibilityChain.push(waitingPromise);\n await Promise.all(otherWaitingPromises);\n }\n\n const promise = new Promise(async (ok, fail) => {\n try {\n this.driver.connection.logger.logQuery(query, parameters, this);\n const pool = await (this.mode === \"slave\" ? this.driver.obtainSlaveConnection() : this.driver.obtainMasterConnection());\n const request = new this.driver.mssql.Request(this.isTransactionActive ? this.databaseConnection : pool);\n if (parameters && parameters.length) {\n parameters.forEach((parameter, index) => {\n if (parameter instanceof MssqlParameter) {\n const mssqlParameter = this.mssqlParameterToNativeParameter(parameter);\n if (mssqlParameter) {\n request.input(index, mssqlParameter, parameter.value);\n } else {\n request.input(index, parameter.value);\n }\n } else {\n request.input(index, parameter);\n }\n });\n }\n const queryStartTime = +new Date();\n request.query(query, (err: any, result: any) => {\n\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime = this.driver.connection.options.maxQueryExecutionTime;\n const queryEndTime = +new Date();\n const queryExecutionTime = queryEndTime - queryStartTime;\n if (maxQueryExecutionTime && queryExecutionTime > maxQueryExecutionTime)\n this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);\n\n const resolveChain = () => {\n if (promiseIndex !== -1)\n this.queryResponsibilityChain.splice(promiseIndex, 1);\n if (waitingPromiseIndex !== -1)\n this.queryResponsibilityChain.splice(waitingPromiseIndex, 1);\n waitingOkay();\n };\n\n let promiseIndex = this.queryResponsibilityChain.indexOf(promise);\n let waitingPromiseIndex = this.queryResponsibilityChain.indexOf(waitingPromise);\n if (err) {\n this.driver.connection.logger.logQueryError(err, query, parameters, this);\n resolveChain();\n return fail(new QueryFailedError(query, parameters, err));\n }\n\n const queryType = query.slice(0, query.indexOf(\" \"));\n switch (queryType) {\n case \"DELETE\":\n // for DELETE query additionally return number of affected rows\n ok([result.recordset, result.rowsAffected[0]]);\n break;\n default:\n ok(result.recordset);\n }\n resolveChain();\n });\n\n } catch (err) {\n fail(err);\n }\n });\n // with this condition, Promise.all causes unexpected behavior.\n // if (this.isTransactionActive)\n this.queryResponsibilityChain.push(promise);\n return promise;\n }\n\n /**\n * Returns raw data stream.\n */\n async stream(query: string, parameters?: any[], onEnd?: Function, onError?: Function): Promise<ReadStream> {\n if (this.isReleased)\n throw new QueryRunnerAlreadyReleasedError();\n\n let waitingOkay: Function;\n const waitingPromise = new Promise((ok) => waitingOkay = ok);\n if (this.queryResponsibilityChain.length) {\n const otherWaitingPromises = [...this.queryResponsibilityChain];\n this.queryResponsibilityChain.push(waitingPromise);\n await Promise.all(otherWaitingPromises);\n }\n\n const promise = new Promise<ReadStream>(async (ok, fail) => {\n\n this.driver.connection.logger.logQuery(query, parameters, this);\n const pool = await (this.mode === \"slave\" ? this.driver.obtainSlaveConnection() : this.driver.obtainMasterConnection());\n const request = new this.driver.mssql.Request(this.isTransactionActive ? this.databaseConnection : pool);\n request.stream = true;\n if (parameters && parameters.length) {\n parameters.forEach((parameter, index) => {\n if (parameter instanceof MssqlParameter) {\n request.input(index, this.mssqlParameterToNativeParameter(parameter), parameter.value);\n } else {\n request.input(index, parameter);\n }\n });\n }\n request.query(query, (err: any, result: any) => {\n\n const resolveChain = () => {\n if (promiseIndex !== -1)\n this.queryResponsibilityChain.splice(promiseIndex, 1);\n if (waitingPromiseIndex !== -1)\n this.queryResponsibilityChain.splice(waitingPromiseIndex, 1);\n waitingOkay();\n };\n\n let promiseIndex = this.queryResponsibilityChain.indexOf(promise);\n let waitingPromiseIndex = this.queryResponsibilityChain.indexOf(waitingPromise);\n if (err) {\n this.driver.connection.logger.logQueryError(err, query, parameters, this);\n resolveChain();\n return fail(err);\n }\n\n ok(result.recordset);\n resolveChain();\n });\n if (onEnd) request.on(\"done\", onEnd);\n if (onError) request.on(\"error\", onError);\n ok(request as ReadStream);\n });\n if (this.isTransactionActive)\n this.queryResponsibilityChain.push(promise);\n\n return promise;\n }\n\n /**\n * Returns all available database names including system databases.\n */\n async getDatabases(): Promise<string[]> {\n const results: ObjectLiteral[] = await this.query(`EXEC sp_databases`);\n return results.map(result => result[\"DATABASE_NAME\"]);\n }\n\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n */\n async getSchemas(database?: string): Promise<string[]> {\n const query = database ? `SELECT * FROM \"${database}\".\"sys\".\"schema\"` : `SELECT * FROM \"sys\".\"schemas\"`;\n const results: ObjectLiteral[] = await this.query(query);\n return results.map(result => result[\"name\"]);\n }\n\n /**\n * Checks if database with the given name exist.\n */\n async hasDatabase(database: string): Promise<boolean> {\n const result = await this.query(`SELECT DB_ID('${database}') as \"db_id\"`);\n const dbId = result[0][\"db_id\"];\n return !!dbId;\n }\n\n /**\n * Checks if schema with the given name exist.\n */\n async hasSchema(schema: string): Promise<boolean> {\n const result = await this.query(`SELECT SCHEMA_ID('${schema}') as \"schema_id\"`);\n const schemaId = result[0][\"schema_id\"];\n return !!schemaId;\n }\n\n /**\n * Checks if table with the given name exist in the database.\n */\n async hasTable(tableOrName: Table|string): Promise<boolean> {\n const parsedTableName = this.parseTableName(tableOrName);\n const schema = parsedTableName.schema === \"SCHEMA_NAME()\" ? parsedTableName.schema : `'${parsedTableName.schema}'`;\n const sql = `SELECT * FROM \"${parsedTableName.database}\".\"INFORMATION_SCHEMA\".\"TABLES\" WHERE \"TABLE_NAME\" = '${parsedTableName.name}' AND \"TABLE_SCHEMA\" = ${schema}`;\n const result = await this.query(sql);\n return result.length ? true : false;\n }\n\n /**\n * Checks if column exist in the table.\n */\n async hasColumn(tableOrName: Table|string, columnName: string): Promise<boolean> {\n const parsedTableName = this.parseTableName(tableOrName);\n const schema = parsedTableName.schema === \"SCHEMA_NAME()\" ? parsedTableName.schema : `'${parsedTableName.schema}'`;\n const sql = `SELECT * FROM \"${parsedTableName.database}\".\"INFORMATION_SCHEMA\".\"TABLES\" WHERE \"TABLE_NAME\" = '${parsedTableName.name}' AND \"COLUMN_NAME\" = '${columnName}' AND \"TABLE_SCHEMA\" = ${schema}`;\n const result = await this.query(sql);\n return result.length ? true : false;\n }\n\n /**\n * Creates a new database.\n */\n async createDatabase(database: string, ifNotExist?: boolean): Promise<void> {\n const up = ifNotExist ? `IF DB_ID('${database}') IS NULL CREATE DATABASE \"${database}\"` : `CREATE DATABASE \"${database}\"`;\n const down = `DROP DATABASE \"${database}\"`;\n await this.executeQueries(new Query(up), new Query(down));\n }\n\n /**\n * Drops database.\n */\n async dropDatabase(database: string, ifExist?: boolean): Promise<void> {\n const up = ifExist ? `IF DB_ID('${database}') IS NOT NULL DROP DATABASE \"${database}\"` : `DROP DATABASE \"${database}\"`;\n const down = `CREATE DATABASE \"${database}\"`;\n await this.executeQueries(new Query(up), new Query(down));\n }\n\n /**\n * Creates table schema.\n * If database name also specified (e.g. 'dbName.schemaName') schema will be created in specified database.\n */\n async createSchema(schemaPath: string, ifNotExist?: boolean): Promise<void> {\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n if (schemaPath.indexOf(\".\") === -1) {\n const upQuery = ifNotExist ? `IF SCHEMA_ID('${schemaPath}') IS NULL BEGIN EXEC ('CREATE SCHEMA \"${schemaPath}\"') END` : `CREATE SCHEMA \"${schemaPath}\"`;\n upQueries.push(new Query(upQuery));\n downQueries.push(new Query(`DROP SCHEMA \"${schemaPath}\"`));\n\n } else {\n const dbName = schemaPath.split(\".\")[0];\n const schema = schemaPath.split(\".\")[1];\n const currentDB = await this.getCurrentDatabase();\n upQueries.push(new Query(`USE \"${dbName}\"`));\n downQueries.push(new Query(`USE \"${currentDB}\"`));\n\n const upQuery = ifNotExist ? `IF SCHEMA_ID('${schema}') IS NULL BEGIN EXEC ('CREATE SCHEMA \"${schema}\"') END` : `CREATE SCHEMA \"${schema}\"`;\n upQueries.push(new Query(upQuery));\n downQueries.push(new Query(`DROP SCHEMA \"${schema}\"`));\n\n upQueries.push(new Query(`USE \"${currentDB}\"`));\n downQueries.push(new Query(`USE \"${dbName}\"`));\n }\n\n await this.executeQueries(upQueries, downQueries);\n }\n\n /**\n * Drops table schema.\n * If database name also specified (e.g. 'dbName.schemaName') schema will be dropped in specified database.\n */\n async dropSchema(schemaPath: string, ifExist?: boolean): Promise<void> {\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n if (schemaPath.indexOf(\".\") === -1) {\n const upQuery = ifExist ? `IF SCHEMA_ID('${schemaPath}') IS NULL BEGIN EXEC ('DROP SCHEMA \"${schemaPath}\"') END` : `DROP SCHEMA \"${schemaPath}\"`;\n upQueries.push(new Query(upQuery));\n downQueries.push(new Query(`CREATE SCHEMA \"${schemaPath}\"`));\n\n } else {\n const dbName = schemaPath.split(\".\")[0];\n const schema = schemaPath.split(\".\")[1];\n const currentDB = await this.getCurrentDatabase();\n upQueries.push(new Query(`USE \"${dbName}\"`));\n downQueries.push(new Query(`USE \"${currentDB}\"`));\n\n const upQuery = ifExist ? `IF SCHEMA_ID('${schema}') IS NULL BEGIN EXEC ('DROP SCHEMA \"${schema}\"') END` : `DROP SCHEMA \"${schema}\"`;\n upQueries.push(new Query(upQuery));\n downQueries.push(new Query(`CREATE SCHEMA \"${schema}\"`));\n\n upQueries.push(new Query(`USE \"${currentDB}\"`));\n downQueries.push(new Query(`USE \"${dbName}\"`));\n }\n\n await this.executeQueries(upQueries, downQueries);\n }\n\n /**\n * Creates a new table.\n */\n async createTable(table: Table, ifNotExist: boolean = false, createForeignKeys: boolean = true, createIndices: boolean = true): Promise<void> {\n if (ifNotExist) {\n const isTableExist = await this.hasTable(table);\n if (isTableExist) return Promise.resolve();\n }\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n upQueries.push(this.createTableSql(table, createForeignKeys));\n downQueries.push(this.dropTableSql(table));\n\n // if createForeignKeys is true, we must drop created foreign keys in down query.\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\n if (createForeignKeys)\n table.foreignKeys.forEach(foreignKey => downQueries.push(this.dropForeignKeySql(table, foreignKey)));\n\n if (createIndices) {\n table.indices.forEach(index => {\n\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where);\n upQueries.push(this.createIndexSql(table, index));\n downQueries.push(this.dropIndexSql(table, index));\n });\n }\n\n await this.executeQueries(upQueries, downQueries);\n }\n\n /**\n * Drops the table.\n */\n async dropTable(tableOrName: Table|string, ifExist?: boolean, dropForeignKeys: boolean = true, dropIndices: boolean = true): Promise<void> {\n if (ifExist) {\n const isTableExist = await this.hasTable(tableOrName);\n if (!isTableExist) return Promise.resolve();\n }\n\n // if dropTable called with dropForeignKeys = true, we must create foreign keys in down query.\n const createForeignKeys: boolean = dropForeignKeys;\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n // It needs because if table does not exist and dropForeignKeys or dropIndices is true, we don't need\n // to perform drop queries for foreign keys and indices.\n\n if (dropIndices) {\n table.indices.forEach(index => {\n upQueries.push(this.dropIndexSql(table, index));\n downQueries.push(this.createIndexSql(table, index));\n });\n }\n\n // if dropForeignKeys is true, we just drop the table, otherwise we also drop table foreign keys.\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\n if (dropForeignKeys)\n table.foreignKeys.forEach(foreignKey => upQueries.push(this.dropForeignKeySql(table, foreignKey)));\n\n upQueries.push(this.dropTableSql(table));\n downQueries.push(this.createTableSql(table, createForeignKeys));\n\n await this.executeQueries(upQueries, downQueries);\n }\n\n /**\n * Creates a new view.\n */\n async createView(view: View): Promise<void> {\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n upQueries.push(this.createViewSql(view));\n upQueries.push(await this.insertViewDefinitionSql(view));\n downQueries.push(this.dropViewSql(view));\n downQueries.push(await this.deleteViewDefinitionSql(view));\n await this.executeQueries(upQueries, downQueries);\n }\n\n /**\n * Drops the view.\n */\n async dropView(target: View|string): Promise<void> {\n const viewName = target instanceof View ? target.name : target;\n const view = await this.getCachedView(viewName);\n\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n upQueries.push(await this.deleteViewDefinitionSql(view));\n upQueries.push(this.dropViewSql(view));\n downQueries.push(await this.insertViewDefinitionSql(view));\n downQueries.push(this.createViewSql(view));\n await this.executeQueries(upQueries, downQueries);\n }\n\n /**\n * Renames a table.\n */\n async renameTable(oldTableOrName: Table|string, newTableName: string): Promise<void> {\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n const oldTable = oldTableOrName instanceof Table ? oldTableOrName : await this.getCachedTable(oldTableOrName);\n let newTable = oldTable.clone();\n\n // we need database name and schema name to rename FK constraints\n let dbName: string|undefined = undefined;\n let schemaName: string|undefined = undefined;\n let oldTableName: string = oldTable.name;\n const splittedName = oldTable.name.split(\".\");\n if (splittedName.length === 3) {\n dbName = splittedName[0];\n oldTableName = splittedName[2];\n if (splittedName[1] !== \"\")\n schemaName = splittedName[1];\n\n } else if (splittedName.length === 2) {\n schemaName = splittedName[0];\n oldTableName = splittedName[1];\n }\n\n newTable.name = this.driver.buildTableName(newTableName, schemaName, dbName);\n\n // if we have tables with database which differs from database specified in config, we must change currently used database.\n // This need because we can not rename objects from another database.\n const currentDB = await this.getCurrentDatabase();\n if (dbName && dbName !== currentDB) {\n upQueries.push(new Query(`USE \"${dbName}\"`));\n downQueries.push(new Query(`USE \"${currentDB}\"`));\n }\n\n // rename table\n upQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(oldTable, true)}\", \"${newTableName}\"`));\n downQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(newTable, true)}\", \"${oldTableName}\"`));\n\n // rename primary key constraint\n if (newTable.primaryColumns.length > 0) {\n const columnNames = newTable.primaryColumns.map(column => column.name);\n\n const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);\n const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);\n\n // rename primary constraint\n upQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(newTable, true)}.${oldPkName}\", \"${newPkName}\"`));\n downQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(newTable, true)}.${newPkName}\", \"${oldPkName}\"`));\n }\n\n // rename unique constraints\n newTable.uniques.forEach(unique => {\n // build new constraint name\n const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);\n\n // build queries\n upQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(newTable, true)}.${unique.name}\", \"${newUniqueName}\"`));\n downQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(newTable, true)}.${newUniqueName}\", \"${unique.name}\"`));\n\n // replace constraint name\n unique.name = newUniqueName;\n });\n\n // rename index constraints\n newTable.indices.forEach(index => {\n // build new constraint name\n const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);\n\n // build queries\n upQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(newTable, true)}.${index.name}\", \"${newIndexName}\", \"INDEX\"`));\n downQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(newTable, true)}.${newIndexName}\", \"${index.name}\", \"INDEX\"`));\n\n // replace constraint name\n index.name = newIndexName;\n });\n\n // rename foreign key constraints\n newTable.foreignKeys.forEach(foreignKey => {\n // build new constraint name\n const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n\n // build queries\n upQueries.push(new Query(`EXEC sp_rename \"${this.buildForeignKeyName(foreignKey.name!, schemaName, dbName)}\", \"${newForeignKeyName}\"`));\n downQueries.push(new Query(`EXEC sp_rename \"${this.buildForeignKeyName(newForeignKeyName, schemaName, dbName)}\", \"${foreignKey.name}\"`));\n\n // replace constraint name\n foreignKey.name = newForeignKeyName;\n });\n\n // change currently used database back to default db.\n if (dbName && dbName !== currentDB) {\n upQueries.push(new Query(`USE \"${currentDB}\"`));\n downQueries.push(new Query(`USE \"${dbName}\"`));\n }\n\n await this.executeQueries(upQueries, downQueries);\n\n // rename old table and replace it in cached tabled;\n oldTable.name = newTable.name;\n this.replaceCachedTable(oldTable, newTable);\n }\n\n /**\n * Creates a new column from the column in the table.\n */\n async addColumn(tableOrName: Table|string, column: TableColumn): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const clonedTable = table.clone();\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(table, column, false, true)}`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN \"${column.name}\"`));\n\n // create or update primary key constraint\n if (column.isPrimary) {\n const primaryColumns = clonedTable.primaryColumns;\n // if table already have primary key, me must drop it and recreate again\n if (primaryColumns.length > 0) {\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n }\n\n primaryColumns.push(column);\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n }\n\n // create column index\n const columnIndex = clonedTable.indices.find(index => index.columnNames.length === 1 && index.columnNames[0] === column.name);\n if (columnIndex) {\n upQueries.push(this.createIndexSql(table, columnIndex));\n downQueries.push(this.dropIndexSql(table, columnIndex));\n }\n\n // create unique constraint\n if (column.isUnique) {\n const uniqueConstraint = new TableUnique({\n name: this.connection.namingStrategy.uniqueConstraintName(table.name, [column.name]),\n columnNames: [column.name]\n });\n clonedTable.uniques.push(uniqueConstraint);\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${uniqueConstraint.name}\" UNIQUE (\"${column.name}\")`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${uniqueConstraint.name}\"`));\n }\n\n // remove default constraint\n if (column.default !== null && column.default !== undefined) {\n const defaultName = this.connection.namingStrategy.defaultConstraintName(table.name, column.name);\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${defaultName}\"`));\n }\n\n await this.executeQueries(upQueries, downQueries);\n\n clonedTable.addColumn(column);\n this.replaceCachedTable(table, clonedTable);\n }\n\n /**\n * Creates a new columns from the column in the table.\n */\n async addColumns(tableOrName: Table|string, columns: TableColumn[]): Promise<void> {\n await PromiseUtils.runInSequence(columns, column => this.addColumn(tableOrName, column));\n }\n\n /**\n * Renames column in the given table.\n */\n async renameColumn(tableOrName: Table|string, oldTableColumnOrName: TableColumn|string, newTableColumnOrName: TableColumn|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const oldColumn = oldTableColumnOrName instanceof TableColumn ? oldTableColumnOrName : table.columns.find(c => c.name === oldTableColumnOrName);\n if (!oldColumn)\n throw new Error(`Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`);\n\n let newColumn: TableColumn|undefined = undefined;\n if (newTableColumnOrName instanceof TableColumn) {\n newColumn = newTableColumnOrName;\n } else {\n newColumn = oldColumn.clone();\n newColumn.name = newTableColumnOrName;\n }\n\n await this.changeColumn(table, oldColumn, newColumn);\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumn(tableOrName: Table|string, oldTableColumnOrName: TableColumn|string, newColumn: TableColumn): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n let clonedTable = table.clone();\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n const oldColumn = oldTableColumnOrName instanceof TableColumn\n ? oldTableColumnOrName\n : table.columns.find(column => column.name === oldTableColumnOrName);\n if (!oldColumn)\n throw new Error(`Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`);\n\n if ((newColumn.isGenerated !== oldColumn.isGenerated && newColumn.generationStrategy !== \"uuid\") || newColumn.type !== oldColumn.type || newColumn.length !== oldColumn.length) {\n // SQL Server does not support changing of IDENTITY column, so we must drop column and recreate it again.\n // Also, we recreate column if column type changed\n await this.dropColumn(table, oldColumn);\n await this.addColumn(table, newColumn);\n\n // update cloned table\n clonedTable = table.clone();\n\n } else {\n if (newColumn.name !== oldColumn.name) {\n\n // we need database name and schema name to rename FK constraints\n let dbName: string|undefined = undefined;\n let schemaName: string|undefined = undefined;\n const splittedName = table.name.split(\".\");\n if (splittedName.length === 3) {\n dbName = splittedName[0];\n if (splittedName[1] !== \"\")\n schemaName = splittedName[1];\n\n } else if (splittedName.length === 2) {\n schemaName = splittedName[0];\n }\n\n // if we have tables with database which differs from database specified in config, we must change currently used database.\n // This need because we can not rename objects from another database.\n const currentDB = await this.getCurrentDatabase();\n if (dbName && dbName !== currentDB) {\n upQueries.push(new Query(`USE \"${dbName}\"`));\n downQueries.push(new Query(`USE \"${currentDB}\"`));\n }\n\n // rename the column\n upQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(table, true)}.${oldColumn.name}\", \"${newColumn.name}\"`));\n downQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(table, true)}.${newColumn.name}\", \"${oldColumn.name}\"`));\n\n if (oldColumn.isPrimary === true) {\n const primaryColumns = clonedTable.primaryColumns;\n\n // build old primary constraint name\n const columnNames = primaryColumns.map(column => column.name);\n const oldPkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);\n\n // replace old column name with new column name\n columnNames.splice(columnNames.indexOf(oldColumn.name), 1);\n columnNames.push(newColumn.name);\n\n // build new primary constraint name\n const newPkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);\n\n // rename primary constraint\n upQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(clonedTable, true)}.${oldPkName}\", \"${newPkName}\"`));\n downQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(clonedTable, true)}.${newPkName}\", \"${oldPkName}\"`));\n }\n\n // rename index constraints\n clonedTable.findColumnIndices(oldColumn).forEach(index => {\n // build new constraint name\n index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);\n index.columnNames.push(newColumn.name);\n const newIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);\n\n // build queries\n upQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(clonedTable, true)}.${index.name}\", \"${newIndexName}\", \"INDEX\"`));\n downQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(clonedTable, true)}.${newIndexName}\", \"${index.name}\", \"INDEX\"`));\n\n // replace constraint name\n index.name = newIndexName;\n });\n\n // rename foreign key constraints\n clonedTable.findColumnForeignKeys(oldColumn).forEach(foreignKey => {\n // build new constraint name\n foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);\n foreignKey.columnNames.push(newColumn.name);\n const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n\n // build queries\n upQueries.push(new Query(`EXEC sp_rename \"${this.buildForeignKeyName(foreignKey.name!, schemaName, dbName)}\", \"${newForeignKeyName}\"`));\n downQueries.push(new Query(`EXEC sp_rename \"${this.buildForeignKeyName(newForeignKeyName, schemaName, dbName)}\", \"${foreignKey.name}\"`));\n\n // replace constraint name\n foreignKey.name = newForeignKeyName;\n });\n\n // rename check constraints\n clonedTable.findColumnChecks(oldColumn).forEach(check => {\n // build new constraint name\n check.columnNames!.splice(check.columnNames!.indexOf(oldColumn.name), 1);\n check.columnNames!.push(newColumn.name);\n const newCheckName = this.connection.namingStrategy.checkConstraintName(clonedTable, check.expression!);\n\n // build queries\n upQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(clonedTable, true)}.${check.name}\", \"${newCheckName}\"`));\n downQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(clonedTable, true)}.${newCheckName}\", \"${check.name}\"`));\n\n // replace constraint name\n check.name = newCheckName;\n });\n\n // rename unique constraints\n clonedTable.findColumnUniques(oldColumn).forEach(unique => {\n // build new constraint name\n unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);\n unique.columnNames.push(newColumn.name);\n const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);\n\n // build queries\n upQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(clonedTable, true)}.${unique.name}\", \"${newUniqueName}\"`));\n downQueries.push(new Query(`EXEC sp_rename \"${this.escapePath(clonedTable, true)}.${newUniqueName}\", \"${unique.name}\"`));\n\n // replace constraint name\n unique.name = newUniqueName;\n });\n\n // change currently used database back to default db.\n if (dbName && dbName !== currentDB) {\n upQueries.push(new Query(`USE \"${currentDB}\"`));\n downQueries.push(new Query(`USE \"${dbName}\"`));\n }\n\n // rename old column in the Table object\n const oldTableColumn = clonedTable.columns.find(column => column.name === oldColumn.name);\n clonedTable.columns[clonedTable.columns.indexOf(oldTableColumn!)].name = newColumn.name;\n oldColumn.name = newColumn.name;\n }\n\n if (this.isColumnChanged(oldColumn, newColumn)) {\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER COLUMN ${this.buildCreateColumnSql(table, newColumn, true, false)}`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ALTER COLUMN ${this.buildCreateColumnSql(table, oldColumn, true, false)}`));\n }\n\n if (newColumn.isPrimary !== oldColumn.isPrimary) {\n const primaryColumns = clonedTable.primaryColumns;\n\n // if primary column state changed, we must always drop existed constraint.\n if (primaryColumns.length > 0) {\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n }\n\n if (newColumn.isPrimary === true) {\n primaryColumns.push(newColumn);\n // update column in table\n const column = clonedTable.columns.find(column => column.name === newColumn.name);\n column!.isPrimary = true;\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n\n } else {\n const primaryColumn = primaryColumns.find(c => c.name === newColumn.name);\n primaryColumns.splice(primaryColumns.indexOf(primaryColumn!), 1);\n\n // update column in table\n const column = clonedTable.columns.find(column => column.name === newColumn.name);\n column!.isPrimary = false;\n\n // if we have another primary keys, we must recreate constraint.\n if (primaryColumns.length > 0) {\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n }\n }\n }\n\n if (newColumn.isUnique !== oldColumn.isUnique) {\n if (newColumn.isUnique === true) {\n const uniqueConstraint = new TableUnique({\n name: this.connection.namingStrategy.uniqueConstraintName(table.name, [newColumn.name]),\n columnNames: [newColumn.name]\n });\n clonedTable.uniques.push(uniqueConstraint);\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${uniqueConstraint.name}\" UNIQUE (\"${newColumn.name}\")`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${uniqueConstraint.name}\"`));\n\n } else {\n const uniqueConstraint = clonedTable.uniques.find(unique => {\n return unique.columnNames.length === 1 && !!unique.columnNames.find(columnName => columnName === newColumn.name);\n });\n clonedTable.uniques.splice(clonedTable.uniques.indexOf(uniqueConstraint!), 1);\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${uniqueConstraint!.name}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${uniqueConstraint!.name}\" UNIQUE (\"${newColumn.name}\")`));\n }\n }\n\n if (newColumn.default !== oldColumn.default) {\n if (newColumn.default !== null && newColumn.default !== undefined) {\n const defaultName = this.connection.namingStrategy.defaultConstraintName(table.name, newColumn.name);\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${defaultName}\" DEFAULT ${newColumn.default} FOR \"${newColumn.name}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${defaultName}\"`));\n\n } else if (oldColumn.default !== null && oldColumn.default !== undefined) {\n const defaultName = this.connection.namingStrategy.defaultConstraintName(table.name, oldColumn.name);\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${defaultName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${defaultName}\" DEFAULT ${oldColumn.default} FOR \"${oldColumn.name}\"`));\n }\n }\n\n await this.executeQueries(upQueries, downQueries);\n this.replaceCachedTable(table, clonedTable);\n }\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumns(tableOrName: Table|string, changedColumns: { newColumn: TableColumn, oldColumn: TableColumn }[]): Promise<void> {\n await PromiseUtils.runInSequence(changedColumns, changedColumn => this.changeColumn(tableOrName, changedColumn.oldColumn, changedColumn.newColumn));\n }\n\n /**\n * Drops column in the table.\n */\n async dropColumn(tableOrName: Table|string, columnOrName: TableColumn|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const column = columnOrName instanceof TableColumn ? columnOrName : table.findColumnByName(columnOrName);\n if (!column)\n throw new Error(`Column \"${columnOrName}\" was not found in table \"${table.name}\"`);\n\n const clonedTable = table.clone();\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n // drop primary key constraint\n if (column.isPrimary) {\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, clonedTable.primaryColumns.map(column => column.name));\n const columnNames = clonedTable.primaryColumns.map(primaryColumn => `\"${primaryColumn.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} DROP CONSTRAINT \"${pkName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n\n // update column in table\n const tableColumn = clonedTable.findColumnByName(column.name);\n tableColumn!.isPrimary = false;\n\n // if primary key have multiple columns, we must recreate it without dropped column\n if (clonedTable.primaryColumns.length > 0) {\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, clonedTable.primaryColumns.map(column => column.name));\n const columnNames = clonedTable.primaryColumns.map(primaryColumn => `\"${primaryColumn.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(clonedTable)} DROP CONSTRAINT \"${pkName}\"`));\n }\n }\n\n // drop column index\n const columnIndex = clonedTable.indices.find(index => index.columnNames.length === 1 && index.columnNames[0] === column.name);\n if (columnIndex) {\n clonedTable.indices.splice(clonedTable.indices.indexOf(columnIndex), 1);\n upQueries.push(this.dropIndexSql(table, columnIndex));\n downQueries.push(this.createIndexSql(table, columnIndex));\n }\n\n // drop column check\n const columnCheck = clonedTable.checks.find(check => !!check.columnNames && check.columnNames.length === 1 && check.columnNames[0] === column.name);\n if (columnCheck) {\n clonedTable.checks.splice(clonedTable.checks.indexOf(columnCheck), 1);\n upQueries.push(this.dropCheckConstraintSql(table, columnCheck));\n downQueries.push(this.createCheckConstraintSql(table, columnCheck));\n }\n\n // drop column unique\n const columnUnique = clonedTable.uniques.find(unique => unique.columnNames.length === 1 && unique.columnNames[0] === column.name);\n if (columnUnique) {\n clonedTable.uniques.splice(clonedTable.uniques.indexOf(columnUnique), 1);\n upQueries.push(this.dropUniqueConstraintSql(table, columnUnique));\n downQueries.push(this.createUniqueConstraintSql(table, columnUnique));\n }\n\n // drop default constraint\n if (column.default !== null && column.default !== undefined) {\n const defaultName = this.connection.namingStrategy.defaultConstraintName(table.name, column.name);\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${defaultName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${defaultName}\" DEFAULT ${column.default} FOR \"${column.name}\"`));\n }\n\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN \"${column.name}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(table, column, false, false)}`));\n\n await this.executeQueries(upQueries, downQueries);\n\n clonedTable.removeColumn(column);\n this.replaceCachedTable(table, clonedTable);\n }\n\n /**\n * Drops the columns in the table.\n */\n async dropColumns(tableOrName: Table|string, columns: TableColumn[]): Promise<void> {\n await PromiseUtils.runInSequence(columns, column => this.dropColumn(tableOrName, column));\n }\n\n /**\n * Creates a new primary key.\n */\n async createPrimaryKey(tableOrName: Table|string, columnNames: string[]): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const clonedTable = table.clone();\n\n const up = this.createPrimaryKeySql(table, columnNames);\n\n // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.\n clonedTable.columns.forEach(column => {\n if (columnNames.find(columnName => columnName === column.name))\n column.isPrimary = true;\n });\n const down = this.dropPrimaryKeySql(clonedTable);\n\n await this.executeQueries(up, down);\n this.replaceCachedTable(table, clonedTable);\n }\n\n /**\n * Updates composite primary keys.\n */\n async updatePrimaryKeys(tableOrName: Table|string, columns: TableColumn[]): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const clonedTable = table.clone();\n const columnNames = columns.map(column => column.name);\n const upQueries: Query[] = [];\n const downQueries: Query[] = [];\n\n // if table already have primary columns, we must drop them.\n const primaryColumns = clonedTable.primaryColumns;\n if (primaryColumns.length > 0) {\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, primaryColumns.map(column => column.name));\n const columnNamesString = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNamesString})`));\n }\n\n // update columns in table.\n clonedTable.columns\n .filter(column => columnNames.indexOf(column.name) !== -1)\n .forEach(column => column.isPrimary = true);\n\n const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable.name, columnNames);\n const columnNamesString = columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNamesString})`));\n downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${pkName}\"`));\n\n await this.executeQueries(upQueries, downQueries);\n this.replaceCachedTable(table, clonedTable);\n }\n\n /**\n * Drops a primary key.\n */\n async dropPrimaryKey(tableOrName: Table|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const up = this.dropPrimaryKeySql(table);\n const down = this.createPrimaryKeySql(table, table.primaryColumns.map(column => column.name));\n await this.executeQueries(up, down);\n table.primaryColumns.forEach(column => {\n column.isPrimary = false;\n });\n }\n\n /**\n * Creates a new unique constraint.\n */\n async createUniqueConstraint(tableOrName: Table|string, uniqueConstraint: TableUnique): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!uniqueConstraint.name)\n uniqueConstraint.name = this.connection.namingStrategy.uniqueConstraintName(table.name, uniqueConstraint.columnNames);\n\n const up = this.createUniqueConstraintSql(table, uniqueConstraint);\n const down = this.dropUniqueConstraintSql(table, uniqueConstraint);\n await this.executeQueries(up, down);\n table.addUniqueConstraint(uniqueConstraint);\n }\n\n /**\n * Creates a new unique constraints.\n */\n async createUniqueConstraints(tableOrName: Table|string, uniqueConstraints: TableUnique[]): Promise<void> {\n const promises = uniqueConstraints.map(uniqueConstraint => this.createUniqueConstraint(tableOrName, uniqueConstraint));\n await Promise.all(promises);\n }\n\n /**\n * Drops unique constraint.\n */\n async dropUniqueConstraint(tableOrName: Table|string, uniqueOrName: TableUnique|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const uniqueConstraint = uniqueOrName instanceof TableUnique ? uniqueOrName : table.uniques.find(u => u.name === uniqueOrName);\n if (!uniqueConstraint)\n throw new Error(`Supplied unique constraint was not found in table ${table.name}`);\n\n const up = this.dropUniqueConstraintSql(table, uniqueConstraint);\n const down = this.createUniqueConstraintSql(table, uniqueConstraint);\n await this.executeQueries(up, down);\n table.removeUniqueConstraint(uniqueConstraint);\n }\n\n /**\n * Drops an unique constraints.\n */\n async dropUniqueConstraints(tableOrName: Table|string, uniqueConstraints: TableUnique[]): Promise<void> {\n const promises = uniqueConstraints.map(uniqueConstraint => this.dropUniqueConstraint(tableOrName, uniqueConstraint));\n await Promise.all(promises);\n }\n\n /**\n * Creates a new check constraint.\n */\n async createCheckConstraint(tableOrName: Table|string, checkConstraint: TableCheck): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!checkConstraint.name)\n checkConstraint.name = this.connection.namingStrategy.checkConstraintName(table.name, checkConstraint.expression!);\n\n const up = this.createCheckConstraintSql(table, checkConstraint);\n const down = this.dropCheckConstraintSql(table, checkConstraint);\n await this.executeQueries(up, down);\n table.addCheckConstraint(checkConstraint);\n }\n\n /**\n * Creates a new check constraints.\n */\n async createCheckConstraints(tableOrName: Table|string, checkConstraints: TableCheck[]): Promise<void> {\n const promises = checkConstraints.map(checkConstraint => this.createCheckConstraint(tableOrName, checkConstraint));\n await Promise.all(promises);\n }\n\n /**\n * Drops check constraint.\n */\n async dropCheckConstraint(tableOrName: Table|string, checkOrName: TableCheck|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const checkConstraint = checkOrName instanceof TableCheck ? checkOrName : table.checks.find(c => c.name === checkOrName);\n if (!checkConstraint)\n throw new Error(`Supplied check constraint was not found in table ${table.name}`);\n\n const up = this.dropCheckConstraintSql(table, checkConstraint);\n const down = this.createCheckConstraintSql(table, checkConstraint);\n await this.executeQueries(up, down);\n table.removeCheckConstraint(checkConstraint);\n }\n\n /**\n * Drops check constraints.\n */\n async dropCheckConstraints(tableOrName: Table|string, checkConstraints: TableCheck[]): Promise<void> {\n const promises = checkConstraints.map(checkConstraint => this.dropCheckConstraint(tableOrName, checkConstraint));\n await Promise.all(promises);\n }\n\n /**\n * Creates a new exclusion constraint.\n */\n async createExclusionConstraint(tableOrName: Table|string, exclusionConstraint: TableExclusion): Promise<void> {\n throw new Error(`SqlServer does not support exclusion constraints.`);\n }\n\n /**\n * Creates a new exclusion constraints.\n */\n async createExclusionConstraints(tableOrName: Table|string, exclusionConstraints: TableExclusion[]): Promise<void> {\n throw new Error(`SqlServer does not support exclusion constraints.`);\n }\n\n /**\n * Drops exclusion constraint.\n */\n async dropExclusionConstraint(tableOrName: Table|string, exclusionOrName: TableExclusion|string): Promise<void> {\n throw new Error(`SqlServer does not support exclusion constraints.`);\n }\n\n /**\n * Drops exclusion constraints.\n */\n async dropExclusionConstraints(tableOrName: Table|string, exclusionConstraints: TableExclusion[]): Promise<void> {\n throw new Error(`SqlServer does not support exclusion constraints.`);\n }\n\n /**\n * Creates a new foreign key.\n */\n async createForeignKey(tableOrName: Table|string, foreignKey: TableForeignKey): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n\n // new FK may be passed without name. In this case we generate FK name manually.\n if (!foreignKey.name)\n foreignKey.name = this.connection.namingStrategy.foreignKeyName(table.name, foreignKey.columnNames, foreignKey.referencedTableName, foreignKey.referencedColumnNames);\n\n const up = this.createForeignKeySql(table, foreignKey);\n const down = this.dropForeignKeySql(table, foreignKey);\n await this.executeQueries(up, down);\n table.addForeignKey(foreignKey);\n }\n\n /**\n * Creates a new foreign keys.\n */\n async createForeignKeys(tableOrName: Table|string, foreignKeys: TableForeignKey[]): Promise<void> {\n const promises = foreignKeys.map(foreignKey => this.createForeignKey(tableOrName, foreignKey));\n await Promise.all(promises);\n }\n\n /**\n * Drops a foreign key from the table.\n */\n async dropForeignKey(tableOrName: Table|string, foreignKeyOrName: TableForeignKey|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const foreignKey = foreignKeyOrName instanceof TableForeignKey ? foreignKeyOrName : table.foreignKeys.find(fk => fk.name === foreignKeyOrName);\n if (!foreignKey)\n throw new Error(`Supplied foreign key was not found in table ${table.name}`);\n\n const up = this.dropForeignKeySql(table, foreignKey);\n const down = this.createForeignKeySql(table, foreignKey);\n await this.executeQueries(up, down);\n table.removeForeignKey(foreignKey);\n }\n\n /**\n * Drops a foreign keys from the table.\n */\n async dropForeignKeys(tableOrName: Table|string, foreignKeys: TableForeignKey[]): Promise<void> {\n const promises = foreignKeys.map(foreignKey => this.dropForeignKey(tableOrName, foreignKey));\n await Promise.all(promises);\n }\n\n /**\n * Creates a new index.\n */\n async createIndex(tableOrName: Table|string, index: TableIndex): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = this.connection.namingStrategy.indexName(table.name, index.columnNames, index.where);\n\n const up = this.createIndexSql(table, index);\n const down = this.dropIndexSql(table, index);\n await this.executeQueries(up, down);\n table.addIndex(index);\n }\n\n /**\n * Creates a new indices\n */\n async createIndices(tableOrName: Table|string, indices: TableIndex[]): Promise<void> {\n const promises = indices.map(index => this.createIndex(tableOrName, index));\n await Promise.all(promises);\n }\n\n /**\n * Drops an index.\n */\n async dropIndex(tableOrName: Table|string, indexOrName: TableIndex|string): Promise<void> {\n const table = tableOrName instanceof Table ? tableOrName : await this.getCachedTable(tableOrName);\n const index = indexOrName instanceof TableIndex ? indexOrName : table.indices.find(i => i.name === indexOrName);\n if (!index)\n throw new Error(`Supplied index was not found in table ${table.name}`);\n\n const up = this.dropIndexSql(table, index);\n const down = this.createIndexSql(table, index);\n await this.executeQueries(up, down);\n table.removeIndex(index);\n }\n\n /**\n * Drops an indices from the table.\n */\n async dropIndices(tableOrName: Table|string, indices: TableIndex[]): Promise<void> {\n const promises = indices.map(index => this.dropIndex(tableOrName, index));\n await Promise.all(promises);\n }\n\n /**\n * Clears all table contents.\n * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions.\n */\n async clearTable(tablePath: string): Promise<void> {\n await this.query(`TRUNCATE TABLE ${this.escapePath(tablePath)}`);\n }\n\n /**\n * Removes all tables from the currently connected database.\n */\n async clearDatabase(database?: string): Promise<void> {\n if (database) {\n const isDatabaseExist = await this.hasDatabase(database);\n if (!isDatabaseExist)\n return Promise.resolve();\n }\n\n await this.startTransaction();\n try {\n let allViewsSql = database\n ? `SELECT * FROM \"${database}\".\"INFORMATION_SCHEMA\".\"VIEWS\"`\n : `SELECT * FROM \"INFORMATION_SCHEMA\".\"VIEWS\"`;\n const allViewsResults: ObjectLiteral[] = await this.query(allViewsSql);\n\n await Promise.all(allViewsResults.map(viewResult => {\n // 'DROP VIEW' does not allow specifying the database name as a prefix to the object name.\n const dropTableSql = `DROP VIEW \"${viewResult[\"TABLE_SCHEMA\"]}\".\"${viewResult[\"TABLE_NAME\"]}\"`;\n return this.query(dropTableSql);\n }));\n\n let allTablesSql = database\n ? `SELECT * FROM \"${database}\".\"INFORMATION_SCHEMA\".\"TABLES\" WHERE \"TABLE_TYPE\" = 'BASE TABLE'`\n : `SELECT * FROM \"INFORMATION_SCHEMA\".\"TABLES\" WHERE \"TABLE_TYPE\" = 'BASE TABLE'`;\n const allTablesResults: ObjectLiteral[] = await this.query(allTablesSql);\n await Promise.all(allTablesResults.map(async tablesResult => {\n // const tableName = database ? `\"${tablesResult[\"TABLE_CATALOG\"]}\".\"sys\".\"foreign_keys\"` : `\"sys\".\"foreign_keys\"`;\n const dropForeignKeySql = `SELECT 'ALTER TABLE \"${tablesResult[\"TABLE_CATALOG\"]}\".\"' + OBJECT_SCHEMA_NAME(\"fk\".\"parent_object_id\", DB_ID('${tablesResult[\"TABLE_CATALOG\"]}')) + '\".\"' + OBJECT_NAME(\"fk\".\"parent_object_id\", DB_ID('${tablesResult[\"TABLE_CATALOG\"]}')) + '\" ` +\n `DROP CONSTRAINT \"' + \"fk\".\"name\" + '\"' as \"query\" FROM \"${tablesResult[\"TABLE_CATALOG\"]}\".\"sys\".\"foreign_keys\" AS \"fk\" ` +\n `WHERE \"fk\".\"referenced_object_id\" = OBJECT_ID('\"${tablesResult[\"TABLE_CATALOG\"]}\".\"${tablesResult[\"TABLE_SCHEMA\"]}\".\"${tablesResult[\"TABLE_NAME\"]}\"')`;\n const dropFkQueries: ObjectLiteral[] = await this.query(dropForeignKeySql);\n return Promise.all(dropFkQueries.map(result => result[\"query\"]).map(dropQuery => this.query(dropQuery)));\n }));\n await Promise.all(allTablesResults.map(tablesResult => {\n const dropTableSql = `DROP TABLE \"${tablesResult[\"TABLE_CATALOG\"]}\".\"${tablesResult[\"TABLE_SCHEMA\"]}\".\"${tablesResult[\"TABLE_NAME\"]}\"`;\n return this.query(dropTableSql);\n }));\n\n await this.commitTransaction();\n\n } catch (error) {\n try { // we throw original error even if rollback thrown an error\n await this.rollbackTransaction();\n } catch (rollbackError) { }\n throw error;\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Return current database.\n */\n protected async getCurrentDatabase(): Promise<string> {\n const currentDBQuery = await this.query(`SELECT DB_NAME() AS \"db_name\"`);\n return currentDBQuery[0][\"db_name\"];\n }\n\n /**\n * Return current schema.\n */\n protected async getCurrentSchema(): Promise<string> {\n const currentSchemaQuery = await this.query(`SELECT SCHEMA_NAME() AS \"schema_name\"`);\n return currentSchemaQuery[0][\"schema_name\"];\n }\n\n protected async loadViews(viewPaths: string[]): Promise<View[]> {\n const hasTable = await this.hasTable(this.getTypeormMetadataTableName());\n if (!hasTable)\n return Promise.resolve([]);\n\n const currentSchema = await this.getCurrentSchema();\n const currentDatabase = await this.getCurrentDatabase();\n\n const extractTableSchemaAndName = (tableName: string): string[] => {\n let [database, schema, name] = tableName.split(\".\");\n // if name is empty, it means that tableName have only schema name and table name or only table name\n if (!name) {\n // if schema is empty, it means tableName have only name of a table. Otherwise it means that we have \"schemaName\".\"tableName\" string.\n if (!schema) {\n name = database;\n schema = this.driver.options.schema || currentSchema;\n\n } else {\n name = schema;\n schema = database;\n }\n } else if (schema === \"\") {\n schema = this.driver.options.schema || currentSchema;\n }\n\n return [schema, name];\n };\n\n const dbNames = viewPaths\n .filter(viewPath => viewPath.split(\".\").length === 3)\n .map(viewPath => viewPath.split(\".\")[0]);\n\n if (this.driver.database && !dbNames.find(dbName => dbName === this.driver.database))\n dbNames.push(this.driver.database);\n\n const viewsCondition = viewPaths.map(viewPath => {\n const [schema, name] = extractTableSchemaAndName(viewPath);\n return `(\"T\".\"SCHEMA\" = '${schema}' AND \"T\".\"NAME\" = '${name}')`;\n }).join(\" OR \");\n\n const query = dbNames.map(dbName => {\n return `SELECT \"T\".*, \"V\".\"CHECK_OPTION\" FROM ${this.escapePath(this.getTypeormMetadataTableName())} \"t\" ` +\n `INNER JOIN \"${dbName}\".\"INFORMATION_SCHEMA\".\"VIEWS\" \"V\" ON \"V\".\"TABLE_SCHEMA\" = \"T\".\"SCHEMA\" AND \"v\".\"TABLE_NAME\" = \"T\".\"NAME\" WHERE \"T\".\"TYPE\" = 'VIEW' ${viewsCondition ? `AND (${viewsCondition})` : \"\"}`;\n }).join(\" UNION ALL \");\n\n const dbViews = await this.query(query);\n return dbViews.map((dbView: any) => {\n const view = new View();\n const db = dbView[\"TABLE_CATALOG\"] === currentDatabase ? undefined : dbView[\"TABLE_CATALOG\"];\n const schema = dbView[\"schema\"] === currentSchema && !this.driver.options.schema ? undefined : dbView[\"schema\"];\n view.name = this.driver.buildTableName(dbView[\"name\"], schema, db);\n view.expression = dbView[\"value\"];\n return view;\n });\n }\n\n /**\n * Loads all tables (with given names) from the database and creates a Table from them.\n */\n protected async loadTables(tableNames: string[]): Promise<Table[]> {\n\n // if no tables given then no need to proceed\n if (!tableNames || !tableNames.length)\n return [];\n\n const schemaNames: string[] = [];\n const currentSchema = await this.getCurrentSchema();\n const currentDatabase = await this.getCurrentDatabase();\n\n const extractTableSchemaAndName = (tableName: string): string[] => {\n let [database, schema, name] = tableName.split(\".\");\n // if name is empty, it means that tableName have only schema name and table name or only table name\n if (!name) {\n // if schema is empty, it means tableName have only name of a table. Otherwise it means that we have \"schemaName\".\"tableName\" string.\n if (!schema) {\n name = database;\n schema = this.driver.options.schema || currentSchema;\n\n } else {\n name = schema;\n schema = database;\n }\n } else if (schema === \"\") {\n schema = this.driver.options.schema || currentSchema;\n }\n\n return [schema, name];\n };\n\n tableNames.filter(tablePath => tablePath.indexOf(\".\") !== -1)\n .forEach(tablePath => {\n if (tablePath.split(\".\").length === 3) {\n if (tablePath.split(\".\")[1] !== \"\")\n schemaNames.push(tablePath.split(\".\")[1]);\n } else {\n schemaNames.push(tablePath.split(\".\")[0]);\n }\n });\n schemaNames.push(this.driver.options.schema || currentSchema);\n\n const dbNames = tableNames\n .filter(tablePath => tablePath.split(\".\").length === 3)\n .map(tablePath => tablePath.split(\".\")[0]);\n if (this.driver.database && !dbNames.find(dbName => dbName === this.driver.database))\n dbNames.push(this.driver.database);\n\n // load tables, columns, indices and foreign keys\n const schemaNamesString = schemaNames.map(name => \"'\" + name + \"'\").join(\", \");\n\n const tablesCondition = tableNames.map(tableName => {\n const [schema, name] = extractTableSchemaAndName(tableName);\n return `(\"TABLE_SCHEMA\" = '${schema}' AND \"TABLE_NAME\" = '${name}')`;\n }).join(\" OR \");\n\n const tablesSql = dbNames.map(dbName => {\n return `SELECT * FROM \"${dbName}\".\"INFORMATION_SCHEMA\".\"TABLES\" WHERE ` + tablesCondition;\n }).join(\" UNION ALL \");\n\n const columnsSql = dbNames.map(dbName => {\n return `SELECT * FROM \"${dbName}\".\"INFORMATION_SCHEMA\".\"COLUMNS\" WHERE ` + tablesCondition;\n }).join(\" UNION ALL \");\n\n const constraintsCondition = tableNames.map(tableName => {\n const [schema, name] = extractTableSchemaAndName(tableName);\n return `(\"columnUsages\".\"TABLE_SCHEMA\" = '${schema}' AND \"columnUsages\".\"TABLE_NAME\" = '${name}' ` +\n `AND \"tableConstraints\".\"TABLE_SCHEMA\" = '${schema}' AND \"tableConstraints\".\"TABLE_NAME\" = '${name}')`;\n }).join(\" OR \");\n\n const constraintsSql = dbNames.map(dbName => {\n return `SELECT \"columnUsages\".*, \"tableConstraints\".\"CONSTRAINT_TYPE\", \"chk\".\"definition\" ` +\n `FROM \"${dbName}\".\"INFORMATION_SCHEMA\".\"CONSTRAINT_COLUMN_USAGE\" \"columnUsages\" ` +\n `INNER JOIN \"${dbName}\".\"INFORMATION_SCHEMA\".\"TABLE_CONSTRAINTS\" \"tableConstraints\" ON \"tableConstraints\".\"CONSTRAINT_NAME\" = \"columnUsages\".\"CONSTRAINT_NAME\" ` +\n `LEFT JOIN \"${dbName}\".\"sys\".\"check_constraints\" \"chk\" ON \"chk\".\"name\" = \"columnUsages\".\"CONSTRAINT_NAME\" ` +\n `WHERE (${constraintsCondition}) AND \"tableConstraints\".\"CONSTRAINT_TYPE\" IN ('PRIMARY KEY', 'UNIQUE', 'CHECK')`;\n }).join(\" UNION ALL \");\n\n const foreignKeysSql = dbNames.map(dbName => {\n return `SELECT \"fk\".\"name\" AS \"FK_NAME\", '${dbName}' AS \"TABLE_CATALOG\", \"s1\".\"name\" AS \"TABLE_SCHEMA\", \"t1\".\"name\" AS \"TABLE_NAME\", ` +\n `\"col1\".\"name\" AS \"COLUMN_NAME\", \"s2\".\"name\" AS \"REF_SCHEMA\", \"t2\".\"name\" AS \"REF_TABLE\", \"col2\".\"name\" AS \"REF_COLUMN\", ` +\n `\"fk\".\"delete_referential_action_desc\" AS \"ON_DELETE\", \"fk\".\"update_referential_action_desc\" AS \"ON_UPDATE\" ` +\n `FROM \"${dbName}\".\"sys\".\"foreign_keys\" \"fk\" ` +\n `INNER JOIN \"${dbName}\".\"sys\".\"foreign_key_columns\" \"fkc\" ON \"fkc\".\"constraint_object_id\" = \"fk\".\"object_id\" ` +\n `INNER JOIN \"${dbName}\".\"sys\".\"tables\" \"t1\" ON \"t1\".\"object_id\" = \"fk\".\"parent_object_id\" ` +\n `INNER JOIN \"${dbName}\".\"sys\".\"schemas\" \"s1\" ON \"s1\".\"schema_id\" = \"t1\".\"schema_id\" ` +\n `INNER JOIN \"${dbName}\".\"sys\".\"tables\" \"t2\" ON \"t2\".\"object_id\" = \"fk\".\"referenced_object_id\" ` +\n `INNER JOIN \"${dbName}\".\"sys\".\"schemas\" \"s2\" ON \"s2\".\"schema_id\" = \"t2\".\"schema_id\" ` +\n `INNER JOIN \"${dbName}\".\"sys\".\"columns\" \"col1\" ON \"col1\".\"column_id\" = \"fkc\".\"parent_column_id\" AND \"col1\".\"object_id\" = \"fk\".\"parent_object_id\" ` +\n `INNER JOIN \"${dbName}\".\"sys\".\"columns\" \"col2\" ON \"col2\".\"column_id\" = \"fkc\".\"referenced_column_id\" AND \"col2\".\"object_id\" = \"fk\".\"referenced_object_id\"`;\n }).join(\" UNION ALL \");\n\n const identityColumnsSql = dbNames.map(dbName => {\n return `SELECT \"TABLE_CATALOG\", \"TABLE_SCHEMA\", \"COLUMN_NAME\", \"TABLE_NAME\" ` +\n `FROM \"${dbName}\".\"INFORMATION_SCHEMA\".\"COLUMNS\" ` +\n `WHERE COLUMNPROPERTY(object_id(\"TABLE_CATALOG\" + '.' + \"TABLE_SCHEMA\" + '.' + \"TABLE_NAME\"), \"COLUMN_NAME\", 'IsIdentity') = 1 AND \"TABLE_SCHEMA\" IN (${schemaNamesString})`;\n }).join(\" UNION ALL \");\n\n const dbCollationsSql = `SELECT \"NAME\", \"COLLATION_NAME\" FROM \"sys\".\"databases\"`;\n\n const indicesSql = dbNames.map(dbName => {\n return `SELECT '${dbName}' AS \"TABLE_CATALOG\", \"s\".\"name\" AS \"TABLE_SCHEMA\", \"t\".\"name\" AS \"TABLE_NAME\", ` +\n `\"ind\".\"name\" AS \"INDEX_NAME\", \"col\".\"name\" AS \"COLUMN_NAME\", \"ind\".\"is_unique\" AS \"IS_UNIQUE\", \"ind\".\"filter_definition\" as \"CONDITION\" ` +\n `FROM \"${dbName}\".\"sys\".\"indexes\" \"ind\" ` +\n `INNER JOIN \"${dbName}\".\"sys\".\"index_columns\" \"ic\" ON \"ic\".\"object_id\" = \"ind\".\"object_id\" AND \"ic\".\"index_id\" = \"ind\".\"index_id\" ` +\n `INNER JOIN \"${dbName}\".\"sys\".\"columns\" \"col\" ON \"col\".\"object_id\" = \"ic\".\"object_id\" AND \"col\".\"column_id\" = \"ic\".\"column_id\" ` +\n `INNER JOIN \"${dbName}\".\"sys\".\"tables\" \"t\" ON \"t\".\"object_id\" = \"ind\".\"object_id\" ` +\n `INNER JOIN \"${dbName}\".\"sys\".\"schemas\" \"s\" ON \"s\".\"schema_id\" = \"t\".\"schema_id\" ` +\n `WHERE \"ind\".\"is_primary_key\" = 0 AND \"ind\".\"is_unique_constraint\" = 0 AND \"t\".\"is_ms_shipped\" = 0`;\n }).join(\" UNION ALL \");\n\n const [\n dbTables,\n dbColumns,\n dbConstraints,\n dbForeignKeys,\n dbIdentityColumns,\n dbCollations,\n dbIndices\n ]: ObjectLiteral[][] = await Promise.all([\n this.query(tablesSql),\n this.query(columnsSql),\n this.query(constraintsSql),\n this.query(foreignKeysSql),\n this.query(identityColumnsSql),\n this.query(dbCollationsSql),\n this.query(indicesSql),\n ]);\n\n // if tables were not found in the db, no need to proceed\n if (!dbTables.length)\n return [];\n\n // create table schemas for loaded tables\n return await Promise.all(dbTables.map(async dbTable => {\n const table = new Table();\n\n // We do not need to join schema and database names, when db or schema is by default.\n // In this case we need local variable `tableFullName` for below comparision.\n const db = dbTable[\"TABLE_CATALOG\"] === currentDatabase ? undefined : dbTable[\"TABLE_CATALOG\"];\n const schema = dbTable[\"TABLE_SCHEMA\"] === currentSchema && !this.driver.options.schema ? undefined : dbTable[\"TABLE_SCHEMA\"];\n table.name = this.driver.buildTableName(dbTable[\"TABLE_NAME\"], schema, db);\n const tableFullName = this.driver.buildTableName(dbTable[\"TABLE_NAME\"], dbTable[\"TABLE_SCHEMA\"], dbTable[\"TABLE_CATALOG\"]);\n const defaultCollation = dbCollations.find(dbCollation => dbCollation[\"NAME\"] === dbTable[\"TABLE_CATALOG\"])!;\n\n // create columns from the loaded columns\n table.columns = dbColumns\n .filter(dbColumn => this.driver.buildTableName(dbColumn[\"TABLE_NAME\"], dbColumn[\"TABLE_SCHEMA\"], dbColumn[\"TABLE_CATALOG\"]) === tableFullName)\n .map(dbColumn => {\n const columnConstraints = dbConstraints.filter(dbConstraint => {\n return this.driver.buildTableName(dbConstraint[\"TABLE_NAME\"], dbConstraint[\"CONSTRAINT_SCHEMA\"], dbConstraint[\"CONSTRAINT_CATALOG\"]) === tableFullName\n && dbConstraint[\"COLUMN_NAME\"] === dbColumn[\"COLUMN_NAME\"];\n });\n\n const uniqueConstraint = columnConstraints.find(constraint => constraint[\"CONSTRAINT_TYPE\"] === \"UNIQUE\");\n const isConstraintComposite = uniqueConstraint\n ? !!dbConstraints.find(dbConstraint => dbConstraint[\"CONSTRAINT_TYPE\"] === \"UNIQUE\"\n && dbConstraint[\"CONSTRAINT_NAME\"] === uniqueConstraint[\"CONSTRAINT_NAME\"]\n && dbConstraint[\"COLUMN_NAME\"] !== dbColumn[\"COLUMN_NAME\"])\n : false;\n\n const isPrimary = !!columnConstraints.find(constraint => constraint[\"CONSTRAINT_TYPE\"] === \"PRIMARY KEY\");\n const isGenerated = !!dbIdentityColumns.find(column => {\n return this.driver.buildTableName(column[\"TABLE_NAME\"], column[\"TABLE_SCHEMA\"], column[\"TABLE_CATALOG\"]) === tableFullName\n && column[\"COLUMN_NAME\"] === dbColumn[\"COLUMN_NAME\"];\n });\n\n const tableColumn = new TableColumn();\n tableColumn.name = dbColumn[\"COLUMN_NAME\"];\n tableColumn.type = dbColumn[\"DATA_TYPE\"].toLowerCase();\n\n // check only columns that have length property\n if (this.driver.withLengthColumnTypes.indexOf(tableColumn.type as ColumnType) !== -1 && dbColumn[\"CHARACTER_MAXIMUM_LENGTH\"]) {\n const length = dbColumn[\"CHARACTER_MAXIMUM_LENGTH\"].toString();\n if (length === \"-1\") {\n tableColumn.length = \"MAX\";\n } else {\n tableColumn.length = !this.isDefaultColumnLength(table, tableColumn, length) ? length : \"\";\n }\n }\n\n if (tableColumn.type === \"decimal\" || tableColumn.type === \"numeric\") {\n if (dbColumn[\"NUMERIC_PRECISION\"] !== null && !this.isDefaultColumnPrecision(table, tableColumn, dbColumn[\"NUMERIC_PRECISION\"]))\n tableColumn.precision = dbColumn[\"NUMERIC_PRECISION\"];\n if (dbColumn[\"NUMERIC_SCALE\"] !== null && !this.isDefaultColumnScale(table, tableColumn, dbColumn[\"NUMERIC_SCALE\"]))\n tableColumn.scale = dbColumn[\"NUMERIC_SCALE\"];\n }\n\n if (tableColumn.type === \"nvarchar\") {\n // Check if this is an enum\n const columnCheckConstraints = columnConstraints.filter(constraint => constraint[\"CONSTRAINT_TYPE\"] === \"CHECK\");\n if (columnCheckConstraints.length) {\n const isEnumRegexp = new RegExp(\"^\\\\(\\\\[\" + tableColumn.name + \"\\\\]='[^']+'(?: OR \\\\[\" + tableColumn.name + \"\\\\]='[^']+')*\\\\)$\");\n for (const checkConstraint of columnCheckConstraints) {\n if (isEnumRegexp.test(checkConstraint[\"definition\"])) {\n // This is an enum constraint, make column into an enum\n tableColumn.type = \"simple-enum\";\n tableColumn.enum = [];\n const enumValueRegexp = new RegExp(\"\\\\[\" + tableColumn.name + \"\\\\]='([^']+)'\", \"g\");\n let result;\n while ((result = enumValueRegexp.exec(checkConstraint[\"definition\"])) !== null) {\n tableColumn.enum.unshift(result[1]);\n }\n // Skip other column constraints\n break;\n }\n }\n }\n }\n\n tableColumn.default = dbColumn[\"COLUMN_DEFAULT\"] !== null && dbColumn[\"COLUMN_DEFAULT\"] !== undefined\n ? this.removeParenthesisFromDefault(dbColumn[\"COLUMN_DEFAULT\"])\n : undefined;\n tableColumn.isNullable = dbColumn[\"IS_NULLABLE\"] === \"YES\";\n tableColumn.isPrimary = isPrimary;\n tableColumn.isUnique = !!uniqueConstraint && !isConstraintComposite;\n tableColumn.isGenerated = isGenerated;\n if (isGenerated)\n tableColumn.generationStrategy = \"increment\";\n if (tableColumn.default === \"newsequentialid()\") {\n tableColumn.isGenerated = true;\n tableColumn.generationStrategy = \"uuid\";\n tableColumn.default = undefined;\n }\n\n // todo: unable to get default charset\n // tableColumn.charset = dbColumn[\"CHARACTER_SET_NAME\"];\n tableColumn.collation = dbColumn[\"COLLATION_NAME\"] === defaultCollation[\"COLLATION_NAME\"] ? undefined : dbColumn[\"COLLATION_NAME\"];\n\n if (tableColumn.type === \"datetime2\" || tableColumn.type === \"time\" || tableColumn.type === \"datetimeoffset\") {\n tableColumn.precision = !this.isDefaultColumnPrecision(table, tableColumn, dbColumn[\"DATETIME_PRECISION\"]) ? dbColumn[\"DATETIME_PRECISION\"] : undefined;\n }\n\n return tableColumn;\n });\n\n // find unique constraints of table, group them by constraint name and build TableUnique.\n const tableUniqueConstraints = OrmUtils.uniq(dbConstraints.filter(dbConstraint => {\n return this.driver.buildTableName(dbConstraint[\"TABLE_NAME\"], dbConstraint[\"CONSTRAINT_SCHEMA\"], dbConstraint[\"CONSTRAINT_CATALOG\"]) === tableFullName\n && dbConstraint[\"CONSTRAINT_TYPE\"] === \"UNIQUE\";\n }), dbConstraint => dbConstraint[\"CONSTRAINT_NAME\"]);\n\n table.uniques = tableUniqueConstraints.map(constraint => {\n const uniques = dbConstraints.filter(dbC => dbC[\"CONSTRAINT_NAME\"] === constraint[\"CONSTRAINT_NAME\"]);\n return new TableUnique({\n name: constraint[\"CONSTRAINT_NAME\"],\n columnNames: uniques.map(u => u[\"COLUMN_NAME\"])\n });\n });\n\n // find check constraints of table, group them by constraint name and build TableCheck.\n const tableCheckConstraints = OrmUtils.uniq(dbConstraints.filter(dbConstraint => {\n return this.driver.buildTableName(dbConstraint[\"TABLE_NAME\"], dbConstraint[\"CONSTRAINT_SCHEMA\"], dbConstraint[\"CONSTRAINT_CATALOG\"]) === tableFullName\n && dbConstraint[\"CONSTRAINT_TYPE\"] === \"CHECK\";\n }), dbConstraint => dbConstraint[\"CONSTRAINT_NAME\"]);\n\n table.checks = tableCheckConstraints.map(constraint => {\n const checks = dbConstraints.filter(dbC => dbC[\"CONSTRAINT_NAME\"] === constraint[\"CONSTRAINT_NAME\"]);\n return new TableCheck({\n name: constraint[\"CONSTRAINT_NAME\"],\n columnNames: checks.map(c => c[\"COLUMN_NAME\"]),\n expression: constraint[\"definition\"]\n });\n });\n\n // find foreign key constraints of table, group them by constraint name and build TableForeignKey.\n const tableForeignKeyConstraints = OrmUtils.uniq(dbForeignKeys.filter(dbForeignKey => {\n return this.driver.buildTableName(dbForeignKey[\"TABLE_NAME\"], dbForeignKey[\"TABLE_SCHEMA\"], dbForeignKey[\"TABLE_CATALOG\"]) === tableFullName;\n }), dbForeignKey => dbForeignKey[\"FK_NAME\"]);\n\n table.foreignKeys = tableForeignKeyConstraints.map(dbForeignKey => {\n const foreignKeys = dbForeignKeys.filter(dbFk => dbFk[\"FK_NAME\"] === dbForeignKey[\"FK_NAME\"]);\n\n // if referenced table located in currently used db and schema, we don't need to concat db and schema names to table name.\n const db = dbForeignKey[\"TABLE_CATALOG\"] === currentDatabase ? undefined : dbForeignKey[\"TABLE_CATALOG\"];\n const schema = dbForeignKey[\"REF_SCHEMA\"] === currentSchema ? undefined : dbForeignKey[\"REF_SCHEMA\"];\n const referencedTableName = this.driver.buildTableName(dbForeignKey[\"REF_TABLE\"], schema, db);\n\n return new TableForeignKey({\n name: dbForeignKey[\"FK_NAME\"],\n columnNames: foreignKeys.map(dbFk => dbFk[\"COLUMN_NAME\"]),\n referencedTableName: referencedTableName,\n referencedColumnNames: foreignKeys.map(dbFk => dbFk[\"REF_COLUMN\"]),\n onDelete: dbForeignKey[\"ON_DELETE\"].replace(\"_\", \" \"), // SqlServer returns NO_ACTION, instead of NO ACTION\n onUpdate: dbForeignKey[\"ON_UPDATE\"].replace(\"_\", \" \") // SqlServer returns NO_ACTION, instead of NO ACTION\n });\n });\n\n // find index constraints of table, group them by constraint name and build TableIndex.\n const tableIndexConstraints = OrmUtils.uniq(dbIndices.filter(dbIndex => {\n return this.driver.buildTableName(dbIndex[\"TABLE_NAME\"], dbIndex[\"TABLE_SCHEMA\"], dbIndex[\"TABLE_CATALOG\"]) === tableFullName;\n }), dbIndex => dbIndex[\"INDEX_NAME\"]);\n\n table.indices = tableIndexConstraints.map(constraint => {\n const indices = dbIndices.filter(index => {\n return index[\"TABLE_CATALOG\"] === constraint[\"TABLE_CATALOG\"]\n && index[\"TABLE_SCHEMA\"] === constraint[\"TABLE_SCHEMA\"]\n && index[\"TABLE_NAME\"] === constraint[\"TABLE_NAME\"]\n && index[\"INDEX_NAME\"] === constraint[\"INDEX_NAME\"];\n });\n return new TableIndex(<TableIndexOptions>{\n table: table,\n name: constraint[\"INDEX_NAME\"],\n columnNames: indices.map(i => i[\"COLUMN_NAME\"]),\n isUnique: constraint[\"IS_UNIQUE\"],\n where: constraint[\"CONDITION\"]\n });\n });\n\n return table;\n }));\n }\n\n /**\n * Builds and returns SQL for create table.\n */\n protected createTableSql(table: Table, createForeignKeys?: boolean): Query {\n const columnDefinitions = table.columns.map(column => this.buildCreateColumnSql(table, column, false, true)).join(\", \");\n let sql = `CREATE TABLE ${this.escapePath(table)} (${columnDefinitions}`;\n\n table.columns\n .filter(column => column.isUnique)\n .forEach(column => {\n const isUniqueExist = table.uniques.some(unique => unique.columnNames.length === 1 && unique.columnNames[0] === column.name);\n if (!isUniqueExist)\n table.uniques.push(new TableUnique({\n name: this.connection.namingStrategy.uniqueConstraintName(table.name, [column.name]),\n columnNames: [column.name]\n }));\n });\n\n if (table.uniques.length > 0) {\n const uniquesSql = table.uniques.map(unique => {\n const uniqueName = unique.name ? unique.name : this.connection.namingStrategy.uniqueConstraintName(table.name, unique.columnNames);\n const columnNames = unique.columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n return `CONSTRAINT \"${uniqueName}\" UNIQUE (${columnNames})`;\n }).join(\", \");\n\n sql += `, ${uniquesSql}`;\n }\n\n if (table.checks.length > 0) {\n const checksSql = table.checks.map(check => {\n const checkName = check.name ? check.name : this.connection.namingStrategy.checkConstraintName(table.name, check.expression!);\n return `CONSTRAINT \"${checkName}\" CHECK (${check.expression})`;\n }).join(\", \");\n\n sql += `, ${checksSql}`;\n }\n\n if (table.foreignKeys.length > 0 && createForeignKeys) {\n const foreignKeysSql = table.foreignKeys.map(fk => {\n const columnNames = fk.columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n if (!fk.name)\n fk.name = this.connection.namingStrategy.foreignKeyName(table.name, fk.columnNames, fk.referencedTableName, fk.referencedColumnNames);\n const referencedColumnNames = fk.referencedColumnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n\n let constraint = `CONSTRAINT \"${fk.name}\" FOREIGN KEY (${columnNames}) REFERENCES ${this.escapePath(fk.referencedTableName)} (${referencedColumnNames})`;\n if (fk.onDelete)\n constraint += ` ON DELETE ${fk.onDelete}`;\n if (fk.onUpdate)\n constraint += ` ON UPDATE ${fk.onUpdate}`;\n\n return constraint;\n }).join(\", \");\n\n sql += `, ${foreignKeysSql}`;\n }\n\n const primaryColumns = table.columns.filter(column => column.isPrimary);\n if (primaryColumns.length > 0) {\n const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, primaryColumns.map(column => column.name));\n const columnNames = primaryColumns.map(column => `\"${column.name}\"`).join(\", \");\n sql += `, CONSTRAINT \"${primaryKeyName}\" PRIMARY KEY (${columnNames})`;\n }\n\n sql += `)`;\n\n return new Query(sql);\n }\n\n /**\n * Builds drop table sql.\n */\n protected dropTableSql(tableOrName: Table|string, ifExist?: boolean): Query {\n const query = ifExist ? `DROP TABLE IF EXISTS ${this.escapePath(tableOrName)}` : `DROP TABLE ${this.escapePath(tableOrName)}`;\n return new Query(query);\n }\n\n protected createViewSql(view: View): Query {\n if (typeof view.expression === \"string\") {\n return new Query(`CREATE VIEW ${this.escapePath(view)} AS ${view.expression}`);\n } else {\n return new Query(`CREATE VIEW ${this.escapePath(view)} AS ${view.expression(this.connection).getQuery()}`);\n }\n }\n\n protected async insertViewDefinitionSql(view: View): Promise<Query> {\n const currentSchema = await this.getCurrentSchema();\n const parsedTableName = this.parseTableName(view, currentSchema);\n const expression = typeof view.expression === \"string\" ? view.expression.trim() : view.expression(this.connection).getQuery();\n const [query, parameters] = this.connection.createQueryBuilder()\n .insert()\n .into(this.getTypeormMetadataTableName())\n .values({ type: \"VIEW\", database: parsedTableName.database, schema: parsedTableName.schema, name: parsedTableName.name, value: expression })\n .getQueryAndParameters();\n\n return new Query(query, parameters);\n }\n\n /**\n * Builds drop view sql.\n */\n protected dropViewSql(viewOrPath: View|string): Query {\n return new Query(`DROP VIEW ${this.escapePath(viewOrPath)}`);\n }\n\n /**\n * Builds remove view sql.\n */\n protected async deleteViewDefinitionSql(viewOrPath: View|string): Promise<Query> {\n const currentSchema = await this.getCurrentSchema();\n const parsedTableName = this.parseTableName(viewOrPath, currentSchema);\n\n const qb = this.connection.createQueryBuilder();\n const [query, parameters] = qb.delete()\n .from(this.getTypeormMetadataTableName())\n .where(`${qb.escape(\"type\")} = 'VIEW'`)\n .andWhere(`${qb.escape(\"database\")} = :database`, { database: parsedTableName.database })\n .andWhere(`${qb.escape(\"schema\")} = :schema`, { schema: parsedTableName.schema })\n .andWhere(`${qb.escape(\"name\")} = :name`, { name: parsedTableName.name })\n .getQueryAndParameters();\n\n return new Query(query, parameters);\n }\n\n /**\n * Builds create index sql.\n */\n protected createIndexSql(table: Table, index: TableIndex): Query {\n const columns = index.columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n return new Query(`CREATE ${index.isUnique ? \"UNIQUE \" : \"\"}INDEX \"${index.name}\" ON ${this.escapePath(table)} (${columns}) ${index.where ? \"WHERE \" + index.where : \"\"}`);\n }\n\n /**\n * Builds drop index sql.\n */\n protected dropIndexSql(table: Table, indexOrName: TableIndex|string): Query {\n let indexName = indexOrName instanceof TableIndex ? indexOrName.name : indexOrName;\n return new Query(`DROP INDEX \"${indexName}\" ON ${this.escapePath(table)}`);\n }\n\n /**\n * Builds create primary key sql.\n */\n protected createPrimaryKeySql(table: Table, columnNames: string[]): Query {\n const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, columnNames);\n const columnNamesString = columnNames.map(columnName => `\"${columnName}\"`).join(\", \");\n return new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${primaryKeyName}\" PRIMARY KEY (${columnNamesString})`);\n }\n\n /**\n * Builds drop primary key sql.\n */\n protected dropPrimaryKeySql(table: Table): Query {\n const columnNames = table.primaryColumns.map(column => column.name);\n const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table.name, columnNames);\n return new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${primaryKeyName}\"`);\n }\n\n /**\n * Builds create unique constraint sql.\n */\n protected createUniqueConstraintSql(table: Table, uniqueConstraint: TableUnique): Query {\n const columnNames = uniqueConstraint.columnNames.map(column => `\"` + column + `\"`).join(\", \");\n return new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${uniqueConstraint.name}\" UNIQUE (${columnNames})`);\n }\n\n /**\n * Builds drop unique constraint sql.\n */\n protected dropUniqueConstraintSql(table: Table, uniqueOrName: TableUnique|string): Query {\n const uniqueName = uniqueOrName instanceof TableUnique ? uniqueOrName.name : uniqueOrName;\n return new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${uniqueName}\"`);\n }\n\n /**\n * Builds create check constraint sql.\n */\n protected createCheckConstraintSql(table: Table, checkConstraint: TableCheck): Query {\n return new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${checkConstraint.name}\" CHECK (${checkConstraint.expression})`);\n }\n\n /**\n * Builds drop check constraint sql.\n */\n protected dropCheckConstraintSql(table: Table, checkOrName: TableCheck|string): Query {\n const checkName = checkOrName instanceof TableCheck ? checkOrName.name : checkOrName;\n return new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${checkName}\"`);\n }\n\n /**\n * Builds create foreign key sql.\n */\n protected createForeignKeySql(table: Table, foreignKey: TableForeignKey): Query {\n const columnNames = foreignKey.columnNames.map(column => `\"` + column + `\"`).join(\", \");\n const referencedColumnNames = foreignKey.referencedColumnNames.map(column => `\"` + column + `\"`).join(\",\");\n let sql = `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${foreignKey.name}\" FOREIGN KEY (${columnNames}) ` +\n `REFERENCES ${this.escapePath(foreignKey.referencedTableName)}(${referencedColumnNames})`;\n if (foreignKey.onDelete)\n sql += ` ON DELETE ${foreignKey.onDelete}`;\n if (foreignKey.onUpdate)\n sql += ` ON UPDATE ${foreignKey.onUpdate}`;\n\n return new Query(sql);\n }\n\n /**\n * Builds drop foreign key sql.\n */\n protected dropForeignKeySql(table: Table, foreignKeyOrName: TableForeignKey|string): Query {\n const foreignKeyName = foreignKeyOrName instanceof TableForeignKey ? foreignKeyOrName.name : foreignKeyOrName;\n return new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${foreignKeyName}\"`);\n }\n\n /**\n * Escapes given table or View path.\n */\n protected escapePath(target: Table|View|string, disableEscape?: boolean): string {\n let name = target instanceof Table || target instanceof View ? target.name : target;\n if (this.driver.options.schema) {\n if (name.indexOf(\".\") === -1) {\n name = `${this.driver.options.schema}.${name}`;\n } else if (name.split(\".\").length === 3) {\n const splittedName = name.split(\".\");\n const dbName = splittedName[0];\n const tableName = splittedName[2];\n name = `${dbName}.${this.driver.options.schema}.${tableName}`;\n }\n }\n\n return name.split(\".\").map(i => {\n // this condition need because when custom database name was specified and schema name was not, we got `dbName..tableName` string, and doesn't need to escape middle empty string\n if (i === \"\")\n return i;\n return disableEscape ? i : `\"${i}\"`;\n }).join(\".\");\n }\n\n protected parseTableName(target: Table|View|string, schema?: string) {\n const tableName = (target instanceof Table || target instanceof View) ? target.name : target;\n if (tableName.split(\".\").length === 3) {\n return {\n database: tableName.split(\".\")[0],\n schema: tableName.split(\".\")[1] === \"\" ? schema || \"SCHEMA_NAME()\" : tableName.split(\".\")[1],\n name: tableName.split(\".\")[2]\n };\n } else if (tableName.split(\".\").length === 2) {\n return {\n database: this.driver.database,\n schema: tableName.split(\".\")[0],\n name: tableName.split(\".\")[1]\n };\n } else {\n return {\n database: this.driver.database,\n schema: this.driver.options.schema ? this.driver.options.schema : schema || \"SCHEMA_NAME()\",\n name: tableName\n };\n }\n }\n\n /**\n * Concat database name and schema name to the foreign key name.\n * Needs because FK name is relevant to the schema and database.\n */\n protected buildForeignKeyName(fkName: string, schemaName: string|undefined, dbName: string|undefined): string {\n let joinedFkName = fkName;\n if (schemaName)\n joinedFkName = schemaName + \".\" + joinedFkName;\n if (dbName)\n joinedFkName = dbName + \".\" + joinedFkName;\n\n return joinedFkName;\n }\n\n /**\n * Removes parenthesis around default value.\n * Sql server returns default value with parenthesis around, e.g.\n * ('My text') - for string\n * ((1)) - for number\n * (newsequentialId()) - for function\n */\n protected removeParenthesisFromDefault(defaultValue: any): any {\n if (defaultValue.substr(0, 1) !== \"(\")\n return defaultValue;\n const normalizedDefault = defaultValue.substr(1, defaultValue.lastIndexOf(\")\") - 1);\n return this.removeParenthesisFromDefault(normalizedDefault);\n }\n\n /**\n * Builds a query for create column.\n */\n protected buildCreateColumnSql(table: Table, column: TableColumn, skipIdentity: boolean, createDefault: boolean) {\n let c = `\"${column.name}\" ${this.connection.driver.createFullType(column)}`;\n\n if (column.enum)\n c += \" CHECK( \" + column.name + \" IN (\" + column.enum.map(val => \"'\" + val + \"'\").join(\",\") + \") )\";\n\n if (column.collation)\n c += \" COLLATE \" + column.collation;\n\n if (column.isNullable !== true)\n c += \" NOT NULL\";\n\n if (column.isGenerated === true && column.generationStrategy === \"increment\" && !skipIdentity) // don't use skipPrimary here since updates can update already exist primary without auto inc.\n c += \" IDENTITY(1,1)\";\n\n if (column.default !== undefined && column.default !== null && createDefault) {\n // we create named constraint to be able to delete this constraint when column been dropped\n const defaultName = this.connection.namingStrategy.defaultConstraintName(table.name, column.name);\n c += ` CONSTRAINT \"${defaultName}\" DEFAULT ${column.default}`;\n }\n\n if (column.isGenerated && column.generationStrategy === \"uuid\" && !column.default) {\n // we create named constraint to be able to delete this constraint when column been dropped\n const defaultName = this.connection.namingStrategy.defaultConstraintName(table.name, column.name);\n c += ` CONSTRAINT \"${defaultName}\" DEFAULT NEWSEQUENTIALID()`;\n }\n return c;\n }\n\n /**\n * Converts MssqlParameter into real mssql parameter type.\n */\n protected mssqlParameterToNativeParameter(parameter: MssqlParameter): any {\n switch (this.driver.normalizeType({ type: parameter.type as any })) {\n case \"bit\":\n return this.driver.mssql.Bit;\n case \"bigint\":\n return this.driver.mssql.BigInt;\n case \"decimal\":\n return this.driver.mssql.Decimal(...parameter.params);\n case \"float\":\n return this.driver.mssql.Float;\n case \"int\":\n return this.driver.mssql.Int;\n case \"money\":\n return this.driver.mssql.Money;\n case \"numeric\":\n return this.driver.mssql.Numeric(...parameter.params);\n case \"smallint\":\n return this.driver.mssql.SmallInt;\n case \"smallmoney\":\n return this.driver.mssql.SmallMoney;\n case \"real\":\n return this.driver.mssql.Real;\n case \"tinyint\":\n return this.driver.mssql.TinyInt;\n case \"char\":\n return this.driver.mssql.Char(...parameter.params);\n case \"nchar\":\n return this.driver.mssql.NChar(...parameter.params);\n case \"text\":\n return this.driver.mssql.Text;\n case \"ntext\":\n return this.driver.mssql.Ntext;\n case \"varchar\":\n return this.driver.mssql.VarChar(...parameter.params);\n case \"nvarchar\":\n return this.driver.mssql.NVarChar(...parameter.params);\n case \"xml\":\n return this.driver.mssql.Xml;\n case \"time\":\n return this.driver.mssql.Time(...parameter.params);\n case \"date\":\n return this.driver.mssql.Date;\n case \"datetime\":\n return this.driver.mssql.DateTime;\n case \"datetime2\":\n return this.driver.mssql.DateTime2(...parameter.params);\n case \"datetimeoffset\":\n return this.driver.mssql.DateTimeOffset(...parameter.params);\n case \"smalldatetime\":\n return this.driver.mssql.SmallDateTime;\n case \"uniqueidentifier\":\n return this.driver.mssql.UniqueIdentifier;\n case \"variant\":\n return this.driver.mssql.Variant;\n case \"binary\":\n return this.driver.mssql.Binary;\n case \"varbinary\":\n return this.driver.mssql.VarBinary(...parameter.params);\n case \"image\":\n return this.driver.mssql.Image;\n case \"udt\":\n return this.driver.mssql.UDT;\n case \"rowversion\":\n return this.driver.mssql.RowVersion;\n }\n }\n\n /**\n * Converts string literal of isolation level to enum.\n * The underlying mssql driver requires an enum for the isolation level.\n */\n convertIsolationLevel(isolation: IsolationLevel) {\n const ISOLATION_LEVEL = this.driver.mssql.ISOLATION_LEVEL;\n switch (isolation) {\n case \"READ UNCOMMITTED\":\n return ISOLATION_LEVEL.READ_UNCOMMITTED;\n case \"REPEATABLE READ\":\n return ISOLATION_LEVEL.REPEATABLE_READ;\n case \"SERIALIZABLE\":\n return ISOLATION_LEVEL.SERIALIZABLE;\n\n case \"READ COMMITTED\":\n default:\n return ISOLATION_LEVEL.READ_COMMITTED;\n }\n }\n\n}\n"],"sourceRoot":"../.."}
|
|
1
|
+
{"version":3,"sources":["../browser/src/driver/sqlserver/SqlServerQueryRunner.ts"],"names":[],"mappings":"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","file":"SqlServerQueryRunner.js","sourcesContent":["import { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { TransactionNotStartedError } from \"../../error/TransactionNotStartedError\"\nimport { ColumnType } from \"../types/ColumnTypes\"\nimport { ReadStream } from \"../../platform/PlatformTools\"\nimport { BaseQueryRunner } from \"../../query-runner/BaseQueryRunner\"\nimport { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport { TableIndexOptions } from \"../../schema-builder/options/TableIndexOptions\"\nimport { Table } from \"../../schema-builder/table/Table\"\nimport { TableCheck } from \"../../schema-builder/table/TableCheck\"\nimport { TableColumn } from \"../../schema-builder/table/TableColumn\"\nimport { TableExclusion } from \"../../schema-builder/table/TableExclusion\"\nimport { TableForeignKey } from \"../../schema-builder/table/TableForeignKey\"\nimport { TableIndex } from \"../../schema-builder/table/TableIndex\"\nimport { TableUnique } from \"../../schema-builder/table/TableUnique\"\nimport { View } from \"../../schema-builder/view/View\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\nimport { Query } from \"../Query\"\nimport { IsolationLevel } from \"../types/IsolationLevel\"\nimport { MssqlParameter } from \"./MssqlParameter\"\nimport { SqlServerDriver } from \"./SqlServerDriver\"\nimport { ReplicationMode } from \"../types/ReplicationMode\"\nimport { TypeORMError } from \"../../error\"\nimport { QueryLock } from \"../../query-runner/QueryLock\"\nimport { MetadataTableType } from \"../types/MetadataTableType\"\nimport { InstanceChecker } from \"../../util/InstanceChecker\"\n\n/**\n * Runs queries on a single SQL Server database connection.\n */\nexport class SqlServerQueryRunner\n extends BaseQueryRunner\n implements QueryRunner\n{\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Database driver used by connection.\n */\n driver: SqlServerDriver\n\n // -------------------------------------------------------------------------\n // Private Properties\n // -------------------------------------------------------------------------\n\n private lock: QueryLock = new QueryLock()\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: SqlServerDriver, mode: ReplicationMode) {\n super()\n this.driver = driver\n this.connection = driver.connection\n this.broadcaster = new Broadcaster(this)\n this.mode = mode\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n connect(): Promise<void> {\n return Promise.resolve()\n }\n\n /**\n * Releases used database connection.\n * You cannot use query runner methods once its released.\n */\n release(): Promise<void> {\n this.isReleased = true\n return Promise.resolve()\n }\n\n /**\n * Starts transaction.\n */\n async startTransaction(isolationLevel?: IsolationLevel): Promise<void> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n this.isTransactionActive = true\n try {\n await this.broadcaster.broadcast(\"BeforeTransactionStart\")\n } catch (err) {\n this.isTransactionActive = false\n throw err\n }\n await new Promise<void>(async (ok, fail) => {\n const transactionCallback = (err: any) => {\n if (err) {\n this.isTransactionActive = false\n return fail(err)\n }\n ok()\n }\n\n if (this.transactionDepth === 0) {\n const pool = await (this.mode === \"slave\"\n ? this.driver.obtainSlaveConnection()\n : this.driver.obtainMasterConnection())\n this.databaseConnection = pool.transaction()\n this.connection.logger.logQuery(\"BEGIN TRANSACTION\")\n if (isolationLevel) {\n this.databaseConnection.begin(\n this.convertIsolationLevel(isolationLevel),\n transactionCallback,\n )\n this.connection.logger.logQuery(\n \"SET TRANSACTION ISOLATION LEVEL \" + isolationLevel,\n )\n } else {\n this.databaseConnection.begin(transactionCallback)\n }\n } else {\n await this.query(\n `SAVE TRANSACTION typeorm_${this.transactionDepth}`,\n )\n ok()\n }\n this.transactionDepth += 1\n })\n\n await this.broadcaster.broadcast(\"AfterTransactionStart\")\n }\n\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n async commitTransaction(): Promise<void> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n if (!this.isTransactionActive) throw new TransactionNotStartedError()\n\n await this.broadcaster.broadcast(\"BeforeTransactionCommit\")\n\n if (this.transactionDepth === 1) {\n return new Promise<void>((ok, fail) => {\n this.databaseConnection.commit(async (err: any) => {\n if (err) return fail(err)\n this.isTransactionActive = false\n this.databaseConnection = null\n\n await this.broadcaster.broadcast(\"AfterTransactionCommit\")\n\n ok()\n this.connection.logger.logQuery(\"COMMIT\")\n this.transactionDepth -= 1\n })\n })\n }\n this.transactionDepth -= 1\n }\n\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n async rollbackTransaction(): Promise<void> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n if (!this.isTransactionActive) throw new TransactionNotStartedError()\n\n await this.broadcaster.broadcast(\"BeforeTransactionRollback\")\n\n if (this.transactionDepth > 1) {\n await this.query(\n `ROLLBACK TRANSACTION typeorm_${this.transactionDepth - 1}`,\n )\n this.transactionDepth -= 1\n } else {\n return new Promise<void>((ok, fail) => {\n this.databaseConnection.rollback(async (err: any) => {\n if (err) return fail(err)\n this.isTransactionActive = false\n this.databaseConnection = null\n\n await this.broadcaster.broadcast(\"AfterTransactionRollback\")\n\n ok()\n this.connection.logger.logQuery(\"ROLLBACK\")\n this.transactionDepth -= 1\n })\n })\n }\n }\n\n /**\n * Executes a given SQL query.\n */\n async query(\n query: string,\n parameters?: any[],\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n const release = await this.lock.acquire()\n\n try {\n this.driver.connection.logger.logQuery(query, parameters, this)\n const pool = await (this.mode === \"slave\"\n ? this.driver.obtainSlaveConnection()\n : this.driver.obtainMasterConnection())\n const request = new this.driver.mssql.Request(\n this.isTransactionActive ? this.databaseConnection : pool,\n )\n if (parameters && parameters.length) {\n parameters.forEach((parameter, index) => {\n const parameterName = index.toString()\n if (InstanceChecker.isMssqlParameter(parameter)) {\n const mssqlParameter =\n this.mssqlParameterToNativeParameter(parameter)\n if (mssqlParameter) {\n request.input(\n parameterName,\n mssqlParameter,\n parameter.value,\n )\n } else {\n request.input(parameterName, parameter.value)\n }\n } else {\n request.input(parameterName, parameter)\n }\n })\n }\n const queryStartTime = +new Date()\n\n const raw = await new Promise<any>((ok, fail) => {\n request.query(query, (err: any, raw: any) => {\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = +new Date()\n const queryExecutionTime = queryEndTime - queryStartTime\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n ) {\n this.driver.connection.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n }\n\n if (err) {\n fail(new QueryFailedError(query, parameters, err))\n }\n\n ok(raw)\n })\n })\n\n const result = new QueryResult()\n\n if (raw?.hasOwnProperty(\"recordset\")) {\n result.records = raw.recordset\n }\n\n if (raw?.hasOwnProperty(\"rowsAffected\")) {\n result.affected = raw.rowsAffected[0]\n }\n\n const queryType = query.slice(0, query.indexOf(\" \"))\n switch (queryType) {\n case \"DELETE\":\n // for DELETE query additionally return number of affected rows\n result.raw = [raw.recordset, raw.rowsAffected[0]]\n break\n default:\n result.raw = raw.recordset\n }\n\n if (useStructuredResult) {\n return result\n } else {\n return result.raw\n }\n } catch (err) {\n this.driver.connection.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n throw err\n } finally {\n release()\n }\n }\n\n /**\n * Returns raw data stream.\n */\n async stream(\n query: string,\n parameters?: any[],\n onEnd?: Function,\n onError?: Function,\n ): Promise<ReadStream> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n const release = await this.lock.acquire()\n\n this.driver.connection.logger.logQuery(query, parameters, this)\n const pool = await (this.mode === \"slave\"\n ? this.driver.obtainSlaveConnection()\n : this.driver.obtainMasterConnection())\n const request = new this.driver.mssql.Request(\n this.isTransactionActive ? this.databaseConnection : pool,\n )\n if (parameters && parameters.length) {\n parameters.forEach((parameter, index) => {\n const parameterName = index.toString()\n if (InstanceChecker.isMssqlParameter(parameter)) {\n request.input(\n parameterName,\n this.mssqlParameterToNativeParameter(parameter),\n parameter.value,\n )\n } else {\n request.input(parameterName, parameter)\n }\n })\n }\n\n request.query(query)\n\n const streamRequest = request.toReadableStream()\n\n streamRequest.on(\"error\", (err: any) => {\n release()\n this.driver.connection.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n })\n\n streamRequest.on(\"end\", () => {\n release()\n })\n\n if (onEnd) {\n streamRequest.on(\"end\", onEnd)\n }\n\n if (onError) {\n streamRequest.on(\"error\", onError)\n }\n\n return streamRequest\n }\n\n /**\n * Returns all available database names including system databases.\n */\n async getDatabases(): Promise<string[]> {\n const results: ObjectLiteral[] = await this.query(`EXEC sp_databases`)\n return results.map((result) => result[\"DATABASE_NAME\"])\n }\n\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n */\n async getSchemas(database?: string): Promise<string[]> {\n const query = database\n ? `SELECT * FROM \"${database}\".\"sys\".\"schema\"`\n : `SELECT * FROM \"sys\".\"schemas\"`\n const results: ObjectLiteral[] = await this.query(query)\n return results.map((result) => result[\"name\"])\n }\n\n /**\n * Checks if database with the given name exist.\n */\n async hasDatabase(database: string): Promise<boolean> {\n const result = await this.query(\n `SELECT DB_ID('${database}') as \"db_id\"`,\n )\n const dbId = result[0][\"db_id\"]\n return !!dbId\n }\n\n /**\n * Loads currently using database\n */\n async getCurrentDatabase(): Promise<string> {\n const currentDBQuery = await this.query(`SELECT DB_NAME() AS \"db_name\"`)\n return currentDBQuery[0][\"db_name\"]\n }\n\n /**\n * Checks if schema with the given name exist.\n */\n async hasSchema(schema: string): Promise<boolean> {\n const result = await this.query(\n `SELECT SCHEMA_ID('${schema}') as \"schema_id\"`,\n )\n const schemaId = result[0][\"schema_id\"]\n return !!schemaId\n }\n\n /**\n * Loads currently using database schema\n */\n async getCurrentSchema(): Promise<string> {\n const currentSchemaQuery = await this.query(\n `SELECT SCHEMA_NAME() AS \"schema_name\"`,\n )\n return currentSchemaQuery[0][\"schema_name\"]\n }\n\n /**\n * Checks if table with the given name exist in the database.\n */\n async hasTable(tableOrName: Table | string): Promise<boolean> {\n const parsedTableName = this.driver.parseTableName(tableOrName)\n\n if (!parsedTableName.database) {\n parsedTableName.database = await this.getCurrentDatabase()\n }\n\n if (!parsedTableName.schema) {\n parsedTableName.schema = await this.getCurrentSchema()\n }\n\n const sql = `SELECT * FROM \"${parsedTableName.database}\".\"INFORMATION_SCHEMA\".\"TABLES\" WHERE \"TABLE_NAME\" = '${parsedTableName.tableName}' AND \"TABLE_SCHEMA\" = '${parsedTableName.schema}'`\n const result = await this.query(sql)\n return result.length ? true : false\n }\n\n /**\n * Checks if column exist in the table.\n */\n async hasColumn(\n tableOrName: Table | string,\n columnName: string,\n ): Promise<boolean> {\n const parsedTableName = this.driver.parseTableName(tableOrName)\n\n if (!parsedTableName.database) {\n parsedTableName.database = await this.getCurrentDatabase()\n }\n\n if (!parsedTableName.schema) {\n parsedTableName.schema = await this.getCurrentSchema()\n }\n\n const sql = `SELECT * FROM \"${parsedTableName.database}\".\"INFORMATION_SCHEMA\".\"COLUMNS\" WHERE \"TABLE_NAME\" = '${parsedTableName.tableName}' AND \"TABLE_SCHEMA\" = '${parsedTableName.schema}' AND \"COLUMN_NAME\" = '${columnName}'`\n const result = await this.query(sql)\n return result.length ? true : false\n }\n\n /**\n * Creates a new database.\n */\n async createDatabase(\n database: string,\n ifNotExist?: boolean,\n ): Promise<void> {\n const up = ifNotExist\n ? `IF DB_ID('${database}') IS NULL CREATE DATABASE \"${database}\"`\n : `CREATE DATABASE \"${database}\"`\n const down = `DROP DATABASE \"${database}\"`\n await this.executeQueries(new Query(up), new Query(down))\n }\n\n /**\n * Drops database.\n */\n async dropDatabase(database: string, ifExist?: boolean): Promise<void> {\n const up = ifExist\n ? `IF DB_ID('${database}') IS NOT NULL DROP DATABASE \"${database}\"`\n : `DROP DATABASE \"${database}\"`\n const down = `CREATE DATABASE \"${database}\"`\n await this.executeQueries(new Query(up), new Query(down))\n }\n\n /**\n * Creates table schema.\n * If database name also specified (e.g. 'dbName.schemaName') schema will be created in specified database.\n */\n async createSchema(\n schemaPath: string,\n ifNotExist?: boolean,\n ): Promise<void> {\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n if (schemaPath.indexOf(\".\") === -1) {\n const upQuery = ifNotExist\n ? `IF SCHEMA_ID('${schemaPath}') IS NULL BEGIN EXEC ('CREATE SCHEMA \"${schemaPath}\"') END`\n : `CREATE SCHEMA \"${schemaPath}\"`\n upQueries.push(new Query(upQuery))\n downQueries.push(new Query(`DROP SCHEMA \"${schemaPath}\"`))\n } else {\n const dbName = schemaPath.split(\".\")[0]\n const schema = schemaPath.split(\".\")[1]\n const currentDB = await this.getCurrentDatabase()\n upQueries.push(new Query(`USE \"${dbName}\"`))\n downQueries.push(new Query(`USE \"${currentDB}\"`))\n\n const upQuery = ifNotExist\n ? `IF SCHEMA_ID('${schema}') IS NULL BEGIN EXEC ('CREATE SCHEMA \"${schema}\"') END`\n : `CREATE SCHEMA \"${schema}\"`\n upQueries.push(new Query(upQuery))\n downQueries.push(new Query(`DROP SCHEMA \"${schema}\"`))\n\n upQueries.push(new Query(`USE \"${currentDB}\"`))\n downQueries.push(new Query(`USE \"${dbName}\"`))\n }\n\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Drops table schema.\n * If database name also specified (e.g. 'dbName.schemaName') schema will be dropped in specified database.\n */\n async dropSchema(schemaPath: string, ifExist?: boolean): Promise<void> {\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n if (schemaPath.indexOf(\".\") === -1) {\n const upQuery = ifExist\n ? `IF SCHEMA_ID('${schemaPath}') IS NULL BEGIN EXEC ('DROP SCHEMA \"${schemaPath}\"') END`\n : `DROP SCHEMA \"${schemaPath}\"`\n upQueries.push(new Query(upQuery))\n downQueries.push(new Query(`CREATE SCHEMA \"${schemaPath}\"`))\n } else {\n const dbName = schemaPath.split(\".\")[0]\n const schema = schemaPath.split(\".\")[1]\n const currentDB = await this.getCurrentDatabase()\n upQueries.push(new Query(`USE \"${dbName}\"`))\n downQueries.push(new Query(`USE \"${currentDB}\"`))\n\n const upQuery = ifExist\n ? `IF SCHEMA_ID('${schema}') IS NULL BEGIN EXEC ('DROP SCHEMA \"${schema}\"') END`\n : `DROP SCHEMA \"${schema}\"`\n upQueries.push(new Query(upQuery))\n downQueries.push(new Query(`CREATE SCHEMA \"${schema}\"`))\n\n upQueries.push(new Query(`USE \"${currentDB}\"`))\n downQueries.push(new Query(`USE \"${dbName}\"`))\n }\n\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Creates a new table.\n */\n async createTable(\n table: Table,\n ifNotExist: boolean = false,\n createForeignKeys: boolean = true,\n createIndices: boolean = true,\n ): Promise<void> {\n if (ifNotExist) {\n const isTableExist = await this.hasTable(table)\n if (isTableExist) return Promise.resolve()\n }\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n upQueries.push(this.createTableSql(table, createForeignKeys))\n downQueries.push(this.dropTableSql(table))\n\n // if createForeignKeys is true, we must drop created foreign keys in down query.\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\n if (createForeignKeys)\n table.foreignKeys.forEach((foreignKey) =>\n downQueries.push(this.dropForeignKeySql(table, foreignKey)),\n )\n\n if (createIndices) {\n table.indices.forEach((index) => {\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = this.connection.namingStrategy.indexName(\n table,\n index.columnNames,\n index.where,\n )\n upQueries.push(this.createIndexSql(table, index))\n downQueries.push(this.dropIndexSql(table, index))\n })\n }\n\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Drops the table.\n */\n async dropTable(\n tableOrName: Table | string,\n ifExist?: boolean,\n dropForeignKeys: boolean = true,\n dropIndices: boolean = true,\n ): Promise<void> {\n if (ifExist) {\n const isTableExist = await this.hasTable(tableOrName)\n if (!isTableExist) return Promise.resolve()\n }\n\n // if dropTable called with dropForeignKeys = true, we must create foreign keys in down query.\n const createForeignKeys: boolean = dropForeignKeys\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n // It needs because if table does not exist and dropForeignKeys or dropIndices is true, we don't need\n // to perform drop queries for foreign keys and indices.\n\n if (dropIndices) {\n table.indices.forEach((index) => {\n upQueries.push(this.dropIndexSql(table, index))\n downQueries.push(this.createIndexSql(table, index))\n })\n }\n\n // if dropForeignKeys is true, we just drop the table, otherwise we also drop table foreign keys.\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\n if (dropForeignKeys)\n table.foreignKeys.forEach((foreignKey) =>\n upQueries.push(this.dropForeignKeySql(table, foreignKey)),\n )\n\n upQueries.push(this.dropTableSql(table))\n downQueries.push(this.createTableSql(table, createForeignKeys))\n\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Creates a new view.\n */\n async createView(view: View): Promise<void> {\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n upQueries.push(this.createViewSql(view))\n upQueries.push(await this.insertViewDefinitionSql(view))\n downQueries.push(this.dropViewSql(view))\n downQueries.push(await this.deleteViewDefinitionSql(view))\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Drops the view.\n */\n async dropView(target: View | string): Promise<void> {\n const viewName = InstanceChecker.isView(target) ? target.name : target\n const view = await this.getCachedView(viewName)\n\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n upQueries.push(await this.deleteViewDefinitionSql(view))\n upQueries.push(this.dropViewSql(view))\n downQueries.push(await this.insertViewDefinitionSql(view))\n downQueries.push(this.createViewSql(view))\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Renames a table.\n */\n async renameTable(\n oldTableOrName: Table | string,\n newTableName: string,\n ): Promise<void> {\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n const oldTable = InstanceChecker.isTable(oldTableOrName)\n ? oldTableOrName\n : await this.getCachedTable(oldTableOrName)\n let newTable = oldTable.clone()\n\n // we need database name and schema name to rename FK constraints\n let dbName: string | undefined = undefined\n let schemaName: string | undefined = undefined\n let oldTableName: string = oldTable.name\n const splittedName = oldTable.name.split(\".\")\n if (splittedName.length === 3) {\n dbName = splittedName[0]\n oldTableName = splittedName[2]\n if (splittedName[1] !== \"\") schemaName = splittedName[1]\n } else if (splittedName.length === 2) {\n schemaName = splittedName[0]\n oldTableName = splittedName[1]\n }\n\n newTable.name = this.driver.buildTableName(\n newTableName,\n schemaName,\n dbName,\n )\n\n // if we have tables with database which differs from database specified in config, we must change currently used database.\n // This need because we can not rename objects from another database.\n const currentDB = await this.getCurrentDatabase()\n if (dbName && dbName !== currentDB) {\n upQueries.push(new Query(`USE \"${dbName}\"`))\n downQueries.push(new Query(`USE \"${currentDB}\"`))\n }\n\n // rename table\n upQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(\n oldTable,\n )}\", \"${newTableName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(\n newTable,\n )}\", \"${oldTableName}\"`,\n ),\n )\n\n // rename primary key constraint\n if (newTable.primaryColumns.length > 0) {\n const columnNames = newTable.primaryColumns.map(\n (column) => column.name,\n )\n\n const oldPkName = this.connection.namingStrategy.primaryKeyName(\n oldTable,\n columnNames,\n )\n const newPkName = this.connection.namingStrategy.primaryKeyName(\n newTable,\n columnNames,\n )\n\n // rename primary constraint\n upQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(\n newTable,\n )}.${oldPkName}\", \"${newPkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(\n newTable,\n )}.${newPkName}\", \"${oldPkName}\"`,\n ),\n )\n }\n\n // rename unique constraints\n newTable.uniques.forEach((unique) => {\n // build new constraint name\n const newUniqueName =\n this.connection.namingStrategy.uniqueConstraintName(\n newTable,\n unique.columnNames,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(newTable)}.${\n unique.name\n }\", \"${newUniqueName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(\n newTable,\n )}.${newUniqueName}\", \"${unique.name}\"`,\n ),\n )\n\n // replace constraint name\n unique.name = newUniqueName\n })\n\n // rename index constraints\n newTable.indices.forEach((index) => {\n // build new constraint name\n const newIndexName = this.connection.namingStrategy.indexName(\n newTable,\n index.columnNames,\n index.where,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(newTable)}.${\n index.name\n }\", \"${newIndexName}\", \"INDEX\"`,\n ),\n )\n downQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(\n newTable,\n )}.${newIndexName}\", \"${index.name}\", \"INDEX\"`,\n ),\n )\n\n // replace constraint name\n index.name = newIndexName\n })\n\n // rename foreign key constraints\n newTable.foreignKeys.forEach((foreignKey) => {\n // build new constraint name\n const newForeignKeyName =\n this.connection.namingStrategy.foreignKeyName(\n newTable,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `EXEC sp_rename \"${this.buildForeignKeyName(\n foreignKey.name!,\n schemaName,\n dbName,\n )}\", \"${newForeignKeyName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `EXEC sp_rename \"${this.buildForeignKeyName(\n newForeignKeyName,\n schemaName,\n dbName,\n )}\", \"${foreignKey.name}\"`,\n ),\n )\n\n // replace constraint name\n foreignKey.name = newForeignKeyName\n })\n\n // change currently used database back to default db.\n if (dbName && dbName !== currentDB) {\n upQueries.push(new Query(`USE \"${currentDB}\"`))\n downQueries.push(new Query(`USE \"${dbName}\"`))\n }\n\n await this.executeQueries(upQueries, downQueries)\n\n // rename old table and replace it in cached tabled;\n oldTable.name = newTable.name\n this.replaceCachedTable(oldTable, newTable)\n }\n\n /**\n * Creates a new column from the column in the table.\n */\n async addColumn(\n tableOrName: Table | string,\n column: TableColumn,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const clonedTable = table.clone()\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD ${this.buildCreateColumnSql(\n table,\n column,\n false,\n true,\n )}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} DROP COLUMN \"${\n column.name\n }\"`,\n ),\n )\n\n // create or update primary key constraint\n if (column.isPrimary) {\n const primaryColumns = clonedTable.primaryColumns\n // if table already have primary key, me must drop it and recreate again\n if (primaryColumns.length > 0) {\n const pkName = this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n }\n\n primaryColumns.push(column)\n const pkName = this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n }\n\n // create column index\n const columnIndex = clonedTable.indices.find(\n (index) =>\n index.columnNames.length === 1 &&\n index.columnNames[0] === column.name,\n )\n if (columnIndex) {\n upQueries.push(this.createIndexSql(table, columnIndex))\n downQueries.push(this.dropIndexSql(table, columnIndex))\n }\n\n // create unique constraint\n if (column.isUnique) {\n const uniqueConstraint = new TableUnique({\n name: this.connection.namingStrategy.uniqueConstraintName(\n table,\n [column.name],\n ),\n columnNames: [column.name],\n })\n clonedTable.uniques.push(uniqueConstraint)\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\n uniqueConstraint.name\n }\" UNIQUE (\"${column.name}\")`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${\n uniqueConstraint.name\n }\"`,\n ),\n )\n }\n\n // remove default constraint\n if (column.default !== null && column.default !== undefined) {\n const defaultName =\n this.connection.namingStrategy.defaultConstraintName(\n table,\n column.name,\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${defaultName}\"`,\n ),\n )\n }\n\n await this.executeQueries(upQueries, downQueries)\n\n clonedTable.addColumn(column)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Creates a new columns from the column in the table.\n */\n async addColumns(\n tableOrName: Table | string,\n columns: TableColumn[],\n ): Promise<void> {\n for (const column of columns) {\n await this.addColumn(tableOrName, column)\n }\n }\n\n /**\n * Renames column in the given table.\n */\n async renameColumn(\n tableOrName: Table | string,\n oldTableColumnOrName: TableColumn | string,\n newTableColumnOrName: TableColumn | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const oldColumn = InstanceChecker.isTableColumn(oldTableColumnOrName)\n ? oldTableColumnOrName\n : table.columns.find((c) => c.name === oldTableColumnOrName)\n if (!oldColumn)\n throw new TypeORMError(\n `Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`,\n )\n\n let newColumn: TableColumn | undefined = undefined\n if (InstanceChecker.isTableColumn(newTableColumnOrName)) {\n newColumn = newTableColumnOrName\n } else {\n newColumn = oldColumn.clone()\n newColumn.name = newTableColumnOrName\n }\n\n await this.changeColumn(table, oldColumn, newColumn)\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumn(\n tableOrName: Table | string,\n oldTableColumnOrName: TableColumn | string,\n newColumn: TableColumn,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n let clonedTable = table.clone()\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n const oldColumn = InstanceChecker.isTableColumn(oldTableColumnOrName)\n ? oldTableColumnOrName\n : table.columns.find(\n (column) => column.name === oldTableColumnOrName,\n )\n if (!oldColumn)\n throw new TypeORMError(\n `Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`,\n )\n\n if (\n (newColumn.isGenerated !== oldColumn.isGenerated &&\n newColumn.generationStrategy !== \"uuid\") ||\n newColumn.type !== oldColumn.type ||\n newColumn.length !== oldColumn.length\n ) {\n // SQL Server does not support changing of IDENTITY column, so we must drop column and recreate it again.\n // Also, we recreate column if column type changed\n await this.dropColumn(table, oldColumn)\n await this.addColumn(table, newColumn)\n\n // update cloned table\n clonedTable = table.clone()\n } else {\n if (newColumn.name !== oldColumn.name) {\n // we need database name and schema name to rename FK constraints\n let dbName: string | undefined = undefined\n let schemaName: string | undefined = undefined\n const splittedName = table.name.split(\".\")\n if (splittedName.length === 3) {\n dbName = splittedName[0]\n if (splittedName[1] !== \"\") schemaName = splittedName[1]\n } else if (splittedName.length === 2) {\n schemaName = splittedName[0]\n }\n\n // if we have tables with database which differs from database specified in config, we must change currently used database.\n // This need because we can not rename objects from another database.\n const currentDB = await this.getCurrentDatabase()\n if (dbName && dbName !== currentDB) {\n upQueries.push(new Query(`USE \"${dbName}\"`))\n downQueries.push(new Query(`USE \"${currentDB}\"`))\n }\n\n // rename the column\n upQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(table)}.${\n oldColumn.name\n }\", \"${newColumn.name}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(table)}.${\n newColumn.name\n }\", \"${oldColumn.name}\"`,\n ),\n )\n\n if (oldColumn.isPrimary === true) {\n const primaryColumns = clonedTable.primaryColumns\n\n // build old primary constraint name\n const columnNames = primaryColumns.map(\n (column) => column.name,\n )\n const oldPkName =\n this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n columnNames,\n )\n\n // replace old column name with new column name\n columnNames.splice(columnNames.indexOf(oldColumn.name), 1)\n columnNames.push(newColumn.name)\n\n // build new primary constraint name\n const newPkName =\n this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n columnNames,\n )\n\n // rename primary constraint\n upQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(\n clonedTable,\n )}.${oldPkName}\", \"${newPkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(\n clonedTable,\n )}.${newPkName}\", \"${oldPkName}\"`,\n ),\n )\n }\n\n // rename index constraints\n clonedTable.findColumnIndices(oldColumn).forEach((index) => {\n // build new constraint name\n index.columnNames.splice(\n index.columnNames.indexOf(oldColumn.name),\n 1,\n )\n index.columnNames.push(newColumn.name)\n const newIndexName =\n this.connection.namingStrategy.indexName(\n clonedTable,\n index.columnNames,\n index.where,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(\n clonedTable,\n )}.${index.name}\", \"${newIndexName}\", \"INDEX\"`,\n ),\n )\n downQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(\n clonedTable,\n )}.${newIndexName}\", \"${index.name}\", \"INDEX\"`,\n ),\n )\n\n // replace constraint name\n index.name = newIndexName\n })\n\n // rename foreign key constraints\n clonedTable\n .findColumnForeignKeys(oldColumn)\n .forEach((foreignKey) => {\n // build new constraint name\n foreignKey.columnNames.splice(\n foreignKey.columnNames.indexOf(oldColumn.name),\n 1,\n )\n foreignKey.columnNames.push(newColumn.name)\n const newForeignKeyName =\n this.connection.namingStrategy.foreignKeyName(\n clonedTable,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `EXEC sp_rename \"${this.buildForeignKeyName(\n foreignKey.name!,\n schemaName,\n dbName,\n )}\", \"${newForeignKeyName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `EXEC sp_rename \"${this.buildForeignKeyName(\n newForeignKeyName,\n schemaName,\n dbName,\n )}\", \"${foreignKey.name}\"`,\n ),\n )\n\n // replace constraint name\n foreignKey.name = newForeignKeyName\n })\n\n // rename check constraints\n clonedTable.findColumnChecks(oldColumn).forEach((check) => {\n // build new constraint name\n check.columnNames!.splice(\n check.columnNames!.indexOf(oldColumn.name),\n 1,\n )\n check.columnNames!.push(newColumn.name)\n const newCheckName =\n this.connection.namingStrategy.checkConstraintName(\n clonedTable,\n check.expression!,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(\n clonedTable,\n )}.${check.name}\", \"${newCheckName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(\n clonedTable,\n )}.${newCheckName}\", \"${check.name}\"`,\n ),\n )\n\n // replace constraint name\n check.name = newCheckName\n })\n\n // rename unique constraints\n clonedTable.findColumnUniques(oldColumn).forEach((unique) => {\n // build new constraint name\n unique.columnNames.splice(\n unique.columnNames.indexOf(oldColumn.name),\n 1,\n )\n unique.columnNames.push(newColumn.name)\n const newUniqueName =\n this.connection.namingStrategy.uniqueConstraintName(\n clonedTable,\n unique.columnNames,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(\n clonedTable,\n )}.${unique.name}\", \"${newUniqueName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `EXEC sp_rename \"${this.getTablePath(\n clonedTable,\n )}.${newUniqueName}\", \"${unique.name}\"`,\n ),\n )\n\n // replace constraint name\n unique.name = newUniqueName\n })\n\n // rename default constraints\n if (\n oldColumn.default !== null &&\n oldColumn.default !== undefined\n ) {\n const oldDefaultName =\n this.connection.namingStrategy.defaultConstraintName(\n table,\n oldColumn.name,\n )\n const newDefaultName =\n this.connection.namingStrategy.defaultConstraintName(\n table,\n newColumn.name,\n )\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${oldDefaultName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${oldDefaultName}\" DEFAULT ${\n oldColumn.default\n } FOR \"${newColumn.name}\"`,\n ),\n )\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${newDefaultName}\" DEFAULT ${\n oldColumn.default\n } FOR \"${newColumn.name}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${newDefaultName}\"`,\n ),\n )\n }\n\n // change currently used database back to default db.\n if (dbName && dbName !== currentDB) {\n upQueries.push(new Query(`USE \"${currentDB}\"`))\n downQueries.push(new Query(`USE \"${dbName}\"`))\n }\n\n // rename old column in the Table object\n const oldTableColumn = clonedTable.columns.find(\n (column) => column.name === oldColumn.name,\n )\n clonedTable.columns[\n clonedTable.columns.indexOf(oldTableColumn!)\n ].name = newColumn.name\n oldColumn.name = newColumn.name\n }\n\n if (this.isColumnChanged(oldColumn, newColumn, false)) {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN ${this.buildCreateColumnSql(\n table,\n newColumn,\n true,\n false,\n )}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN ${this.buildCreateColumnSql(\n table,\n oldColumn,\n true,\n false,\n )}`,\n ),\n )\n }\n\n if (newColumn.isPrimary !== oldColumn.isPrimary) {\n const primaryColumns = clonedTable.primaryColumns\n\n // if primary column state changed, we must always drop existed constraint.\n if (primaryColumns.length > 0) {\n const pkName =\n this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n }\n\n if (newColumn.isPrimary === true) {\n primaryColumns.push(newColumn)\n // update column in table\n const column = clonedTable.columns.find(\n (column) => column.name === newColumn.name,\n )\n column!.isPrimary = true\n const pkName =\n this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n } else {\n const primaryColumn = primaryColumns.find(\n (c) => c.name === newColumn.name,\n )\n primaryColumns.splice(\n primaryColumns.indexOf(primaryColumn!),\n 1,\n )\n\n // update column in table\n const column = clonedTable.columns.find(\n (column) => column.name === newColumn.name,\n )\n column!.isPrimary = false\n\n // if we have another primary keys, we must recreate constraint.\n if (primaryColumns.length > 0) {\n const pkName =\n this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n }\n }\n }\n\n if (newColumn.isUnique !== oldColumn.isUnique) {\n if (newColumn.isUnique === true) {\n const uniqueConstraint = new TableUnique({\n name: this.connection.namingStrategy.uniqueConstraintName(\n table,\n [newColumn.name],\n ),\n columnNames: [newColumn.name],\n })\n clonedTable.uniques.push(uniqueConstraint)\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${\n uniqueConstraint.name\n }\" UNIQUE (\"${newColumn.name}\")`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${uniqueConstraint.name}\"`,\n ),\n )\n } else {\n const uniqueConstraint = clonedTable.uniques.find(\n (unique) => {\n return (\n unique.columnNames.length === 1 &&\n !!unique.columnNames.find(\n (columnName) =>\n columnName === newColumn.name,\n )\n )\n },\n )\n clonedTable.uniques.splice(\n clonedTable.uniques.indexOf(uniqueConstraint!),\n 1,\n )\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${uniqueConstraint!.name}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${\n uniqueConstraint!.name\n }\" UNIQUE (\"${newColumn.name}\")`,\n ),\n )\n }\n }\n\n if (newColumn.default !== oldColumn.default) {\n // (note) if there is a previous default, we need to drop its constraint first\n if (\n oldColumn.default !== null &&\n oldColumn.default !== undefined\n ) {\n const defaultName =\n this.connection.namingStrategy.defaultConstraintName(\n table,\n oldColumn.name,\n )\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${defaultName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${defaultName}\" DEFAULT ${\n oldColumn.default\n } FOR \"${oldColumn.name}\"`,\n ),\n )\n }\n\n if (\n newColumn.default !== null &&\n newColumn.default !== undefined\n ) {\n const defaultName =\n this.connection.namingStrategy.defaultConstraintName(\n table,\n newColumn.name,\n )\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${defaultName}\" DEFAULT ${\n newColumn.default\n } FOR \"${newColumn.name}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${defaultName}\"`,\n ),\n )\n }\n }\n\n await this.executeQueries(upQueries, downQueries)\n this.replaceCachedTable(table, clonedTable)\n }\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumns(\n tableOrName: Table | string,\n changedColumns: { newColumn: TableColumn; oldColumn: TableColumn }[],\n ): Promise<void> {\n for (const { oldColumn, newColumn } of changedColumns) {\n await this.changeColumn(tableOrName, oldColumn, newColumn)\n }\n }\n\n /**\n * Drops column in the table.\n */\n async dropColumn(\n tableOrName: Table | string,\n columnOrName: TableColumn | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const column = InstanceChecker.isTableColumn(columnOrName)\n ? columnOrName\n : table.findColumnByName(columnOrName)\n if (!column)\n throw new TypeORMError(\n `Column \"${columnOrName}\" was not found in table \"${table.name}\"`,\n )\n\n const clonedTable = table.clone()\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n // drop primary key constraint\n if (column.isPrimary) {\n const pkName = this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n clonedTable.primaryColumns.map((column) => column.name),\n )\n const columnNames = clonedTable.primaryColumns\n .map((primaryColumn) => `\"${primaryColumn.name}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n clonedTable,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n clonedTable,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n\n // update column in table\n const tableColumn = clonedTable.findColumnByName(column.name)\n tableColumn!.isPrimary = false\n\n // if primary key have multiple columns, we must recreate it without dropped column\n if (clonedTable.primaryColumns.length > 0) {\n const pkName = this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n clonedTable.primaryColumns.map((column) => column.name),\n )\n const columnNames = clonedTable.primaryColumns\n .map((primaryColumn) => `\"${primaryColumn.name}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n clonedTable,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n clonedTable,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n }\n }\n\n // drop column index\n const columnIndex = clonedTable.indices.find(\n (index) =>\n index.columnNames.length === 1 &&\n index.columnNames[0] === column.name,\n )\n if (columnIndex) {\n clonedTable.indices.splice(\n clonedTable.indices.indexOf(columnIndex),\n 1,\n )\n upQueries.push(this.dropIndexSql(table, columnIndex))\n downQueries.push(this.createIndexSql(table, columnIndex))\n }\n\n // drop column check\n const columnCheck = clonedTable.checks.find(\n (check) =>\n !!check.columnNames &&\n check.columnNames.length === 1 &&\n check.columnNames[0] === column.name,\n )\n if (columnCheck) {\n clonedTable.checks.splice(\n clonedTable.checks.indexOf(columnCheck),\n 1,\n )\n upQueries.push(this.dropCheckConstraintSql(table, columnCheck))\n downQueries.push(this.createCheckConstraintSql(table, columnCheck))\n }\n\n // drop column unique\n const columnUnique = clonedTable.uniques.find(\n (unique) =>\n unique.columnNames.length === 1 &&\n unique.columnNames[0] === column.name,\n )\n if (columnUnique) {\n clonedTable.uniques.splice(\n clonedTable.uniques.indexOf(columnUnique),\n 1,\n )\n upQueries.push(this.dropUniqueConstraintSql(table, columnUnique))\n downQueries.push(\n this.createUniqueConstraintSql(table, columnUnique),\n )\n }\n\n // drop default constraint\n if (column.default !== null && column.default !== undefined) {\n const defaultName =\n this.connection.namingStrategy.defaultConstraintName(\n table,\n column.name,\n )\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${defaultName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${defaultName}\" DEFAULT ${\n column.default\n } FOR \"${column.name}\"`,\n ),\n )\n }\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} DROP COLUMN \"${\n column.name\n }\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD ${this.buildCreateColumnSql(\n table,\n column,\n false,\n false,\n )}`,\n ),\n )\n\n await this.executeQueries(upQueries, downQueries)\n\n clonedTable.removeColumn(column)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Drops the columns in the table.\n */\n async dropColumns(\n tableOrName: Table | string,\n columns: TableColumn[] | string[],\n ): Promise<void> {\n for (const column of columns) {\n await this.dropColumn(tableOrName, column)\n }\n }\n\n /**\n * Creates a new primary key.\n */\n async createPrimaryKey(\n tableOrName: Table | string,\n columnNames: string[],\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const clonedTable = table.clone()\n\n const up = this.createPrimaryKeySql(table, columnNames)\n\n // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.\n clonedTable.columns.forEach((column) => {\n if (columnNames.find((columnName) => columnName === column.name))\n column.isPrimary = true\n })\n const down = this.dropPrimaryKeySql(clonedTable)\n\n await this.executeQueries(up, down)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Updates composite primary keys.\n */\n async updatePrimaryKeys(\n tableOrName: Table | string,\n columns: TableColumn[],\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const clonedTable = table.clone()\n const columnNames = columns.map((column) => column.name)\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n // if table already have primary columns, we must drop them.\n const primaryColumns = clonedTable.primaryColumns\n if (primaryColumns.length > 0) {\n const pkName = this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n const columnNamesString = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNamesString})`,\n ),\n )\n }\n\n // update columns in table.\n clonedTable.columns\n .filter((column) => columnNames.indexOf(column.name) !== -1)\n .forEach((column) => (column.isPrimary = true))\n\n const pkName = this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n columnNames,\n )\n const columnNamesString = columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNamesString})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n\n await this.executeQueries(upQueries, downQueries)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Drops a primary key.\n */\n async dropPrimaryKey(tableOrName: Table | string): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const up = this.dropPrimaryKeySql(table)\n const down = this.createPrimaryKeySql(\n table,\n table.primaryColumns.map((column) => column.name),\n )\n await this.executeQueries(up, down)\n table.primaryColumns.forEach((column) => {\n column.isPrimary = false\n })\n }\n\n /**\n * Creates a new unique constraint.\n */\n async createUniqueConstraint(\n tableOrName: Table | string,\n uniqueConstraint: TableUnique,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!uniqueConstraint.name)\n uniqueConstraint.name =\n this.connection.namingStrategy.uniqueConstraintName(\n table,\n uniqueConstraint.columnNames,\n )\n\n const up = this.createUniqueConstraintSql(table, uniqueConstraint)\n const down = this.dropUniqueConstraintSql(table, uniqueConstraint)\n await this.executeQueries(up, down)\n table.addUniqueConstraint(uniqueConstraint)\n }\n\n /**\n * Creates a new unique constraints.\n */\n async createUniqueConstraints(\n tableOrName: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void> {\n const promises = uniqueConstraints.map((uniqueConstraint) =>\n this.createUniqueConstraint(tableOrName, uniqueConstraint),\n )\n await Promise.all(promises)\n }\n\n /**\n * Drops unique constraint.\n */\n async dropUniqueConstraint(\n tableOrName: Table | string,\n uniqueOrName: TableUnique | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const uniqueConstraint = InstanceChecker.isTableUnique(uniqueOrName)\n ? uniqueOrName\n : table.uniques.find((u) => u.name === uniqueOrName)\n if (!uniqueConstraint)\n throw new TypeORMError(\n `Supplied unique constraint was not found in table ${table.name}`,\n )\n\n const up = this.dropUniqueConstraintSql(table, uniqueConstraint)\n const down = this.createUniqueConstraintSql(table, uniqueConstraint)\n await this.executeQueries(up, down)\n table.removeUniqueConstraint(uniqueConstraint)\n }\n\n /**\n * Drops an unique constraints.\n */\n async dropUniqueConstraints(\n tableOrName: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void> {\n const promises = uniqueConstraints.map((uniqueConstraint) =>\n this.dropUniqueConstraint(tableOrName, uniqueConstraint),\n )\n await Promise.all(promises)\n }\n\n /**\n * Creates a new check constraint.\n */\n async createCheckConstraint(\n tableOrName: Table | string,\n checkConstraint: TableCheck,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!checkConstraint.name)\n checkConstraint.name =\n this.connection.namingStrategy.checkConstraintName(\n table,\n checkConstraint.expression!,\n )\n\n const up = this.createCheckConstraintSql(table, checkConstraint)\n const down = this.dropCheckConstraintSql(table, checkConstraint)\n await this.executeQueries(up, down)\n table.addCheckConstraint(checkConstraint)\n }\n\n /**\n * Creates a new check constraints.\n */\n async createCheckConstraints(\n tableOrName: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void> {\n const promises = checkConstraints.map((checkConstraint) =>\n this.createCheckConstraint(tableOrName, checkConstraint),\n )\n await Promise.all(promises)\n }\n\n /**\n * Drops check constraint.\n */\n async dropCheckConstraint(\n tableOrName: Table | string,\n checkOrName: TableCheck | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const checkConstraint = InstanceChecker.isTableCheck(checkOrName)\n ? checkOrName\n : table.checks.find((c) => c.name === checkOrName)\n if (!checkConstraint)\n throw new TypeORMError(\n `Supplied check constraint was not found in table ${table.name}`,\n )\n\n const up = this.dropCheckConstraintSql(table, checkConstraint)\n const down = this.createCheckConstraintSql(table, checkConstraint)\n await this.executeQueries(up, down)\n table.removeCheckConstraint(checkConstraint)\n }\n\n /**\n * Drops check constraints.\n */\n async dropCheckConstraints(\n tableOrName: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void> {\n const promises = checkConstraints.map((checkConstraint) =>\n this.dropCheckConstraint(tableOrName, checkConstraint),\n )\n await Promise.all(promises)\n }\n\n /**\n * Creates a new exclusion constraint.\n */\n async createExclusionConstraint(\n tableOrName: Table | string,\n exclusionConstraint: TableExclusion,\n ): Promise<void> {\n throw new TypeORMError(\n `SqlServer does not support exclusion constraints.`,\n )\n }\n\n /**\n * Creates a new exclusion constraints.\n */\n async createExclusionConstraints(\n tableOrName: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void> {\n throw new TypeORMError(\n `SqlServer does not support exclusion constraints.`,\n )\n }\n\n /**\n * Drops exclusion constraint.\n */\n async dropExclusionConstraint(\n tableOrName: Table | string,\n exclusionOrName: TableExclusion | string,\n ): Promise<void> {\n throw new TypeORMError(\n `SqlServer does not support exclusion constraints.`,\n )\n }\n\n /**\n * Drops exclusion constraints.\n */\n async dropExclusionConstraints(\n tableOrName: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void> {\n throw new TypeORMError(\n `SqlServer does not support exclusion constraints.`,\n )\n }\n\n /**\n * Creates a new foreign key.\n */\n async createForeignKey(\n tableOrName: Table | string,\n foreignKey: TableForeignKey,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const metadata = this.connection.hasMetadata(table.name)\n ? this.connection.getMetadata(table.name)\n : undefined\n\n if (\n metadata &&\n metadata.treeParentRelation &&\n metadata.treeParentRelation!.isTreeParent &&\n metadata.foreignKeys.find(\n (foreignKey) => foreignKey.onDelete !== \"NO ACTION\",\n )\n )\n throw new TypeORMError(\n \"SqlServer does not support options in TreeParent.\",\n )\n\n // new FK may be passed without name. In this case we generate FK name manually.\n if (!foreignKey.name)\n foreignKey.name = this.connection.namingStrategy.foreignKeyName(\n table,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n const up = this.createForeignKeySql(table, foreignKey)\n const down = this.dropForeignKeySql(table, foreignKey)\n await this.executeQueries(up, down)\n table.addForeignKey(foreignKey)\n }\n\n /**\n * Creates a new foreign keys.\n */\n async createForeignKeys(\n tableOrName: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void> {\n const promises = foreignKeys.map((foreignKey) =>\n this.createForeignKey(tableOrName, foreignKey),\n )\n await Promise.all(promises)\n }\n\n /**\n * Drops a foreign key from the table.\n */\n async dropForeignKey(\n tableOrName: Table | string,\n foreignKeyOrName: TableForeignKey | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const foreignKey = InstanceChecker.isTableForeignKey(foreignKeyOrName)\n ? foreignKeyOrName\n : table.foreignKeys.find((fk) => fk.name === foreignKeyOrName)\n if (!foreignKey)\n throw new TypeORMError(\n `Supplied foreign key was not found in table ${table.name}`,\n )\n\n const up = this.dropForeignKeySql(table, foreignKey)\n const down = this.createForeignKeySql(table, foreignKey)\n await this.executeQueries(up, down)\n table.removeForeignKey(foreignKey)\n }\n\n /**\n * Drops a foreign keys from the table.\n */\n async dropForeignKeys(\n tableOrName: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void> {\n const promises = foreignKeys.map((foreignKey) =>\n this.dropForeignKey(tableOrName, foreignKey),\n )\n await Promise.all(promises)\n }\n\n /**\n * Creates a new index.\n */\n async createIndex(\n tableOrName: Table | string,\n index: TableIndex,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = this.connection.namingStrategy.indexName(\n table,\n index.columnNames,\n index.where,\n )\n\n const up = this.createIndexSql(table, index)\n const down = this.dropIndexSql(table, index)\n await this.executeQueries(up, down)\n table.addIndex(index)\n }\n\n /**\n * Creates a new indices\n */\n async createIndices(\n tableOrName: Table | string,\n indices: TableIndex[],\n ): Promise<void> {\n const promises = indices.map((index) =>\n this.createIndex(tableOrName, index),\n )\n await Promise.all(promises)\n }\n\n /**\n * Drops an index.\n */\n async dropIndex(\n tableOrName: Table | string,\n indexOrName: TableIndex | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const index = InstanceChecker.isTableIndex(indexOrName)\n ? indexOrName\n : table.indices.find((i) => i.name === indexOrName)\n if (!index)\n throw new TypeORMError(\n `Supplied index was not found in table ${table.name}`,\n )\n\n const up = this.dropIndexSql(table, index)\n const down = this.createIndexSql(table, index)\n await this.executeQueries(up, down)\n table.removeIndex(index)\n }\n\n /**\n * Drops an indices from the table.\n */\n async dropIndices(\n tableOrName: Table | string,\n indices: TableIndex[],\n ): Promise<void> {\n const promises = indices.map((index) =>\n this.dropIndex(tableOrName, index),\n )\n await Promise.all(promises)\n }\n\n /**\n * Clears all table contents.\n * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions.\n */\n async clearTable(tablePath: string): Promise<void> {\n await this.query(`TRUNCATE TABLE ${this.escapePath(tablePath)}`)\n }\n\n /**\n * Removes all tables from the currently connected database.\n */\n async clearDatabase(database?: string): Promise<void> {\n if (database) {\n const isDatabaseExist = await this.hasDatabase(database)\n if (!isDatabaseExist) return Promise.resolve()\n }\n\n const isAnotherTransactionActive = this.isTransactionActive\n if (!isAnotherTransactionActive) await this.startTransaction()\n try {\n let allViewsSql = database\n ? `SELECT * FROM \"${database}\".\"INFORMATION_SCHEMA\".\"VIEWS\"`\n : `SELECT * FROM \"INFORMATION_SCHEMA\".\"VIEWS\"`\n const allViewsResults: ObjectLiteral[] = await this.query(\n allViewsSql,\n )\n\n await Promise.all(\n allViewsResults.map((viewResult) => {\n // 'DROP VIEW' does not allow specifying the database name as a prefix to the object name.\n const dropTableSql = `DROP VIEW \"${viewResult[\"TABLE_SCHEMA\"]}\".\"${viewResult[\"TABLE_NAME\"]}\"`\n return this.query(dropTableSql)\n }),\n )\n\n let allTablesSql = database\n ? `SELECT * FROM \"${database}\".\"INFORMATION_SCHEMA\".\"TABLES\" WHERE \"TABLE_TYPE\" = 'BASE TABLE'`\n : `SELECT * FROM \"INFORMATION_SCHEMA\".\"TABLES\" WHERE \"TABLE_TYPE\" = 'BASE TABLE'`\n const allTablesResults: ObjectLiteral[] = await this.query(\n allTablesSql,\n )\n\n if (allTablesResults.length > 0) {\n const tablesByCatalog: {\n [key: string]: {\n TABLE_NAME: string\n TABLE_SCHEMA: string\n }[]\n } = allTablesResults.reduce(\n (c, { TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME }) => {\n c[TABLE_CATALOG] = c[TABLE_CATALOG] || []\n c[TABLE_CATALOG].push({ TABLE_SCHEMA, TABLE_NAME })\n return c\n },\n {},\n )\n\n const foreignKeysSql = Object.entries(tablesByCatalog)\n .map(([TABLE_CATALOG, tables]) => {\n const conditions = tables\n .map(({ TABLE_SCHEMA, TABLE_NAME }) => {\n return `(\"fk\".\"referenced_object_id\" = OBJECT_ID('\"${TABLE_CATALOG}\".\"${TABLE_SCHEMA}\".\"${TABLE_NAME}\"'))`\n })\n .join(\" OR \")\n\n return `\n SELECT DISTINCT '${TABLE_CATALOG}' AS \"TABLE_CATALOG\",\n OBJECT_SCHEMA_NAME(\"fk\".\"parent_object_id\",\n DB_ID('${TABLE_CATALOG}')) AS \"TABLE_SCHEMA\",\n OBJECT_NAME(\"fk\".\"parent_object_id\", DB_ID('${TABLE_CATALOG}')) AS \"TABLE_NAME\",\n \"fk\".\"name\" AS \"CONSTRAINT_NAME\"\n FROM \"${TABLE_CATALOG}\".\"sys\".\"foreign_keys\" AS \"fk\"\n WHERE (${conditions})\n `\n })\n .join(\" UNION ALL \")\n\n const foreignKeys: {\n TABLE_CATALOG: string\n TABLE_SCHEMA: string\n TABLE_NAME: string\n CONSTRAINT_NAME: string\n }[] = await this.query(foreignKeysSql)\n\n await Promise.all(\n foreignKeys.map(\n async ({\n TABLE_CATALOG,\n TABLE_SCHEMA,\n TABLE_NAME,\n CONSTRAINT_NAME,\n }) => {\n // Disable the constraint first.\n await this.query(\n `ALTER TABLE \"${TABLE_CATALOG}\".\"${TABLE_SCHEMA}\".\"${TABLE_NAME}\" ` +\n `NOCHECK CONSTRAINT \"${CONSTRAINT_NAME}\"`,\n )\n\n await this.query(\n `ALTER TABLE \"${TABLE_CATALOG}\".\"${TABLE_SCHEMA}\".\"${TABLE_NAME}\" ` +\n `DROP CONSTRAINT \"${CONSTRAINT_NAME}\" -- FROM CLEAR`,\n )\n },\n ),\n )\n\n await Promise.all(\n allTablesResults.map((tablesResult) => {\n if (tablesResult[\"TABLE_NAME\"].startsWith(\"#\")) {\n // don't try to drop temporary tables\n return\n }\n\n const dropTableSql = `DROP TABLE \"${tablesResult[\"TABLE_CATALOG\"]}\".\"${tablesResult[\"TABLE_SCHEMA\"]}\".\"${tablesResult[\"TABLE_NAME\"]}\"`\n return this.query(dropTableSql)\n }),\n )\n }\n\n if (!isAnotherTransactionActive) await this.commitTransaction()\n } catch (error) {\n try {\n // we throw original error even if rollback thrown an error\n if (!isAnotherTransactionActive)\n await this.rollbackTransaction()\n } catch (rollbackError) {}\n throw error\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n protected async loadViews(viewPaths?: string[]): Promise<View[]> {\n const hasTable = await this.hasTable(this.getTypeormMetadataTableName())\n if (!hasTable) {\n return []\n }\n\n if (!viewPaths) {\n viewPaths = []\n }\n\n const currentSchema = await this.getCurrentSchema()\n const currentDatabase = await this.getCurrentDatabase()\n\n const dbNames = viewPaths\n .map((viewPath) => this.driver.parseTableName(viewPath).database)\n .filter((database) => database)\n\n if (\n this.driver.database &&\n !dbNames.find((dbName) => dbName === this.driver.database)\n )\n dbNames.push(this.driver.database)\n\n const viewsCondition = viewPaths\n .map((viewPath) => {\n let { schema, tableName: name } =\n this.driver.parseTableName(viewPath)\n\n if (!schema) {\n schema = currentSchema\n }\n return `(\"T\".\"SCHEMA\" = '${schema}' AND \"T\".\"NAME\" = '${name}')`\n })\n .join(\" OR \")\n\n const query = dbNames\n .map((dbName) => {\n return (\n `SELECT \"T\".*, \"V\".\"CHECK_OPTION\" FROM ${this.escapePath(\n this.getTypeormMetadataTableName(),\n )} \"t\" ` +\n `INNER JOIN \"${dbName}\".\"INFORMATION_SCHEMA\".\"VIEWS\" \"V\" ON \"V\".\"TABLE_SCHEMA\" = \"T\".\"SCHEMA\" AND \"v\".\"TABLE_NAME\" = \"T\".\"NAME\" WHERE \"T\".\"TYPE\" = '${\n MetadataTableType.VIEW\n }' ${viewsCondition ? `AND (${viewsCondition})` : \"\"}`\n )\n })\n .join(\" UNION ALL \")\n\n const dbViews = await this.query(query)\n return dbViews.map((dbView: any) => {\n const view = new View()\n const db =\n dbView[\"TABLE_CATALOG\"] === currentDatabase\n ? undefined\n : dbView[\"TABLE_CATALOG\"]\n const schema =\n dbView[\"schema\"] === currentSchema &&\n !this.driver.options.schema\n ? undefined\n : dbView[\"schema\"]\n view.database = dbView[\"TABLE_CATALOG\"]\n view.schema = dbView[\"schema\"]\n view.name = this.driver.buildTableName(dbView[\"name\"], schema, db)\n view.expression = dbView[\"value\"]\n return view\n })\n }\n\n /**\n * Loads all tables (with given names) from the database and creates a Table from them.\n */\n protected async loadTables(tableNames?: string[]): Promise<Table[]> {\n // if no tables given then no need to proceed\n if (tableNames && tableNames.length === 0) {\n return []\n }\n\n const currentSchema = await this.getCurrentSchema()\n const currentDatabase = await this.getCurrentDatabase()\n\n const dbTables: {\n TABLE_CATALOG: string\n TABLE_SCHEMA: string\n TABLE_NAME: string\n }[] = []\n\n if (!tableNames) {\n const databasesSql = `\n SELECT DISTINCT\n \"name\"\n FROM \"master\".\"dbo\".\"sysdatabases\"\n WHERE \"name\" NOT IN ('master', 'model', 'msdb')\n `\n const dbDatabases: { name: string }[] = await this.query(\n databasesSql,\n )\n\n const tablesSql = dbDatabases\n .map(({ name }) => {\n return `\n SELECT DISTINCT\n \"TABLE_CATALOG\", \"TABLE_SCHEMA\", \"TABLE_NAME\"\n FROM \"${name}\".\"INFORMATION_SCHEMA\".\"TABLES\"\n WHERE\n \"TABLE_TYPE\" = 'BASE TABLE'\n AND\n \"TABLE_CATALOG\" = '${name}'\n AND\n ISNULL(Objectproperty(Object_id(\"TABLE_CATALOG\" + '.' + \"TABLE_SCHEMA\" + '.' + \"TABLE_NAME\"), 'IsMSShipped'), 0) = 0\n `\n })\n .join(\" UNION ALL \")\n\n dbTables.push(...(await this.query(tablesSql)))\n } else {\n const tableNamesByCatalog = tableNames\n .map((tableName) => this.driver.parseTableName(tableName))\n .reduce((c, { database, ...other }) => {\n database = database || currentDatabase\n c[database] = c[database] || []\n c[database].push({\n schema: other.schema || currentSchema,\n tableName: other.tableName,\n })\n return c\n }, {} as { [key: string]: { schema: string; tableName: string }[] })\n\n const tablesSql = Object.entries(tableNamesByCatalog)\n .map(([database, tables]) => {\n const tablesCondition = tables\n .map(({ schema, tableName }) => {\n return `(\"TABLE_SCHEMA\" = '${schema}' AND \"TABLE_NAME\" = '${tableName}')`\n })\n .join(\" OR \")\n\n return `\n SELECT DISTINCT\n \"TABLE_CATALOG\", \"TABLE_SCHEMA\", \"TABLE_NAME\"\n FROM \"${database}\".\"INFORMATION_SCHEMA\".\"TABLES\"\n WHERE\n \"TABLE_TYPE\" = 'BASE TABLE' AND\n \"TABLE_CATALOG\" = '${database}' AND\n ${tablesCondition}\n `\n })\n .join(\" UNION ALL \")\n\n dbTables.push(...(await this.query(tablesSql)))\n }\n\n // if tables were not found in the db, no need to proceed\n if (dbTables.length === 0) {\n return []\n }\n\n const dbTablesByCatalog = dbTables.reduce(\n (c, { TABLE_CATALOG, ...other }) => {\n c[TABLE_CATALOG] = c[TABLE_CATALOG] || []\n c[TABLE_CATALOG].push(other)\n return c\n },\n {} as {\n [key: string]: { TABLE_NAME: string; TABLE_SCHEMA: string }[]\n },\n )\n\n const columnsSql = Object.entries(dbTablesByCatalog)\n .map(([TABLE_CATALOG, tables]) => {\n const condition = tables\n .map(\n ({ TABLE_SCHEMA, TABLE_NAME }) =>\n `(\"TABLE_SCHEMA\" = '${TABLE_SCHEMA}' AND \"TABLE_NAME\" = '${TABLE_NAME}')`,\n )\n .join(\"OR\")\n\n return `SELECT * FROM \"${TABLE_CATALOG}\".\"INFORMATION_SCHEMA\".\"COLUMNS\" WHERE (${condition})`\n })\n .join(\" UNION ALL \")\n\n const constraintsSql = Object.entries(dbTablesByCatalog)\n .map(([TABLE_CATALOG, tables]) => {\n const conditions = tables\n .map(\n ({ TABLE_NAME, TABLE_SCHEMA }) =>\n `(\"columnUsages\".\"TABLE_SCHEMA\" = '${TABLE_SCHEMA}' AND \"columnUsages\".\"TABLE_NAME\" = '${TABLE_NAME}')`,\n )\n .join(\" OR \")\n\n return (\n `SELECT \"columnUsages\".*, \"tableConstraints\".\"CONSTRAINT_TYPE\", \"chk\".\"definition\" ` +\n `FROM \"${TABLE_CATALOG}\".\"INFORMATION_SCHEMA\".\"CONSTRAINT_COLUMN_USAGE\" \"columnUsages\" ` +\n `INNER JOIN \"${TABLE_CATALOG}\".\"INFORMATION_SCHEMA\".\"TABLE_CONSTRAINTS\" \"tableConstraints\" ` +\n `ON ` +\n `\"tableConstraints\".\"CONSTRAINT_NAME\" = \"columnUsages\".\"CONSTRAINT_NAME\" AND ` +\n `\"tableConstraints\".\"TABLE_SCHEMA\" = \"columnUsages\".\"TABLE_SCHEMA\" AND ` +\n `\"tableConstraints\".\"TABLE_NAME\" = \"columnUsages\".\"TABLE_NAME\" ` +\n `LEFT JOIN \"${TABLE_CATALOG}\".\"sys\".\"check_constraints\" \"chk\" ` +\n `ON ` +\n `\"chk\".\"object_id\" = OBJECT_ID(\"columnUsages\".\"TABLE_CATALOG\" + '.' + \"columnUsages\".\"TABLE_SCHEMA\" + '.' + \"columnUsages\".\"CONSTRAINT_NAME\") ` +\n `WHERE ` +\n `(${conditions}) AND ` +\n `\"tableConstraints\".\"CONSTRAINT_TYPE\" IN ('PRIMARY KEY', 'UNIQUE', 'CHECK')`\n )\n })\n .join(\" UNION ALL \")\n\n const foreignKeysSql = Object.entries(dbTablesByCatalog)\n .map(([TABLE_CATALOG, tables]) => {\n const conditions = tables\n .map(\n ({ TABLE_NAME, TABLE_SCHEMA }) =>\n `(\"s1\".\"name\" = '${TABLE_SCHEMA}' AND \"t1\".\"name\" = '${TABLE_NAME}')`,\n )\n .join(\" OR \")\n\n return (\n `SELECT \"fk\".\"name\" AS \"FK_NAME\", '${TABLE_CATALOG}' AS \"TABLE_CATALOG\", \"s1\".\"name\" AS \"TABLE_SCHEMA\", \"t1\".\"name\" AS \"TABLE_NAME\", ` +\n `\"col1\".\"name\" AS \"COLUMN_NAME\", \"s2\".\"name\" AS \"REF_SCHEMA\", \"t2\".\"name\" AS \"REF_TABLE\", \"col2\".\"name\" AS \"REF_COLUMN\", ` +\n `\"fk\".\"delete_referential_action_desc\" AS \"ON_DELETE\", \"fk\".\"update_referential_action_desc\" AS \"ON_UPDATE\" ` +\n `FROM \"${TABLE_CATALOG}\".\"sys\".\"foreign_keys\" \"fk\" ` +\n `INNER JOIN \"${TABLE_CATALOG}\".\"sys\".\"foreign_key_columns\" \"fkc\" ON \"fkc\".\"constraint_object_id\" = \"fk\".\"object_id\" ` +\n `INNER JOIN \"${TABLE_CATALOG}\".\"sys\".\"tables\" \"t1\" ON \"t1\".\"object_id\" = \"fk\".\"parent_object_id\" ` +\n `INNER JOIN \"${TABLE_CATALOG}\".\"sys\".\"schemas\" \"s1\" ON \"s1\".\"schema_id\" = \"t1\".\"schema_id\" ` +\n `INNER JOIN \"${TABLE_CATALOG}\".\"sys\".\"tables\" \"t2\" ON \"t2\".\"object_id\" = \"fk\".\"referenced_object_id\" ` +\n `INNER JOIN \"${TABLE_CATALOG}\".\"sys\".\"schemas\" \"s2\" ON \"s2\".\"schema_id\" = \"t2\".\"schema_id\" ` +\n `INNER JOIN \"${TABLE_CATALOG}\".\"sys\".\"columns\" \"col1\" ON \"col1\".\"column_id\" = \"fkc\".\"parent_column_id\" AND \"col1\".\"object_id\" = \"fk\".\"parent_object_id\" ` +\n `INNER JOIN \"${TABLE_CATALOG}\".\"sys\".\"columns\" \"col2\" ON \"col2\".\"column_id\" = \"fkc\".\"referenced_column_id\" AND \"col2\".\"object_id\" = \"fk\".\"referenced_object_id\" ` +\n `WHERE (${conditions})`\n )\n })\n .join(\" UNION ALL \")\n\n const identityColumnsSql = Object.entries(dbTablesByCatalog)\n .map(([TABLE_CATALOG, tables]) => {\n const conditions = tables\n .map(\n ({ TABLE_NAME, TABLE_SCHEMA }) =>\n `(\"TABLE_SCHEMA\" = '${TABLE_SCHEMA}' AND \"TABLE_NAME\" = '${TABLE_NAME}')`,\n )\n .join(\" OR \")\n\n return (\n `SELECT \"TABLE_CATALOG\", \"TABLE_SCHEMA\", \"COLUMN_NAME\", \"TABLE_NAME\" ` +\n `FROM \"${TABLE_CATALOG}\".\"INFORMATION_SCHEMA\".\"COLUMNS\" ` +\n `WHERE ` +\n `EXISTS(SELECT 1 FROM \"${TABLE_CATALOG}\".\"sys\".\"columns\" \"S\" WHERE OBJECT_ID(\"TABLE_CATALOG\" + '.' + \"TABLE_SCHEMA\" + '.' + \"TABLE_NAME\") = \"S\".\"OBJECT_ID\" AND \"COLUMN_NAME\" = \"S\".\"NAME\" AND \"S\".\"is_identity\" = 1) AND ` +\n `(${conditions})`\n )\n })\n .join(\" UNION ALL \")\n\n const dbCollationsSql = `SELECT \"NAME\", \"COLLATION_NAME\" FROM \"sys\".\"databases\"`\n\n const indicesSql = Object.entries(dbTablesByCatalog)\n .map(([TABLE_CATALOG, tables]) => {\n const conditions = tables\n .map(\n ({ TABLE_NAME, TABLE_SCHEMA }) =>\n `(\"s\".\"name\" = '${TABLE_SCHEMA}' AND \"t\".\"name\" = '${TABLE_NAME}')`,\n )\n .join(\" OR \")\n\n return (\n `SELECT '${TABLE_CATALOG}' AS \"TABLE_CATALOG\", \"s\".\"name\" AS \"TABLE_SCHEMA\", \"t\".\"name\" AS \"TABLE_NAME\", ` +\n `\"ind\".\"name\" AS \"INDEX_NAME\", \"col\".\"name\" AS \"COLUMN_NAME\", \"ind\".\"is_unique\" AS \"IS_UNIQUE\", \"ind\".\"filter_definition\" as \"CONDITION\" ` +\n `FROM \"${TABLE_CATALOG}\".\"sys\".\"indexes\" \"ind\" ` +\n `INNER JOIN \"${TABLE_CATALOG}\".\"sys\".\"index_columns\" \"ic\" ON \"ic\".\"object_id\" = \"ind\".\"object_id\" AND \"ic\".\"index_id\" = \"ind\".\"index_id\" ` +\n `INNER JOIN \"${TABLE_CATALOG}\".\"sys\".\"columns\" \"col\" ON \"col\".\"object_id\" = \"ic\".\"object_id\" AND \"col\".\"column_id\" = \"ic\".\"column_id\" ` +\n `INNER JOIN \"${TABLE_CATALOG}\".\"sys\".\"tables\" \"t\" ON \"t\".\"object_id\" = \"ind\".\"object_id\" ` +\n `INNER JOIN \"${TABLE_CATALOG}\".\"sys\".\"schemas\" \"s\" ON \"s\".\"schema_id\" = \"t\".\"schema_id\" ` +\n `WHERE ` +\n `\"ind\".\"is_primary_key\" = 0 AND \"ind\".\"is_unique_constraint\" = 0 AND \"t\".\"is_ms_shipped\" = 0 AND ` +\n `(${conditions})`\n )\n })\n .join(\" UNION ALL \")\n\n const [\n dbColumns,\n dbConstraints,\n dbForeignKeys,\n dbIdentityColumns,\n dbCollations,\n dbIndices,\n ]: ObjectLiteral[][] = await Promise.all([\n this.query(columnsSql),\n this.query(constraintsSql),\n this.query(foreignKeysSql),\n this.query(identityColumnsSql),\n this.query(dbCollationsSql),\n this.query(indicesSql),\n ])\n\n // create table schemas for loaded tables\n return await Promise.all(\n dbTables.map(async (dbTable) => {\n const table = new Table()\n\n const getSchemaFromKey = (dbObject: any, key: string) => {\n return dbObject[key] === currentSchema &&\n (!this.driver.options.schema ||\n this.driver.options.schema === currentSchema)\n ? undefined\n : dbObject[key]\n }\n\n // We do not need to join schema and database names, when db or schema is by default.\n const db =\n dbTable[\"TABLE_CATALOG\"] === currentDatabase\n ? undefined\n : dbTable[\"TABLE_CATALOG\"]\n const schema = getSchemaFromKey(dbTable, \"TABLE_SCHEMA\")\n table.database = dbTable[\"TABLE_CATALOG\"]\n table.schema = dbTable[\"TABLE_SCHEMA\"]\n table.name = this.driver.buildTableName(\n dbTable[\"TABLE_NAME\"],\n schema,\n db,\n )\n\n const defaultCollation = dbCollations.find(\n (dbCollation) =>\n dbCollation[\"NAME\"] === dbTable[\"TABLE_CATALOG\"],\n )!\n\n // create columns from the loaded columns\n table.columns = dbColumns\n .filter(\n (dbColumn) =>\n dbColumn[\"TABLE_NAME\"] === dbTable[\"TABLE_NAME\"] &&\n dbColumn[\"TABLE_SCHEMA\"] ===\n dbTable[\"TABLE_SCHEMA\"] &&\n dbColumn[\"TABLE_CATALOG\"] ===\n dbTable[\"TABLE_CATALOG\"],\n )\n .map((dbColumn) => {\n const columnConstraints = dbConstraints.filter(\n (dbConstraint) =>\n dbConstraint[\"TABLE_NAME\"] ===\n dbColumn[\"TABLE_NAME\"] &&\n dbConstraint[\"TABLE_SCHEMA\"] ===\n dbColumn[\"TABLE_SCHEMA\"] &&\n dbConstraint[\"TABLE_CATALOG\"] ===\n dbColumn[\"TABLE_CATALOG\"] &&\n dbConstraint[\"COLUMN_NAME\"] ===\n dbColumn[\"COLUMN_NAME\"],\n )\n\n const uniqueConstraints = columnConstraints.filter(\n (constraint) =>\n constraint[\"CONSTRAINT_TYPE\"] === \"UNIQUE\",\n )\n const isConstraintComposite = uniqueConstraints.every(\n (uniqueConstraint) => {\n return dbConstraints.some(\n (dbConstraint) =>\n dbConstraint[\"CONSTRAINT_TYPE\"] ===\n \"UNIQUE\" &&\n dbConstraint[\"CONSTRAINT_NAME\"] ===\n uniqueConstraint[\n \"CONSTRAINT_NAME\"\n ] &&\n dbConstraint[\"TABLE_SCHEMA\"] ===\n dbColumn[\"TABLE_SCHEMA\"] &&\n dbConstraint[\"TABLE_CATALOG\"] ===\n dbColumn[\"TABLE_CATALOG\"] &&\n dbConstraint[\"COLUMN_NAME\"] !==\n dbColumn[\"COLUMN_NAME\"],\n )\n },\n )\n\n const isPrimary = !!columnConstraints.find(\n (constraint) =>\n constraint[\"CONSTRAINT_TYPE\"] === \"PRIMARY KEY\",\n )\n const isGenerated = !!dbIdentityColumns.find(\n (column) =>\n column[\"TABLE_NAME\"] ===\n dbColumn[\"TABLE_NAME\"] &&\n column[\"TABLE_SCHEMA\"] ===\n dbColumn[\"TABLE_SCHEMA\"] &&\n column[\"TABLE_CATALOG\"] ===\n dbColumn[\"TABLE_CATALOG\"] &&\n column[\"COLUMN_NAME\"] ===\n dbColumn[\"COLUMN_NAME\"],\n )\n\n const tableColumn = new TableColumn()\n tableColumn.name = dbColumn[\"COLUMN_NAME\"]\n tableColumn.type = dbColumn[\"DATA_TYPE\"].toLowerCase()\n\n // check only columns that have length property\n if (\n this.driver.withLengthColumnTypes.indexOf(\n tableColumn.type as ColumnType,\n ) !== -1 &&\n dbColumn[\"CHARACTER_MAXIMUM_LENGTH\"]\n ) {\n const length =\n dbColumn[\"CHARACTER_MAXIMUM_LENGTH\"].toString()\n if (length === \"-1\") {\n tableColumn.length = \"MAX\"\n } else {\n tableColumn.length =\n !this.isDefaultColumnLength(\n table,\n tableColumn,\n length,\n )\n ? length\n : \"\"\n }\n }\n\n if (\n tableColumn.type === \"decimal\" ||\n tableColumn.type === \"numeric\"\n ) {\n if (\n dbColumn[\"NUMERIC_PRECISION\"] !== null &&\n !this.isDefaultColumnPrecision(\n table,\n tableColumn,\n dbColumn[\"NUMERIC_PRECISION\"],\n )\n )\n tableColumn.precision =\n dbColumn[\"NUMERIC_PRECISION\"]\n if (\n dbColumn[\"NUMERIC_SCALE\"] !== null &&\n !this.isDefaultColumnScale(\n table,\n tableColumn,\n dbColumn[\"NUMERIC_SCALE\"],\n )\n )\n tableColumn.scale = dbColumn[\"NUMERIC_SCALE\"]\n }\n\n if (tableColumn.type === \"nvarchar\") {\n // Check if this is an enum\n const columnCheckConstraints =\n columnConstraints.filter(\n (constraint) =>\n constraint[\"CONSTRAINT_TYPE\"] ===\n \"CHECK\",\n )\n if (columnCheckConstraints.length) {\n // const isEnumRegexp = new RegExp(\"^\\\\(\\\\[\" + tableColumn.name + \"\\\\]='[^']+'(?: OR \\\\[\" + tableColumn.name + \"\\\\]='[^']+')*\\\\)$\");\n for (const checkConstraint of columnCheckConstraints) {\n if (\n this.isEnumCheckConstraint(\n checkConstraint[\"CONSTRAINT_NAME\"],\n )\n ) {\n // This is an enum constraint, make column into an enum\n tableColumn.enum = []\n const enumValueRegexp = new RegExp(\n \"\\\\[\" +\n tableColumn.name +\n \"\\\\]='([^']+)'\",\n \"g\",\n )\n let result\n while (\n (result = enumValueRegexp.exec(\n checkConstraint[\"definition\"],\n )) !== null\n ) {\n tableColumn.enum.unshift(result[1])\n }\n // Skip other column constraints\n break\n }\n }\n }\n }\n\n tableColumn.default =\n dbColumn[\"COLUMN_DEFAULT\"] !== null &&\n dbColumn[\"COLUMN_DEFAULT\"] !== undefined\n ? this.removeParenthesisFromDefault(\n dbColumn[\"COLUMN_DEFAULT\"],\n )\n : undefined\n tableColumn.isNullable =\n dbColumn[\"IS_NULLABLE\"] === \"YES\"\n tableColumn.isPrimary = isPrimary\n tableColumn.isUnique =\n uniqueConstraints.length > 0 &&\n !isConstraintComposite\n tableColumn.isGenerated = isGenerated\n if (isGenerated)\n tableColumn.generationStrategy = \"increment\"\n if (tableColumn.default === \"newsequentialid()\") {\n tableColumn.isGenerated = true\n tableColumn.generationStrategy = \"uuid\"\n tableColumn.default = undefined\n }\n\n // todo: unable to get default charset\n // tableColumn.charset = dbColumn[\"CHARACTER_SET_NAME\"];\n if (dbColumn[\"COLLATION_NAME\"])\n tableColumn.collation =\n dbColumn[\"COLLATION_NAME\"] ===\n defaultCollation[\"COLLATION_NAME\"]\n ? undefined\n : dbColumn[\"COLLATION_NAME\"]\n\n if (\n tableColumn.type === \"datetime2\" ||\n tableColumn.type === \"time\" ||\n tableColumn.type === \"datetimeoffset\"\n ) {\n tableColumn.precision =\n !this.isDefaultColumnPrecision(\n table,\n tableColumn,\n dbColumn[\"DATETIME_PRECISION\"],\n )\n ? dbColumn[\"DATETIME_PRECISION\"]\n : undefined\n }\n\n return tableColumn\n })\n\n // find unique constraints of table, group them by constraint name and build TableUnique.\n const tableUniqueConstraints = OrmUtils.uniq(\n dbConstraints.filter(\n (dbConstraint) =>\n dbConstraint[\"TABLE_NAME\"] ===\n dbTable[\"TABLE_NAME\"] &&\n dbConstraint[\"TABLE_SCHEMA\"] ===\n dbTable[\"TABLE_SCHEMA\"] &&\n dbConstraint[\"TABLE_CATALOG\"] ===\n dbTable[\"TABLE_CATALOG\"] &&\n dbConstraint[\"CONSTRAINT_TYPE\"] === \"UNIQUE\",\n ),\n (dbConstraint) => dbConstraint[\"CONSTRAINT_NAME\"],\n )\n\n table.uniques = tableUniqueConstraints.map((constraint) => {\n const uniques = dbConstraints.filter(\n (dbC) =>\n dbC[\"CONSTRAINT_NAME\"] ===\n constraint[\"CONSTRAINT_NAME\"],\n )\n return new TableUnique({\n name: constraint[\"CONSTRAINT_NAME\"],\n columnNames: uniques.map((u) => u[\"COLUMN_NAME\"]),\n })\n })\n\n // find check constraints of table, group them by constraint name and build TableCheck.\n const tableCheckConstraints = OrmUtils.uniq(\n dbConstraints.filter(\n (dbConstraint) =>\n dbConstraint[\"TABLE_NAME\"] ===\n dbTable[\"TABLE_NAME\"] &&\n dbConstraint[\"TABLE_SCHEMA\"] ===\n dbTable[\"TABLE_SCHEMA\"] &&\n dbConstraint[\"TABLE_CATALOG\"] ===\n dbTable[\"TABLE_CATALOG\"] &&\n dbConstraint[\"CONSTRAINT_TYPE\"] === \"CHECK\",\n ),\n (dbConstraint) => dbConstraint[\"CONSTRAINT_NAME\"],\n )\n\n table.checks = tableCheckConstraints\n .filter(\n (constraint) =>\n !this.isEnumCheckConstraint(\n constraint[\"CONSTRAINT_NAME\"],\n ),\n )\n .map((constraint) => {\n const checks = dbConstraints.filter(\n (dbC) =>\n dbC[\"CONSTRAINT_NAME\"] ===\n constraint[\"CONSTRAINT_NAME\"],\n )\n return new TableCheck({\n name: constraint[\"CONSTRAINT_NAME\"],\n columnNames: checks.map((c) => c[\"COLUMN_NAME\"]),\n expression: constraint[\"definition\"],\n })\n })\n\n // find foreign key constraints of table, group them by constraint name and build TableForeignKey.\n const tableForeignKeyConstraints = OrmUtils.uniq(\n dbForeignKeys.filter(\n (dbForeignKey) =>\n dbForeignKey[\"TABLE_NAME\"] ===\n dbTable[\"TABLE_NAME\"] &&\n dbForeignKey[\"TABLE_SCHEMA\"] ===\n dbTable[\"TABLE_SCHEMA\"] &&\n dbForeignKey[\"TABLE_CATALOG\"] ===\n dbTable[\"TABLE_CATALOG\"],\n ),\n (dbForeignKey) => dbForeignKey[\"FK_NAME\"],\n )\n\n table.foreignKeys = tableForeignKeyConstraints.map(\n (dbForeignKey) => {\n const foreignKeys = dbForeignKeys.filter(\n (dbFk) =>\n dbFk[\"FK_NAME\"] === dbForeignKey[\"FK_NAME\"],\n )\n\n // if referenced table located in currently used db and schema, we don't need to concat db and schema names to table name.\n const db =\n dbForeignKey[\"TABLE_CATALOG\"] === currentDatabase\n ? undefined\n : dbForeignKey[\"TABLE_CATALOG\"]\n const schema = getSchemaFromKey(\n dbForeignKey,\n \"REF_SCHEMA\",\n )\n const referencedTableName = this.driver.buildTableName(\n dbForeignKey[\"REF_TABLE\"],\n schema,\n db,\n )\n\n return new TableForeignKey({\n name: dbForeignKey[\"FK_NAME\"],\n columnNames: foreignKeys.map(\n (dbFk) => dbFk[\"COLUMN_NAME\"],\n ),\n referencedDatabase: dbForeignKey[\"TABLE_CATALOG\"],\n referencedSchema: dbForeignKey[\"REF_SCHEMA\"],\n referencedTableName: referencedTableName,\n referencedColumnNames: foreignKeys.map(\n (dbFk) => dbFk[\"REF_COLUMN\"],\n ),\n onDelete: dbForeignKey[\"ON_DELETE\"].replace(\n \"_\",\n \" \",\n ), // SqlServer returns NO_ACTION, instead of NO ACTION\n onUpdate: dbForeignKey[\"ON_UPDATE\"].replace(\n \"_\",\n \" \",\n ), // SqlServer returns NO_ACTION, instead of NO ACTION\n })\n },\n )\n\n // find index constraints of table, group them by constraint name and build TableIndex.\n const tableIndexConstraints = OrmUtils.uniq(\n dbIndices.filter(\n (dbIndex) =>\n dbIndex[\"TABLE_NAME\"] === dbTable[\"TABLE_NAME\"] &&\n dbIndex[\"TABLE_SCHEMA\"] ===\n dbTable[\"TABLE_SCHEMA\"] &&\n dbIndex[\"TABLE_CATALOG\"] ===\n dbTable[\"TABLE_CATALOG\"],\n ),\n (dbIndex) => dbIndex[\"INDEX_NAME\"],\n )\n\n table.indices = tableIndexConstraints.map((constraint) => {\n const indices = dbIndices.filter((index) => {\n return (\n index[\"TABLE_CATALOG\"] ===\n constraint[\"TABLE_CATALOG\"] &&\n index[\"TABLE_SCHEMA\"] ===\n constraint[\"TABLE_SCHEMA\"] &&\n index[\"TABLE_NAME\"] === constraint[\"TABLE_NAME\"] &&\n index[\"INDEX_NAME\"] === constraint[\"INDEX_NAME\"]\n )\n })\n return new TableIndex(<TableIndexOptions>{\n table: table,\n name: constraint[\"INDEX_NAME\"],\n columnNames: indices.map((i) => i[\"COLUMN_NAME\"]),\n isUnique: constraint[\"IS_UNIQUE\"],\n where: constraint[\"CONDITION\"],\n })\n })\n\n return table\n }),\n )\n }\n\n /**\n * Builds and returns SQL for create table.\n */\n protected createTableSql(table: Table, createForeignKeys?: boolean): Query {\n const columnDefinitions = table.columns\n .map((column) =>\n this.buildCreateColumnSql(table, column, false, true),\n )\n .join(\", \")\n let sql = `CREATE TABLE ${this.escapePath(table)} (${columnDefinitions}`\n\n table.columns\n .filter((column) => column.isUnique)\n .forEach((column) => {\n const isUniqueExist = table.uniques.some(\n (unique) =>\n unique.columnNames.length === 1 &&\n unique.columnNames[0] === column.name,\n )\n if (!isUniqueExist)\n table.uniques.push(\n new TableUnique({\n name: this.connection.namingStrategy.uniqueConstraintName(\n table,\n [column.name],\n ),\n columnNames: [column.name],\n }),\n )\n })\n\n if (table.uniques.length > 0) {\n const uniquesSql = table.uniques\n .map((unique) => {\n const uniqueName = unique.name\n ? unique.name\n : this.connection.namingStrategy.uniqueConstraintName(\n table,\n unique.columnNames,\n )\n const columnNames = unique.columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n return `CONSTRAINT \"${uniqueName}\" UNIQUE (${columnNames})`\n })\n .join(\", \")\n\n sql += `, ${uniquesSql}`\n }\n\n if (table.checks.length > 0) {\n const checksSql = table.checks\n .map((check) => {\n const checkName = check.name\n ? check.name\n : this.connection.namingStrategy.checkConstraintName(\n table,\n check.expression!,\n )\n return `CONSTRAINT \"${checkName}\" CHECK (${check.expression})`\n })\n .join(\", \")\n\n sql += `, ${checksSql}`\n }\n\n if (table.foreignKeys.length > 0 && createForeignKeys) {\n const foreignKeysSql = table.foreignKeys\n .map((fk) => {\n const columnNames = fk.columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n if (!fk.name)\n fk.name = this.connection.namingStrategy.foreignKeyName(\n table,\n fk.columnNames,\n this.getTablePath(fk),\n fk.referencedColumnNames,\n )\n const referencedColumnNames = fk.referencedColumnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n\n let constraint = `CONSTRAINT \"${\n fk.name\n }\" FOREIGN KEY (${columnNames}) REFERENCES ${this.escapePath(\n this.getTablePath(fk),\n )} (${referencedColumnNames})`\n if (fk.onDelete) constraint += ` ON DELETE ${fk.onDelete}`\n if (fk.onUpdate) constraint += ` ON UPDATE ${fk.onUpdate}`\n\n return constraint\n })\n .join(\", \")\n\n sql += `, ${foreignKeysSql}`\n }\n\n const primaryColumns = table.columns.filter(\n (column) => column.isPrimary,\n )\n if (primaryColumns.length > 0) {\n const primaryKeyName =\n this.connection.namingStrategy.primaryKeyName(\n table,\n primaryColumns.map((column) => column.name),\n )\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n sql += `, CONSTRAINT \"${primaryKeyName}\" PRIMARY KEY (${columnNames})`\n }\n\n sql += `)`\n\n return new Query(sql)\n }\n\n /**\n * Builds drop table sql.\n */\n protected dropTableSql(\n tableOrName: Table | string,\n ifExist?: boolean,\n ): Query {\n const query = ifExist\n ? `DROP TABLE IF EXISTS ${this.escapePath(tableOrName)}`\n : `DROP TABLE ${this.escapePath(tableOrName)}`\n return new Query(query)\n }\n\n protected createViewSql(view: View): Query {\n const parsedName = this.driver.parseTableName(view)\n\n // Can't use `escapePath` here because `CREATE VIEW` does not accept database names.\n const viewIdentifier = parsedName.schema\n ? `\"${parsedName.schema}\".\"${parsedName.tableName}\"`\n : `\"${parsedName.tableName}\"`\n\n if (typeof view.expression === \"string\") {\n return new Query(\n `CREATE VIEW ${viewIdentifier} AS ${view.expression}`,\n )\n } else {\n return new Query(\n `CREATE VIEW ${viewIdentifier} AS ${view\n .expression(this.connection)\n .getQuery()}`,\n )\n }\n }\n\n protected async insertViewDefinitionSql(view: View): Promise<Query> {\n const parsedTableName = this.driver.parseTableName(view)\n\n if (!parsedTableName.schema) {\n parsedTableName.schema = await this.getCurrentSchema()\n }\n\n const expression =\n typeof view.expression === \"string\"\n ? view.expression.trim()\n : view.expression(this.connection).getQuery()\n return this.insertTypeormMetadataSql({\n type: MetadataTableType.VIEW,\n database: parsedTableName.database,\n schema: parsedTableName.schema,\n name: parsedTableName.tableName,\n value: expression,\n })\n }\n\n /**\n * Builds drop view sql.\n */\n protected dropViewSql(viewOrPath: View | string): Query {\n return new Query(`DROP VIEW ${this.escapePath(viewOrPath)}`)\n }\n\n /**\n * Builds remove view sql.\n */\n protected async deleteViewDefinitionSql(\n viewOrPath: View | string,\n ): Promise<Query> {\n const parsedTableName = this.driver.parseTableName(viewOrPath)\n\n if (!parsedTableName.schema) {\n parsedTableName.schema = await this.getCurrentSchema()\n }\n\n return this.deleteTypeormMetadataSql({\n type: MetadataTableType.VIEW,\n database: parsedTableName.database,\n schema: parsedTableName.schema,\n name: parsedTableName.tableName,\n })\n }\n\n /**\n * Builds create index sql.\n */\n protected createIndexSql(table: Table, index: TableIndex): Query {\n const columns = index.columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n return new Query(\n `CREATE ${index.isUnique ? \"UNIQUE \" : \"\"}INDEX \"${\n index.name\n }\" ON ${this.escapePath(table)} (${columns}) ${\n index.where ? \"WHERE \" + index.where : \"\"\n }`,\n )\n }\n\n /**\n * Builds drop index sql.\n */\n protected dropIndexSql(\n table: Table,\n indexOrName: TableIndex | string,\n ): Query {\n let indexName = InstanceChecker.isTableIndex(indexOrName)\n ? indexOrName.name\n : indexOrName\n return new Query(\n `DROP INDEX \"${indexName}\" ON ${this.escapePath(table)}`,\n )\n }\n\n /**\n * Builds create primary key sql.\n */\n protected createPrimaryKeySql(table: Table, columnNames: string[]): Query {\n const primaryKeyName = this.connection.namingStrategy.primaryKeyName(\n table,\n columnNames,\n )\n const columnNamesString = columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${primaryKeyName}\" PRIMARY KEY (${columnNamesString})`,\n )\n }\n\n /**\n * Builds drop primary key sql.\n */\n protected dropPrimaryKeySql(table: Table): Query {\n const columnNames = table.primaryColumns.map((column) => column.name)\n const primaryKeyName = this.connection.namingStrategy.primaryKeyName(\n table,\n columnNames,\n )\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${primaryKeyName}\"`,\n )\n }\n\n /**\n * Builds create unique constraint sql.\n */\n protected createUniqueConstraintSql(\n table: Table,\n uniqueConstraint: TableUnique,\n ): Query {\n const columnNames = uniqueConstraint.columnNames\n .map((column) => `\"` + column + `\"`)\n .join(\", \")\n return new Query(\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\n uniqueConstraint.name\n }\" UNIQUE (${columnNames})`,\n )\n }\n\n /**\n * Builds drop unique constraint sql.\n */\n protected dropUniqueConstraintSql(\n table: Table,\n uniqueOrName: TableUnique | string,\n ): Query {\n const uniqueName = InstanceChecker.isTableUnique(uniqueOrName)\n ? uniqueOrName.name\n : uniqueOrName\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${uniqueName}\"`,\n )\n }\n\n /**\n * Builds create check constraint sql.\n */\n protected createCheckConstraintSql(\n table: Table,\n checkConstraint: TableCheck,\n ): Query {\n return new Query(\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\n checkConstraint.name\n }\" CHECK (${checkConstraint.expression})`,\n )\n }\n\n /**\n * Builds drop check constraint sql.\n */\n protected dropCheckConstraintSql(\n table: Table,\n checkOrName: TableCheck | string,\n ): Query {\n const checkName = InstanceChecker.isTableCheck(checkOrName)\n ? checkOrName.name\n : checkOrName\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${checkName}\"`,\n )\n }\n\n /**\n * Builds create foreign key sql.\n */\n protected createForeignKeySql(\n table: Table,\n foreignKey: TableForeignKey,\n ): Query {\n const columnNames = foreignKey.columnNames\n .map((column) => `\"` + column + `\"`)\n .join(\", \")\n const referencedColumnNames = foreignKey.referencedColumnNames\n .map((column) => `\"` + column + `\"`)\n .join(\",\")\n let sql =\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\n foreignKey.name\n }\" FOREIGN KEY (${columnNames}) ` +\n `REFERENCES ${this.escapePath(\n this.getTablePath(foreignKey),\n )}(${referencedColumnNames})`\n if (foreignKey.onDelete) sql += ` ON DELETE ${foreignKey.onDelete}`\n if (foreignKey.onUpdate) sql += ` ON UPDATE ${foreignKey.onUpdate}`\n\n return new Query(sql)\n }\n\n /**\n * Builds drop foreign key sql.\n */\n protected dropForeignKeySql(\n table: Table,\n foreignKeyOrName: TableForeignKey | string,\n ): Query {\n const foreignKeyName = InstanceChecker.isTableForeignKey(\n foreignKeyOrName,\n )\n ? foreignKeyOrName.name\n : foreignKeyOrName\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${foreignKeyName}\"`,\n )\n }\n\n /**\n * Escapes given table or View path.\n */\n protected escapePath(target: Table | View | string): string {\n const { database, schema, tableName } =\n this.driver.parseTableName(target)\n\n if (database && database !== this.driver.database) {\n if (schema && schema !== this.driver.searchSchema) {\n return `\"${database}\".\"${schema}\".\"${tableName}\"`\n }\n\n return `\"${database}\"..\"${tableName}\"`\n }\n\n if (schema && schema !== this.driver.searchSchema) {\n return `\"${schema}\".\"${tableName}\"`\n }\n\n return `\"${tableName}\"`\n }\n\n /**\n * Concat database name and schema name to the foreign key name.\n * Needs because FK name is relevant to the schema and database.\n */\n protected buildForeignKeyName(\n fkName: string,\n schemaName: string | undefined,\n dbName: string | undefined,\n ): string {\n let joinedFkName = fkName\n if (schemaName && schemaName !== this.driver.searchSchema)\n joinedFkName = schemaName + \".\" + joinedFkName\n if (dbName && dbName !== this.driver.database)\n joinedFkName = dbName + \".\" + joinedFkName\n\n return joinedFkName\n }\n\n /**\n * Removes parenthesis around default value.\n * Sql server returns default value with parenthesis around, e.g.\n * ('My text') - for string\n * ((1)) - for number\n * (newsequentialId()) - for function\n */\n protected removeParenthesisFromDefault(defaultValue: string): any {\n if (defaultValue.substr(0, 1) !== \"(\") return defaultValue\n const normalizedDefault = defaultValue.substr(\n 1,\n defaultValue.lastIndexOf(\")\") - 1,\n )\n return this.removeParenthesisFromDefault(normalizedDefault)\n }\n\n /**\n * Builds a query for create column.\n */\n protected buildCreateColumnSql(\n table: Table,\n column: TableColumn,\n skipIdentity: boolean,\n createDefault: boolean,\n ) {\n let c = `\"${column.name}\" ${this.connection.driver.createFullType(\n column,\n )}`\n\n if (column.enum) {\n const expression =\n column.name +\n \" IN (\" +\n column.enum.map((val) => \"'\" + val + \"'\").join(\",\") +\n \")\"\n const checkName =\n this.connection.namingStrategy.checkConstraintName(\n table,\n expression,\n true,\n )\n c += ` CONSTRAINT ${checkName} CHECK(${expression})`\n }\n\n if (column.collation) c += \" COLLATE \" + column.collation\n\n if (column.isNullable !== true) c += \" NOT NULL\"\n\n if (\n column.isGenerated === true &&\n column.generationStrategy === \"increment\" &&\n !skipIdentity\n )\n // don't use skipPrimary here since updates can update already exist primary without auto inc.\n c += \" IDENTITY(1,1)\"\n\n if (\n column.default !== undefined &&\n column.default !== null &&\n createDefault\n ) {\n // we create named constraint to be able to delete this constraint when column been dropped\n const defaultName =\n this.connection.namingStrategy.defaultConstraintName(\n table,\n column.name,\n )\n c += ` CONSTRAINT \"${defaultName}\" DEFAULT ${column.default}`\n }\n\n if (\n column.isGenerated &&\n column.generationStrategy === \"uuid\" &&\n !column.default\n ) {\n // we create named constraint to be able to delete this constraint when column been dropped\n const defaultName =\n this.connection.namingStrategy.defaultConstraintName(\n table,\n column.name,\n )\n c += ` CONSTRAINT \"${defaultName}\" DEFAULT NEWSEQUENTIALID()`\n }\n return c\n }\n\n protected isEnumCheckConstraint(name: string): boolean {\n return name.indexOf(\"CHK_\") !== -1 && name.indexOf(\"_ENUM\") !== -1\n }\n\n /**\n * Converts MssqlParameter into real mssql parameter type.\n */\n protected mssqlParameterToNativeParameter(parameter: MssqlParameter): any {\n switch (this.driver.normalizeType({ type: parameter.type as any })) {\n case \"bit\":\n return this.driver.mssql.Bit\n case \"bigint\":\n return this.driver.mssql.BigInt\n case \"decimal\":\n return this.driver.mssql.Decimal(...parameter.params)\n case \"float\":\n return this.driver.mssql.Float\n case \"int\":\n return this.driver.mssql.Int\n case \"money\":\n return this.driver.mssql.Money\n case \"numeric\":\n return this.driver.mssql.Numeric(...parameter.params)\n case \"smallint\":\n return this.driver.mssql.SmallInt\n case \"smallmoney\":\n return this.driver.mssql.SmallMoney\n case \"real\":\n return this.driver.mssql.Real\n case \"tinyint\":\n return this.driver.mssql.TinyInt\n case \"char\":\n case \"nchar\":\n return this.driver.mssql.NChar(...parameter.params)\n case \"text\":\n case \"ntext\":\n return this.driver.mssql.Ntext\n case \"varchar\":\n case \"nvarchar\":\n return this.driver.mssql.NVarChar(...parameter.params)\n case \"xml\":\n return this.driver.mssql.Xml\n case \"time\":\n return this.driver.mssql.Time(...parameter.params)\n case \"date\":\n return this.driver.mssql.Date\n case \"datetime\":\n return this.driver.mssql.DateTime\n case \"datetime2\":\n return this.driver.mssql.DateTime2(...parameter.params)\n case \"datetimeoffset\":\n return this.driver.mssql.DateTimeOffset(...parameter.params)\n case \"smalldatetime\":\n return this.driver.mssql.SmallDateTime\n case \"uniqueidentifier\":\n return this.driver.mssql.UniqueIdentifier\n case \"variant\":\n return this.driver.mssql.Variant\n case \"binary\":\n return this.driver.mssql.Binary\n case \"varbinary\":\n return this.driver.mssql.VarBinary(...parameter.params)\n case \"image\":\n return this.driver.mssql.Image\n case \"udt\":\n return this.driver.mssql.UDT\n case \"rowversion\":\n return this.driver.mssql.RowVersion\n }\n }\n\n /**\n * Converts string literal of isolation level to enum.\n * The underlying mssql driver requires an enum for the isolation level.\n */\n convertIsolationLevel(isolation: IsolationLevel) {\n const ISOLATION_LEVEL = this.driver.mssql.ISOLATION_LEVEL\n switch (isolation) {\n case \"READ UNCOMMITTED\":\n return ISOLATION_LEVEL.READ_UNCOMMITTED\n case \"REPEATABLE READ\":\n return ISOLATION_LEVEL.REPEATABLE_READ\n case \"SERIALIZABLE\":\n return ISOLATION_LEVEL.SERIALIZABLE\n\n case \"READ COMMITTED\":\n default:\n return ISOLATION_LEVEL.READ_COMMITTED\n }\n }\n}\n"],"sourceRoot":"../.."}
|