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,9 +1,4 @@
|
|
|
1
|
-
import * as tslib_1 from "tslib";
|
|
2
|
-
import { normalizeFindOptions } from "../find-options/FindOptionsUtils";
|
|
3
|
-
import { ObserverExecutor } from "../observer/ObserverExecutor";
|
|
4
|
-
import { QueryBuilderUtils } from "./QueryBuilderUtils";
|
|
5
1
|
import { RawSqlResultsToEntityTransformer } from "./transformer/RawSqlResultsToEntityTransformer";
|
|
6
|
-
import { SqlServerDriver } from "../driver/sqlserver/SqlServerDriver";
|
|
7
2
|
import { PessimisticLockTransactionRequiredError } from "../error/PessimisticLockTransactionRequiredError";
|
|
8
3
|
import { NoVersionOrUpdateDateColumnError } from "../error/NoVersionOrUpdateDateColumnError";
|
|
9
4
|
import { OptimisticLockVersionMismatchError } from "../error/OptimisticLockVersionMismatchError";
|
|
@@ -17,54 +12,39 @@ import { RelationCountLoader } from "./relation-count/RelationCountLoader";
|
|
|
17
12
|
import { RelationCountMetadataToAttributeTransformer } from "./relation-count/RelationCountMetadataToAttributeTransformer";
|
|
18
13
|
import { QueryBuilder } from "./QueryBuilder";
|
|
19
14
|
import { LockNotSupportedOnGivenDriverError } from "../error/LockNotSupportedOnGivenDriverError";
|
|
20
|
-
import { MysqlDriver } from "../driver/mysql/MysqlDriver";
|
|
21
|
-
import { PostgresDriver } from "../driver/postgres/PostgresDriver";
|
|
22
|
-
import { OracleDriver } from "../driver/oracle/OracleDriver";
|
|
23
|
-
import { Brackets } from "./Brackets";
|
|
24
|
-
import { AbstractSqliteDriver } from "../driver/sqlite-abstract/AbstractSqliteDriver";
|
|
25
15
|
import { OffsetWithoutLimitNotSupportedError } from "../error/OffsetWithoutLimitNotSupportedError";
|
|
26
|
-
import { BroadcasterResult } from "../subscriber/BroadcasterResult";
|
|
27
|
-
import { FindCriteriaNotFoundError } from "../error/FindCriteriaNotFoundError";
|
|
28
|
-
import { FindOperator } from "../find-options/FindOperator";
|
|
29
|
-
import { OrmUtils } from "../util/OrmUtils";
|
|
30
16
|
import { ObjectUtils } from "../util/ObjectUtils";
|
|
31
17
|
import { DriverUtils } from "../driver/DriverUtils";
|
|
32
|
-
import {
|
|
18
|
+
import { EntityNotFoundError } from "../error/EntityNotFoundError";
|
|
19
|
+
import { TypeORMError } from "../error";
|
|
20
|
+
import { FindOptionsUtils } from "../find-options/FindOptionsUtils";
|
|
33
21
|
import { ApplyValueTransformers } from "../util/ApplyValueTransformers";
|
|
22
|
+
import { OrmUtils } from "../util/OrmUtils";
|
|
23
|
+
import { EntityPropertyNotFoundError } from "../error/EntityPropertyNotFoundError";
|
|
24
|
+
import { InstanceChecker } from "../util/InstanceChecker";
|
|
34
25
|
/**
|
|
35
26
|
* Allows to build complex sql queries in a fashion way and execute those queries.
|
|
36
27
|
*/
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
// TODO: Proper clone of findOptions field(deep, no as any)
|
|
48
|
-
_super.call(this, connectionOrQueryBuilder, queryRunner) || this;
|
|
49
|
-
_this.findOptions = {};
|
|
50
|
-
_this.selects = [];
|
|
51
|
-
_this.joins = [];
|
|
52
|
-
_this.conditions = "";
|
|
53
|
-
_this.orderBys = [];
|
|
54
|
-
_this.relationMetadatas = [];
|
|
55
|
-
if (connectionOrQueryBuilder instanceof QueryBuilder) {
|
|
56
|
-
_this.findOptions = connectionOrQueryBuilder.findOptions;
|
|
57
|
-
}
|
|
58
|
-
return _this;
|
|
28
|
+
export class SelectQueryBuilder extends QueryBuilder {
|
|
29
|
+
constructor() {
|
|
30
|
+
super(...arguments);
|
|
31
|
+
this["@instanceof"] = Symbol.for("SelectQueryBuilder");
|
|
32
|
+
this.findOptions = {};
|
|
33
|
+
this.selects = [];
|
|
34
|
+
this.joins = [];
|
|
35
|
+
this.conditions = "";
|
|
36
|
+
this.orderBys = [];
|
|
37
|
+
this.relationMetadatas = [];
|
|
59
38
|
}
|
|
60
39
|
// -------------------------------------------------------------------------
|
|
61
40
|
// Public Implemented Methods
|
|
62
41
|
// -------------------------------------------------------------------------
|
|
63
42
|
/**
|
|
64
|
-
* Gets generated
|
|
43
|
+
* Gets generated SQL query without parameters being replaced.
|
|
65
44
|
*/
|
|
66
|
-
|
|
67
|
-
|
|
45
|
+
getQuery() {
|
|
46
|
+
let sql = this.createComment();
|
|
47
|
+
sql += this.createSelectExpression();
|
|
68
48
|
sql += this.createJoinExpression();
|
|
69
49
|
sql += this.createWhereExpression();
|
|
70
50
|
sql += this.createGroupByExpression();
|
|
@@ -76,155 +56,155 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
76
56
|
if (this.expressionMap.subQuery)
|
|
77
57
|
sql = "(" + sql + ")";
|
|
78
58
|
return sql;
|
|
79
|
-
}
|
|
59
|
+
}
|
|
80
60
|
// -------------------------------------------------------------------------
|
|
81
61
|
// Public Methods
|
|
82
62
|
// -------------------------------------------------------------------------
|
|
63
|
+
setFindOptions(findOptions) {
|
|
64
|
+
this.findOptions = findOptions;
|
|
65
|
+
this.applyFindOptions();
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
83
68
|
/**
|
|
84
69
|
* Creates a subquery - query that can be used inside other queries.
|
|
85
70
|
*/
|
|
86
|
-
|
|
87
|
-
|
|
71
|
+
subQuery() {
|
|
72
|
+
const qb = this.createQueryBuilder();
|
|
88
73
|
qb.expressionMap.subQuery = true;
|
|
89
|
-
qb.
|
|
74
|
+
qb.parentQueryBuilder = this;
|
|
90
75
|
return qb;
|
|
91
|
-
}
|
|
92
|
-
SelectQueryBuilder.prototype.setFindOptions = function (findOptions) {
|
|
93
|
-
var normalizedFindOptions = normalizeFindOptions(findOptions);
|
|
94
|
-
this.findOptions = {
|
|
95
|
-
select: normalizedFindOptions.select,
|
|
96
|
-
where: normalizedFindOptions.where,
|
|
97
|
-
relations: normalizedFindOptions.relations,
|
|
98
|
-
order: normalizedFindOptions.order,
|
|
99
|
-
skip: normalizedFindOptions.skip,
|
|
100
|
-
take: normalizedFindOptions.take,
|
|
101
|
-
pagination: normalizedFindOptions.options && normalizedFindOptions.options.pagination,
|
|
102
|
-
loadRelationIds: normalizedFindOptions.options && normalizedFindOptions.options.loadRelationIds
|
|
103
|
-
};
|
|
104
|
-
this.applyFindOptionsOrmOptions(normalizedFindOptions);
|
|
105
|
-
return this;
|
|
106
|
-
};
|
|
76
|
+
}
|
|
107
77
|
/**
|
|
108
78
|
* Creates SELECT query and selects given data.
|
|
109
79
|
* Replaces all previous selections if they exist.
|
|
110
80
|
*/
|
|
111
|
-
|
|
81
|
+
select(selection, selectionAliasName) {
|
|
112
82
|
this.expressionMap.queryType = "select";
|
|
113
|
-
if (selection
|
|
114
|
-
this.expressionMap.selects = selection.map(
|
|
83
|
+
if (Array.isArray(selection)) {
|
|
84
|
+
this.expressionMap.selects = selection.map((selection) => ({
|
|
85
|
+
selection: selection,
|
|
86
|
+
}));
|
|
115
87
|
}
|
|
116
|
-
else if (selection
|
|
117
|
-
|
|
88
|
+
else if (typeof selection === "function") {
|
|
89
|
+
const subQueryBuilder = selection(this.subQuery());
|
|
118
90
|
this.setParameters(subQueryBuilder.getParameters());
|
|
119
|
-
this.expressionMap.selects.push({
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
91
|
+
this.expressionMap.selects.push({
|
|
92
|
+
selection: subQueryBuilder.getQuery(),
|
|
93
|
+
aliasName: selectionAliasName,
|
|
94
|
+
});
|
|
123
95
|
}
|
|
124
96
|
else if (selection) {
|
|
125
|
-
this.expressionMap.selects = [
|
|
97
|
+
this.expressionMap.selects = [
|
|
98
|
+
{ selection: selection, aliasName: selectionAliasName },
|
|
99
|
+
];
|
|
126
100
|
}
|
|
127
101
|
return this;
|
|
128
|
-
}
|
|
102
|
+
}
|
|
129
103
|
/**
|
|
130
104
|
* Adds new selection to the SELECT query.
|
|
131
105
|
*/
|
|
132
|
-
|
|
106
|
+
addSelect(selection, selectionAliasName) {
|
|
133
107
|
if (!selection)
|
|
134
108
|
return this;
|
|
135
|
-
if (selection
|
|
136
|
-
this.expressionMap.selects = this.expressionMap.selects.concat(selection.map(
|
|
109
|
+
if (Array.isArray(selection)) {
|
|
110
|
+
this.expressionMap.selects = this.expressionMap.selects.concat(selection.map((selection) => ({ selection: selection })));
|
|
137
111
|
}
|
|
138
|
-
else if (selection
|
|
139
|
-
|
|
112
|
+
else if (typeof selection === "function") {
|
|
113
|
+
const subQueryBuilder = selection(this.subQuery());
|
|
140
114
|
this.setParameters(subQueryBuilder.getParameters());
|
|
141
|
-
this.expressionMap.selects.push({
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
115
|
+
this.expressionMap.selects.push({
|
|
116
|
+
selection: subQueryBuilder.getQuery(),
|
|
117
|
+
aliasName: selectionAliasName,
|
|
118
|
+
});
|
|
145
119
|
}
|
|
146
120
|
else if (selection) {
|
|
147
|
-
this.expressionMap.selects.push({
|
|
121
|
+
this.expressionMap.selects.push({
|
|
122
|
+
selection: selection,
|
|
123
|
+
aliasName: selectionAliasName,
|
|
124
|
+
});
|
|
148
125
|
}
|
|
149
126
|
return this;
|
|
150
|
-
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Set max execution time.
|
|
130
|
+
* @param milliseconds
|
|
131
|
+
*/
|
|
132
|
+
maxExecutionTime(milliseconds) {
|
|
133
|
+
this.expressionMap.maxExecutionTime = milliseconds;
|
|
134
|
+
return this;
|
|
135
|
+
}
|
|
151
136
|
/**
|
|
152
137
|
* Sets whether the selection is DISTINCT.
|
|
153
138
|
*/
|
|
154
|
-
|
|
155
|
-
if (distinct === void 0) { distinct = true; }
|
|
139
|
+
distinct(distinct = true) {
|
|
156
140
|
this.expressionMap.selectDistinct = distinct;
|
|
157
141
|
return this;
|
|
158
|
-
}
|
|
142
|
+
}
|
|
159
143
|
/**
|
|
160
144
|
* Sets the distinct on clause for Postgres.
|
|
161
145
|
*/
|
|
162
|
-
|
|
146
|
+
distinctOn(distinctOn) {
|
|
163
147
|
this.expressionMap.selectDistinctOn = distinctOn;
|
|
164
148
|
return this;
|
|
165
|
-
}
|
|
149
|
+
}
|
|
166
150
|
/**
|
|
167
151
|
* Specifies FROM which entity's table select/update/delete will be executed.
|
|
168
152
|
* Also sets a main string alias of the selection data.
|
|
169
153
|
* Removes all previously set from-s.
|
|
170
154
|
*/
|
|
171
|
-
|
|
172
|
-
|
|
155
|
+
from(entityTarget, aliasName) {
|
|
156
|
+
const mainAlias = this.createFromAlias(entityTarget, aliasName);
|
|
173
157
|
this.expressionMap.setMainAlias(mainAlias);
|
|
174
158
|
return this;
|
|
175
|
-
}
|
|
159
|
+
}
|
|
176
160
|
/**
|
|
177
161
|
* Specifies FROM which entity's table select/update/delete will be executed.
|
|
178
162
|
* Also sets a main string alias of the selection data.
|
|
179
163
|
*/
|
|
180
|
-
|
|
181
|
-
|
|
164
|
+
addFrom(entityTarget, aliasName) {
|
|
165
|
+
const alias = this.createFromAlias(entityTarget, aliasName);
|
|
182
166
|
if (!this.expressionMap.mainAlias)
|
|
183
167
|
this.expressionMap.setMainAlias(alias);
|
|
184
168
|
return this;
|
|
185
|
-
}
|
|
169
|
+
}
|
|
186
170
|
/**
|
|
187
171
|
* INNER JOINs (without selection).
|
|
188
172
|
* You also need to specify an alias of the joined data.
|
|
189
173
|
* Optionally, you can add condition and parameters used in condition.
|
|
190
174
|
*/
|
|
191
|
-
|
|
192
|
-
if (condition === void 0) { condition = ""; }
|
|
175
|
+
innerJoin(entityOrProperty, alias, condition, parameters) {
|
|
193
176
|
this.join("INNER", entityOrProperty, alias, condition, parameters);
|
|
194
177
|
return this;
|
|
195
|
-
}
|
|
178
|
+
}
|
|
196
179
|
/**
|
|
197
180
|
* LEFT JOINs (without selection).
|
|
198
181
|
* You also need to specify an alias of the joined data.
|
|
199
182
|
* Optionally, you can add condition and parameters used in condition.
|
|
200
183
|
*/
|
|
201
|
-
|
|
202
|
-
if (condition === void 0) { condition = ""; }
|
|
184
|
+
leftJoin(entityOrProperty, alias, condition, parameters) {
|
|
203
185
|
this.join("LEFT", entityOrProperty, alias, condition, parameters);
|
|
204
186
|
return this;
|
|
205
|
-
}
|
|
187
|
+
}
|
|
206
188
|
/**
|
|
207
189
|
* INNER JOINs and adds all selection properties to SELECT.
|
|
208
190
|
* You also need to specify an alias of the joined data.
|
|
209
191
|
* Optionally, you can add condition and parameters used in condition.
|
|
210
192
|
*/
|
|
211
|
-
|
|
212
|
-
if (condition === void 0) { condition = ""; }
|
|
193
|
+
innerJoinAndSelect(entityOrProperty, alias, condition, parameters) {
|
|
213
194
|
this.addSelect(alias);
|
|
214
195
|
this.innerJoin(entityOrProperty, alias, condition, parameters);
|
|
215
196
|
return this;
|
|
216
|
-
}
|
|
197
|
+
}
|
|
217
198
|
/**
|
|
218
199
|
* LEFT JOINs and adds all selection properties to SELECT.
|
|
219
200
|
* You also need to specify an alias of the joined data.
|
|
220
201
|
* Optionally, you can add condition and parameters used in condition.
|
|
221
202
|
*/
|
|
222
|
-
|
|
223
|
-
if (condition === void 0) { condition = ""; }
|
|
203
|
+
leftJoinAndSelect(entityOrProperty, alias, condition, parameters) {
|
|
224
204
|
this.addSelect(alias);
|
|
225
205
|
this.leftJoin(entityOrProperty, alias, condition, parameters);
|
|
226
206
|
return this;
|
|
227
|
-
}
|
|
207
|
+
}
|
|
228
208
|
/**
|
|
229
209
|
* INNER JOINs, SELECTs the data returned by a join and MAPs all that data to some entity's property.
|
|
230
210
|
* This is extremely useful when you want to select some data and map it to some virtual property.
|
|
@@ -232,12 +212,11 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
232
212
|
* You also need to specify an alias of the joined data.
|
|
233
213
|
* Optionally, you can add condition and parameters used in condition.
|
|
234
214
|
*/
|
|
235
|
-
|
|
236
|
-
if (condition === void 0) { condition = ""; }
|
|
215
|
+
innerJoinAndMapMany(mapToProperty, entityOrProperty, alias, condition, parameters) {
|
|
237
216
|
this.addSelect(alias);
|
|
238
217
|
this.join("INNER", entityOrProperty, alias, condition, parameters, mapToProperty, true);
|
|
239
218
|
return this;
|
|
240
|
-
}
|
|
219
|
+
}
|
|
241
220
|
/**
|
|
242
221
|
* INNER JOINs, SELECTs the data returned by a join and MAPs all that data to some entity's property.
|
|
243
222
|
* This is extremely useful when you want to select some data and map it to some virtual property.
|
|
@@ -245,12 +224,11 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
245
224
|
* You also need to specify an alias of the joined data.
|
|
246
225
|
* Optionally, you can add condition and parameters used in condition.
|
|
247
226
|
*/
|
|
248
|
-
|
|
249
|
-
if (condition === void 0) { condition = ""; }
|
|
227
|
+
innerJoinAndMapOne(mapToProperty, entityOrProperty, alias, condition, parameters) {
|
|
250
228
|
this.addSelect(alias);
|
|
251
229
|
this.join("INNER", entityOrProperty, alias, condition, parameters, mapToProperty, false);
|
|
252
230
|
return this;
|
|
253
|
-
}
|
|
231
|
+
}
|
|
254
232
|
/**
|
|
255
233
|
* LEFT JOINs, SELECTs the data returned by a join and MAPs all that data to some entity's property.
|
|
256
234
|
* This is extremely useful when you want to select some data and map it to some virtual property.
|
|
@@ -258,12 +236,11 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
258
236
|
* You also need to specify an alias of the joined data.
|
|
259
237
|
* Optionally, you can add condition and parameters used in condition.
|
|
260
238
|
*/
|
|
261
|
-
|
|
262
|
-
if (condition === void 0) { condition = ""; }
|
|
239
|
+
leftJoinAndMapMany(mapToProperty, entityOrProperty, alias, condition, parameters) {
|
|
263
240
|
this.addSelect(alias);
|
|
264
241
|
this.join("LEFT", entityOrProperty, alias, condition, parameters, mapToProperty, true);
|
|
265
242
|
return this;
|
|
266
|
-
}
|
|
243
|
+
}
|
|
267
244
|
/**
|
|
268
245
|
* LEFT JOINs, SELECTs the data returned by a join and MAPs all that data to some entity's property.
|
|
269
246
|
* This is extremely useful when you want to select some data and map it to some virtual property.
|
|
@@ -271,23 +248,23 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
271
248
|
* You also need to specify an alias of the joined data.
|
|
272
249
|
* Optionally, you can add condition and parameters used in condition.
|
|
273
250
|
*/
|
|
274
|
-
|
|
275
|
-
if (condition === void 0) { condition = ""; }
|
|
251
|
+
leftJoinAndMapOne(mapToProperty, entityOrProperty, alias, condition, parameters) {
|
|
276
252
|
this.addSelect(alias);
|
|
277
253
|
this.join("LEFT", entityOrProperty, alias, condition, parameters, mapToProperty, false);
|
|
278
254
|
return this;
|
|
279
|
-
}
|
|
255
|
+
}
|
|
280
256
|
/**
|
|
281
257
|
* LEFT JOINs relation id and maps it into some entity's property.
|
|
282
258
|
* Optionally, you can add condition and parameters used in condition.
|
|
283
259
|
*/
|
|
284
|
-
|
|
285
|
-
|
|
260
|
+
loadRelationIdAndMap(mapToProperty, relationName, aliasNameOrOptions, queryBuilderFactory) {
|
|
261
|
+
const relationIdAttribute = new RelationIdAttribute(this.expressionMap);
|
|
286
262
|
relationIdAttribute.mapToProperty = mapToProperty;
|
|
287
263
|
relationIdAttribute.relationName = relationName;
|
|
288
264
|
if (typeof aliasNameOrOptions === "string")
|
|
289
265
|
relationIdAttribute.alias = aliasNameOrOptions;
|
|
290
|
-
if (aliasNameOrOptions
|
|
266
|
+
if (typeof aliasNameOrOptions === "object" &&
|
|
267
|
+
aliasNameOrOptions.disableMixedMap)
|
|
291
268
|
relationIdAttribute.disableMixedMap = true;
|
|
292
269
|
relationIdAttribute.queryBuilderFactory = queryBuilderFactory;
|
|
293
270
|
this.expressionMap.relationIdAttributes.push(relationIdAttribute);
|
|
@@ -295,17 +272,17 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
295
272
|
this.expressionMap.createAlias({
|
|
296
273
|
type: "other",
|
|
297
274
|
name: relationIdAttribute.junctionAlias,
|
|
298
|
-
metadata: relationIdAttribute.relation.junctionEntityMetadata
|
|
275
|
+
metadata: relationIdAttribute.relation.junctionEntityMetadata,
|
|
299
276
|
});
|
|
300
277
|
}
|
|
301
278
|
return this;
|
|
302
|
-
}
|
|
279
|
+
}
|
|
303
280
|
/**
|
|
304
281
|
* Counts number of entities of entity's relation and maps the value into some entity's property.
|
|
305
282
|
* Optionally, you can add condition and parameters used in condition.
|
|
306
283
|
*/
|
|
307
|
-
|
|
308
|
-
|
|
284
|
+
loadRelationCountAndMap(mapToProperty, relationName, aliasName, queryBuilderFactory) {
|
|
285
|
+
const relationCountAttribute = new RelationCountAttribute(this.expressionMap);
|
|
309
286
|
relationCountAttribute.mapToProperty = mapToProperty;
|
|
310
287
|
relationCountAttribute.relationName = relationName;
|
|
311
288
|
relationCountAttribute.alias = aliasName;
|
|
@@ -313,81 +290,80 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
313
290
|
this.expressionMap.relationCountAttributes.push(relationCountAttribute);
|
|
314
291
|
this.expressionMap.createAlias({
|
|
315
292
|
type: "other",
|
|
316
|
-
name: relationCountAttribute.junctionAlias
|
|
293
|
+
name: relationCountAttribute.junctionAlias,
|
|
317
294
|
});
|
|
318
295
|
if (relationCountAttribute.relation.junctionEntityMetadata) {
|
|
319
296
|
this.expressionMap.createAlias({
|
|
320
297
|
type: "other",
|
|
321
298
|
name: relationCountAttribute.junctionAlias,
|
|
322
|
-
metadata: relationCountAttribute.relation.junctionEntityMetadata
|
|
299
|
+
metadata: relationCountAttribute.relation.junctionEntityMetadata,
|
|
323
300
|
});
|
|
324
301
|
}
|
|
325
302
|
return this;
|
|
326
|
-
}
|
|
303
|
+
}
|
|
327
304
|
/**
|
|
328
305
|
* Loads all relation ids for all relations of the selected entity.
|
|
329
306
|
* All relation ids will be mapped to relation property themself.
|
|
330
307
|
* If array of strings is given then loads only relation ids of the given properties.
|
|
331
308
|
*/
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
this.expressionMap.mainAlias.metadata.relations.forEach(
|
|
335
|
-
if (options !== undefined &&
|
|
309
|
+
loadAllRelationIds(options) {
|
|
310
|
+
// todo: add skip relations
|
|
311
|
+
this.expressionMap.mainAlias.metadata.relations.forEach((relation) => {
|
|
312
|
+
if (options !== undefined &&
|
|
313
|
+
options.relations !== undefined &&
|
|
314
|
+
options.relations.indexOf(relation.propertyPath) === -1)
|
|
336
315
|
return;
|
|
337
|
-
|
|
316
|
+
this.loadRelationIdAndMap(this.expressionMap.mainAlias.name +
|
|
317
|
+
"." +
|
|
318
|
+
relation.propertyPath, this.expressionMap.mainAlias.name +
|
|
319
|
+
"." +
|
|
320
|
+
relation.propertyPath, options);
|
|
338
321
|
});
|
|
339
322
|
return this;
|
|
340
|
-
}
|
|
323
|
+
}
|
|
341
324
|
/**
|
|
342
325
|
* Sets WHERE condition in the query builder.
|
|
343
326
|
* If you had previously WHERE expression defined,
|
|
344
327
|
* calling this function will override previously set WHERE conditions.
|
|
345
328
|
* Additionally you can add parameters used in where expression.
|
|
346
329
|
*/
|
|
347
|
-
|
|
330
|
+
where(where, parameters) {
|
|
348
331
|
this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
if (condition)
|
|
355
|
-
this.expressionMap.wheres = [{ type: "simple", condition: condition }];
|
|
356
|
-
}
|
|
332
|
+
const condition = this.getWhereCondition(where);
|
|
333
|
+
if (condition)
|
|
334
|
+
this.expressionMap.wheres = [
|
|
335
|
+
{ type: "simple", condition: condition },
|
|
336
|
+
];
|
|
357
337
|
if (parameters)
|
|
358
338
|
this.setParameters(parameters);
|
|
359
339
|
return this;
|
|
360
|
-
}
|
|
340
|
+
}
|
|
361
341
|
/**
|
|
362
342
|
* Adds new AND WHERE condition in the query builder.
|
|
363
343
|
* Additionally you can add parameters used in where expression.
|
|
364
344
|
*/
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
this.expressionMap.wheres.push({ type: "and", condition: this.computeWhereParameter(where) });
|
|
371
|
-
}
|
|
345
|
+
andWhere(where, parameters) {
|
|
346
|
+
this.expressionMap.wheres.push({
|
|
347
|
+
type: "and",
|
|
348
|
+
condition: this.getWhereCondition(where),
|
|
349
|
+
});
|
|
372
350
|
if (parameters)
|
|
373
351
|
this.setParameters(parameters);
|
|
374
352
|
return this;
|
|
375
|
-
}
|
|
353
|
+
}
|
|
376
354
|
/**
|
|
377
355
|
* Adds new OR WHERE condition in the query builder.
|
|
378
356
|
* Additionally you can add parameters used in where expression.
|
|
379
357
|
*/
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
this.expressionMap.wheres.push({ type: "or", condition: this.computeWhereParameter(where) });
|
|
386
|
-
}
|
|
358
|
+
orWhere(where, parameters) {
|
|
359
|
+
this.expressionMap.wheres.push({
|
|
360
|
+
type: "or",
|
|
361
|
+
condition: this.getWhereCondition(where),
|
|
362
|
+
});
|
|
387
363
|
if (parameters)
|
|
388
364
|
this.setParameters(parameters);
|
|
389
365
|
return this;
|
|
390
|
-
}
|
|
366
|
+
}
|
|
391
367
|
/**
|
|
392
368
|
* Adds new AND WHERE with conditions for the given ids.
|
|
393
369
|
*
|
|
@@ -396,9 +372,9 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
396
372
|
* If you have multiple primary keys you need to pass object with property names and values specified,
|
|
397
373
|
* for example [{ firstId: 1, secondId: 2 }, { firstId: 2, secondId: 3 }, ...]
|
|
398
374
|
*/
|
|
399
|
-
|
|
400
|
-
return this.where(this.
|
|
401
|
-
}
|
|
375
|
+
whereInIds(ids) {
|
|
376
|
+
return this.where(this.getWhereInIdsCondition(ids));
|
|
377
|
+
}
|
|
402
378
|
/**
|
|
403
379
|
* Adds new AND WHERE with conditions for the given ids.
|
|
404
380
|
*
|
|
@@ -407,9 +383,9 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
407
383
|
* If you have multiple primary keys you need to pass object with property names and values specified,
|
|
408
384
|
* for example [{ firstId: 1, secondId: 2 }, { firstId: 2, secondId: 3 }, ...]
|
|
409
385
|
*/
|
|
410
|
-
|
|
411
|
-
return this.andWhere(this.
|
|
412
|
-
}
|
|
386
|
+
andWhereInIds(ids) {
|
|
387
|
+
return this.andWhere(this.getWhereInIdsCondition(ids));
|
|
388
|
+
}
|
|
413
389
|
/**
|
|
414
390
|
* Adds new OR WHERE with conditions for the given ids.
|
|
415
391
|
*
|
|
@@ -418,47 +394,47 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
418
394
|
* If you have multiple primary keys you need to pass object with property names and values specified,
|
|
419
395
|
* for example [{ firstId: 1, secondId: 2 }, { firstId: 2, secondId: 3 }, ...]
|
|
420
396
|
*/
|
|
421
|
-
|
|
422
|
-
return this.orWhere(this.
|
|
423
|
-
}
|
|
397
|
+
orWhereInIds(ids) {
|
|
398
|
+
return this.orWhere(this.getWhereInIdsCondition(ids));
|
|
399
|
+
}
|
|
424
400
|
/**
|
|
425
401
|
* Sets HAVING condition in the query builder.
|
|
426
402
|
* If you had previously HAVING expression defined,
|
|
427
403
|
* calling this function will override previously set HAVING conditions.
|
|
428
404
|
* Additionally you can add parameters used in where expression.
|
|
429
405
|
*/
|
|
430
|
-
|
|
406
|
+
having(having, parameters) {
|
|
431
407
|
this.expressionMap.havings.push({ type: "simple", condition: having });
|
|
432
408
|
if (parameters)
|
|
433
409
|
this.setParameters(parameters);
|
|
434
410
|
return this;
|
|
435
|
-
}
|
|
411
|
+
}
|
|
436
412
|
/**
|
|
437
413
|
* Adds new AND HAVING condition in the query builder.
|
|
438
414
|
* Additionally you can add parameters used in where expression.
|
|
439
415
|
*/
|
|
440
|
-
|
|
416
|
+
andHaving(having, parameters) {
|
|
441
417
|
this.expressionMap.havings.push({ type: "and", condition: having });
|
|
442
418
|
if (parameters)
|
|
443
419
|
this.setParameters(parameters);
|
|
444
420
|
return this;
|
|
445
|
-
}
|
|
421
|
+
}
|
|
446
422
|
/**
|
|
447
423
|
* Adds new OR HAVING condition in the query builder.
|
|
448
424
|
* Additionally you can add parameters used in where expression.
|
|
449
425
|
*/
|
|
450
|
-
|
|
426
|
+
orHaving(having, parameters) {
|
|
451
427
|
this.expressionMap.havings.push({ type: "or", condition: having });
|
|
452
428
|
if (parameters)
|
|
453
429
|
this.setParameters(parameters);
|
|
454
430
|
return this;
|
|
455
|
-
}
|
|
431
|
+
}
|
|
456
432
|
/**
|
|
457
433
|
* Sets GROUP BY condition in the query builder.
|
|
458
434
|
* If you had previously GROUP BY expression defined,
|
|
459
435
|
* calling this function will override previously set GROUP BY conditions.
|
|
460
436
|
*/
|
|
461
|
-
|
|
437
|
+
groupBy(groupBy) {
|
|
462
438
|
if (groupBy) {
|
|
463
439
|
this.expressionMap.groupBys = [groupBy];
|
|
464
440
|
}
|
|
@@ -466,36 +442,38 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
466
442
|
this.expressionMap.groupBys = [];
|
|
467
443
|
}
|
|
468
444
|
return this;
|
|
469
|
-
}
|
|
445
|
+
}
|
|
470
446
|
/**
|
|
471
447
|
* Adds GROUP BY condition in the query builder.
|
|
472
448
|
*/
|
|
473
|
-
|
|
449
|
+
addGroupBy(groupBy) {
|
|
474
450
|
this.expressionMap.groupBys.push(groupBy);
|
|
475
451
|
return this;
|
|
476
|
-
}
|
|
452
|
+
}
|
|
477
453
|
/**
|
|
478
454
|
* Sets ORDER BY condition in the query builder.
|
|
479
455
|
* If you had previously ORDER BY expression defined,
|
|
480
456
|
* calling this function will override previously set ORDER BY conditions.
|
|
481
457
|
*/
|
|
482
|
-
|
|
483
|
-
if (order === void 0) { order = "ASC"; }
|
|
484
|
-
var _a, _b;
|
|
458
|
+
orderBy(sort, order = "ASC", nulls) {
|
|
485
459
|
if (order !== undefined && order !== "ASC" && order !== "DESC")
|
|
486
|
-
throw new
|
|
487
|
-
if (nulls !== undefined &&
|
|
488
|
-
|
|
460
|
+
throw new TypeORMError(`SelectQueryBuilder.addOrderBy "order" can accept only "ASC" and "DESC" values.`);
|
|
461
|
+
if (nulls !== undefined &&
|
|
462
|
+
nulls !== "NULLS FIRST" &&
|
|
463
|
+
nulls !== "NULLS LAST")
|
|
464
|
+
throw new TypeORMError(`SelectQueryBuilder.addOrderBy "nulls" can accept only "NULLS FIRST" and "NULLS LAST" values.`);
|
|
489
465
|
if (sort) {
|
|
490
|
-
if (sort
|
|
466
|
+
if (typeof sort === "object") {
|
|
491
467
|
this.expressionMap.orderBys = sort;
|
|
492
468
|
}
|
|
493
469
|
else {
|
|
494
470
|
if (nulls) {
|
|
495
|
-
this.expressionMap.orderBys =
|
|
471
|
+
this.expressionMap.orderBys = {
|
|
472
|
+
[sort]: { order, nulls },
|
|
473
|
+
};
|
|
496
474
|
}
|
|
497
475
|
else {
|
|
498
|
-
this.expressionMap.orderBys =
|
|
476
|
+
this.expressionMap.orderBys = { [sort]: order };
|
|
499
477
|
}
|
|
500
478
|
}
|
|
501
479
|
}
|
|
@@ -503,467 +481,355 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
503
481
|
this.expressionMap.orderBys = {};
|
|
504
482
|
}
|
|
505
483
|
return this;
|
|
506
|
-
}
|
|
484
|
+
}
|
|
507
485
|
/**
|
|
508
486
|
* Adds ORDER BY condition in the query builder.
|
|
509
487
|
*/
|
|
510
|
-
|
|
511
|
-
if (order === void 0) { order = "ASC"; }
|
|
488
|
+
addOrderBy(sort, order = "ASC", nulls) {
|
|
512
489
|
if (order !== undefined && order !== "ASC" && order !== "DESC")
|
|
513
|
-
throw new
|
|
514
|
-
if (nulls !== undefined &&
|
|
515
|
-
|
|
490
|
+
throw new TypeORMError(`SelectQueryBuilder.addOrderBy "order" can accept only "ASC" and "DESC" values.`);
|
|
491
|
+
if (nulls !== undefined &&
|
|
492
|
+
nulls !== "NULLS FIRST" &&
|
|
493
|
+
nulls !== "NULLS LAST")
|
|
494
|
+
throw new TypeORMError(`SelectQueryBuilder.addOrderBy "nulls" can accept only "NULLS FIRST" and "NULLS LAST" values.`);
|
|
516
495
|
if (nulls) {
|
|
517
|
-
this.expressionMap.orderBys[sort] = { order
|
|
496
|
+
this.expressionMap.orderBys[sort] = { order, nulls };
|
|
518
497
|
}
|
|
519
498
|
else {
|
|
520
499
|
this.expressionMap.orderBys[sort] = order;
|
|
521
500
|
}
|
|
522
501
|
return this;
|
|
523
|
-
}
|
|
502
|
+
}
|
|
524
503
|
/**
|
|
525
504
|
* Set's LIMIT - maximum number of rows to be selected.
|
|
526
505
|
* NOTE that it may not work as you expect if you are using joins.
|
|
527
506
|
* If you want to implement pagination, and you are having join in your query,
|
|
528
507
|
* then use instead take method instead.
|
|
529
508
|
*/
|
|
530
|
-
|
|
509
|
+
limit(limit) {
|
|
531
510
|
this.expressionMap.limit = this.normalizeNumber(limit);
|
|
532
|
-
if (this.expressionMap.limit !== undefined &&
|
|
533
|
-
|
|
511
|
+
if (this.expressionMap.limit !== undefined &&
|
|
512
|
+
isNaN(this.expressionMap.limit))
|
|
513
|
+
throw new TypeORMError(`Provided "limit" value is not a number. Please provide a numeric value.`);
|
|
534
514
|
return this;
|
|
535
|
-
}
|
|
515
|
+
}
|
|
536
516
|
/**
|
|
537
517
|
* Set's OFFSET - selection offset.
|
|
538
518
|
* NOTE that it may not work as you expect if you are using joins.
|
|
539
519
|
* If you want to implement pagination, and you are having join in your query,
|
|
540
520
|
* then use instead skip method instead.
|
|
541
521
|
*/
|
|
542
|
-
|
|
522
|
+
offset(offset) {
|
|
543
523
|
this.expressionMap.offset = this.normalizeNumber(offset);
|
|
544
|
-
if (this.expressionMap.offset !== undefined &&
|
|
545
|
-
|
|
524
|
+
if (this.expressionMap.offset !== undefined &&
|
|
525
|
+
isNaN(this.expressionMap.offset))
|
|
526
|
+
throw new TypeORMError(`Provided "offset" value is not a number. Please provide a numeric value.`);
|
|
546
527
|
return this;
|
|
547
|
-
}
|
|
528
|
+
}
|
|
548
529
|
/**
|
|
549
530
|
* Sets maximal number of entities to take.
|
|
550
531
|
*/
|
|
551
|
-
|
|
532
|
+
take(take) {
|
|
552
533
|
this.expressionMap.take = this.normalizeNumber(take);
|
|
553
|
-
if (this.expressionMap.take !== undefined &&
|
|
554
|
-
|
|
534
|
+
if (this.expressionMap.take !== undefined &&
|
|
535
|
+
isNaN(this.expressionMap.take))
|
|
536
|
+
throw new TypeORMError(`Provided "take" value is not a number. Please provide a numeric value.`);
|
|
555
537
|
return this;
|
|
556
|
-
}
|
|
538
|
+
}
|
|
557
539
|
/**
|
|
558
540
|
* Sets number of entities to skip.
|
|
559
541
|
*/
|
|
560
|
-
|
|
542
|
+
skip(skip) {
|
|
561
543
|
this.expressionMap.skip = this.normalizeNumber(skip);
|
|
562
|
-
if (this.expressionMap.skip !== undefined &&
|
|
563
|
-
|
|
544
|
+
if (this.expressionMap.skip !== undefined &&
|
|
545
|
+
isNaN(this.expressionMap.skip))
|
|
546
|
+
throw new TypeORMError(`Provided "skip" value is not a number. Please provide a numeric value.`);
|
|
564
547
|
return this;
|
|
565
|
-
}
|
|
548
|
+
}
|
|
549
|
+
/**
|
|
550
|
+
* Set certain index to be used by the query.
|
|
551
|
+
*
|
|
552
|
+
* @param index Name of index to be used.
|
|
553
|
+
*/
|
|
554
|
+
useIndex(index) {
|
|
555
|
+
this.expressionMap.useIndex = index;
|
|
556
|
+
return this;
|
|
557
|
+
}
|
|
566
558
|
/**
|
|
567
559
|
* Sets locking mode.
|
|
568
560
|
*/
|
|
569
|
-
|
|
561
|
+
setLock(lockMode, lockVersion, lockTables) {
|
|
570
562
|
this.expressionMap.lockMode = lockMode;
|
|
571
563
|
this.expressionMap.lockVersion = lockVersion;
|
|
564
|
+
this.expressionMap.lockTables = lockTables;
|
|
572
565
|
return this;
|
|
573
|
-
}
|
|
566
|
+
}
|
|
567
|
+
/**
|
|
568
|
+
* Disables the global condition of "non-deleted" for the entity with delete date columns.
|
|
569
|
+
*/
|
|
570
|
+
withDeleted() {
|
|
571
|
+
this.expressionMap.withDeleted = true;
|
|
572
|
+
return this;
|
|
573
|
+
}
|
|
574
574
|
/**
|
|
575
575
|
* Gets first raw result returned by execution of generated query builder sql.
|
|
576
576
|
*/
|
|
577
|
-
|
|
578
|
-
return
|
|
579
|
-
|
|
580
|
-
switch (_a.label) {
|
|
581
|
-
case 0: return [4 /*yield*/, this.getRawMany()];
|
|
582
|
-
case 1: return [2 /*return*/, (_a.sent())[0]];
|
|
583
|
-
}
|
|
584
|
-
});
|
|
585
|
-
});
|
|
586
|
-
};
|
|
577
|
+
async getRawOne() {
|
|
578
|
+
return (await this.getRawMany())[0];
|
|
579
|
+
}
|
|
587
580
|
/**
|
|
588
581
|
* Gets all raw results returned by execution of generated query builder sql.
|
|
589
582
|
*/
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
if (!transactionStartedByUs) return [3 /*break*/, 7];
|
|
616
|
-
return [4 /*yield*/, queryRunner.commitTransaction()];
|
|
617
|
-
case 5:
|
|
618
|
-
_a.sent();
|
|
619
|
-
if (!this.expressionMap.callObservers) return [3 /*break*/, 7];
|
|
620
|
-
return [4 /*yield*/, new ObserverExecutor(this.connection.observers).execute()];
|
|
621
|
-
case 6:
|
|
622
|
-
_a.sent();
|
|
623
|
-
_a.label = 7;
|
|
624
|
-
case 7: return [2 /*return*/, results];
|
|
625
|
-
case 8:
|
|
626
|
-
error_1 = _a.sent();
|
|
627
|
-
if (!transactionStartedByUs) return [3 /*break*/, 12];
|
|
628
|
-
_a.label = 9;
|
|
629
|
-
case 9:
|
|
630
|
-
_a.trys.push([9, 11, , 12]);
|
|
631
|
-
return [4 /*yield*/, queryRunner.rollbackTransaction()];
|
|
632
|
-
case 10:
|
|
633
|
-
_a.sent();
|
|
634
|
-
return [3 /*break*/, 12];
|
|
635
|
-
case 11:
|
|
636
|
-
rollbackError_1 = _a.sent();
|
|
637
|
-
return [3 /*break*/, 12];
|
|
638
|
-
case 12: throw error_1;
|
|
639
|
-
case 13:
|
|
640
|
-
if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 15];
|
|
641
|
-
return [4 /*yield*/, queryRunner.release()];
|
|
642
|
-
case 14:
|
|
643
|
-
_a.sent();
|
|
644
|
-
_a.label = 15;
|
|
645
|
-
case 15: return [7 /*endfinally*/];
|
|
646
|
-
case 16: return [2 /*return*/];
|
|
583
|
+
async getRawMany() {
|
|
584
|
+
if (this.expressionMap.lockMode === "optimistic")
|
|
585
|
+
throw new OptimisticLockCanNotBeUsedError();
|
|
586
|
+
this.expressionMap.queryEntity = false;
|
|
587
|
+
const queryRunner = this.obtainQueryRunner();
|
|
588
|
+
let transactionStartedByUs = false;
|
|
589
|
+
try {
|
|
590
|
+
// start transaction if it was enabled
|
|
591
|
+
if (this.expressionMap.useTransaction === true &&
|
|
592
|
+
queryRunner.isTransactionActive === false) {
|
|
593
|
+
await queryRunner.startTransaction();
|
|
594
|
+
transactionStartedByUs = true;
|
|
595
|
+
}
|
|
596
|
+
const results = await this.loadRawResults(queryRunner);
|
|
597
|
+
// close transaction if we started it
|
|
598
|
+
if (transactionStartedByUs) {
|
|
599
|
+
await queryRunner.commitTransaction();
|
|
600
|
+
}
|
|
601
|
+
return results;
|
|
602
|
+
}
|
|
603
|
+
catch (error) {
|
|
604
|
+
// rollback transaction if we started it
|
|
605
|
+
if (transactionStartedByUs) {
|
|
606
|
+
try {
|
|
607
|
+
await queryRunner.rollbackTransaction();
|
|
647
608
|
}
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
609
|
+
catch (rollbackError) { }
|
|
610
|
+
}
|
|
611
|
+
throw error;
|
|
612
|
+
}
|
|
613
|
+
finally {
|
|
614
|
+
if (queryRunner !== this.queryRunner) {
|
|
615
|
+
// means we created our own query runner
|
|
616
|
+
await queryRunner.release();
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
}
|
|
651
620
|
/**
|
|
652
621
|
* Executes sql generated by query builder and returns object with raw results and entities created from them.
|
|
653
622
|
*/
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
if (!transactionStartedByUs) return [3 /*break*/, 7];
|
|
678
|
-
return [4 /*yield*/, queryRunner.commitTransaction()];
|
|
679
|
-
case 5:
|
|
680
|
-
_a.sent();
|
|
681
|
-
if (!this.expressionMap.callObservers) return [3 /*break*/, 7];
|
|
682
|
-
return [4 /*yield*/, new ObserverExecutor(this.connection.observers).execute()];
|
|
683
|
-
case 6:
|
|
684
|
-
_a.sent();
|
|
685
|
-
_a.label = 7;
|
|
686
|
-
case 7: return [2 /*return*/, results];
|
|
687
|
-
case 8:
|
|
688
|
-
error_2 = _a.sent();
|
|
689
|
-
if (!transactionStartedByUs) return [3 /*break*/, 12];
|
|
690
|
-
_a.label = 9;
|
|
691
|
-
case 9:
|
|
692
|
-
_a.trys.push([9, 11, , 12]);
|
|
693
|
-
return [4 /*yield*/, queryRunner.rollbackTransaction()];
|
|
694
|
-
case 10:
|
|
695
|
-
_a.sent();
|
|
696
|
-
return [3 /*break*/, 12];
|
|
697
|
-
case 11:
|
|
698
|
-
rollbackError_2 = _a.sent();
|
|
699
|
-
return [3 /*break*/, 12];
|
|
700
|
-
case 12: throw error_2;
|
|
701
|
-
case 13:
|
|
702
|
-
if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 15];
|
|
703
|
-
return [4 /*yield*/, queryRunner.release()];
|
|
704
|
-
case 14:
|
|
705
|
-
_a.sent();
|
|
706
|
-
_a.label = 15;
|
|
707
|
-
case 15: return [7 /*endfinally*/];
|
|
708
|
-
case 16: return [2 /*return*/];
|
|
623
|
+
async getRawAndEntities() {
|
|
624
|
+
const queryRunner = this.obtainQueryRunner();
|
|
625
|
+
let transactionStartedByUs = false;
|
|
626
|
+
try {
|
|
627
|
+
// start transaction if it was enabled
|
|
628
|
+
if (this.expressionMap.useTransaction === true &&
|
|
629
|
+
queryRunner.isTransactionActive === false) {
|
|
630
|
+
await queryRunner.startTransaction();
|
|
631
|
+
transactionStartedByUs = true;
|
|
632
|
+
}
|
|
633
|
+
this.expressionMap.queryEntity = true;
|
|
634
|
+
const results = await this.executeEntitiesAndRawResults(queryRunner);
|
|
635
|
+
// close transaction if we started it
|
|
636
|
+
if (transactionStartedByUs) {
|
|
637
|
+
await queryRunner.commitTransaction();
|
|
638
|
+
}
|
|
639
|
+
return results;
|
|
640
|
+
}
|
|
641
|
+
catch (error) {
|
|
642
|
+
// rollback transaction if we started it
|
|
643
|
+
if (transactionStartedByUs) {
|
|
644
|
+
try {
|
|
645
|
+
await queryRunner.rollbackTransaction();
|
|
709
646
|
}
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
647
|
+
catch (rollbackError) { }
|
|
648
|
+
}
|
|
649
|
+
throw error;
|
|
650
|
+
}
|
|
651
|
+
finally {
|
|
652
|
+
if (queryRunner !== this.queryRunner)
|
|
653
|
+
// means we created our own query runner
|
|
654
|
+
await queryRunner.release();
|
|
655
|
+
}
|
|
656
|
+
}
|
|
713
657
|
/**
|
|
714
658
|
* Gets single entity returned by execution of generated query builder sql.
|
|
715
659
|
*/
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
660
|
+
async getOne() {
|
|
661
|
+
const results = await this.getRawAndEntities();
|
|
662
|
+
const result = results.entities[0];
|
|
663
|
+
if (result &&
|
|
664
|
+
this.expressionMap.lockMode === "optimistic" &&
|
|
665
|
+
this.expressionMap.lockVersion) {
|
|
666
|
+
const metadata = this.expressionMap.mainAlias.metadata;
|
|
667
|
+
if (this.expressionMap.lockVersion instanceof Date) {
|
|
668
|
+
const actualVersion = metadata.updateDateColumn.getEntityValue(result); // what if columns arent set?
|
|
669
|
+
if (actualVersion.getTime() !==
|
|
670
|
+
this.expressionMap.lockVersion.getTime())
|
|
671
|
+
throw new OptimisticLockVersionMismatchError(metadata.name, this.expressionMap.lockVersion, actualVersion);
|
|
672
|
+
}
|
|
673
|
+
else {
|
|
674
|
+
const actualVersion = metadata.versionColumn.getEntityValue(result); // what if columns arent set?
|
|
675
|
+
if (actualVersion !== this.expressionMap.lockVersion)
|
|
676
|
+
throw new OptimisticLockVersionMismatchError(metadata.name, this.expressionMap.lockVersion, actualVersion);
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
if (result === undefined) {
|
|
680
|
+
return null;
|
|
681
|
+
}
|
|
682
|
+
return result;
|
|
683
|
+
}
|
|
684
|
+
/**
|
|
685
|
+
* Gets the first entity returned by execution of generated query builder sql or rejects the returned promise on error.
|
|
686
|
+
*/
|
|
687
|
+
async getOneOrFail() {
|
|
688
|
+
const entity = await this.getOne();
|
|
689
|
+
if (!entity) {
|
|
690
|
+
throw new EntityNotFoundError(this.expressionMap.mainAlias.target, this);
|
|
691
|
+
}
|
|
692
|
+
return entity;
|
|
693
|
+
}
|
|
743
694
|
/**
|
|
744
695
|
* Gets entities returned by execution of generated query builder sql.
|
|
745
696
|
*/
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
if (this.expressionMap.lockMode === "optimistic")
|
|
753
|
-
throw new OptimisticLockCanNotBeUsedError();
|
|
754
|
-
return [4 /*yield*/, this.getRawAndEntities()];
|
|
755
|
-
case 1:
|
|
756
|
-
results = _a.sent();
|
|
757
|
-
return [2 /*return*/, results.entities];
|
|
758
|
-
}
|
|
759
|
-
});
|
|
760
|
-
});
|
|
761
|
-
};
|
|
697
|
+
async getMany() {
|
|
698
|
+
if (this.expressionMap.lockMode === "optimistic")
|
|
699
|
+
throw new OptimisticLockCanNotBeUsedError();
|
|
700
|
+
const results = await this.getRawAndEntities();
|
|
701
|
+
return results.entities;
|
|
702
|
+
}
|
|
762
703
|
/**
|
|
763
704
|
* Gets count - number of entities selected by sql generated by this query builder.
|
|
764
705
|
* Count excludes all limitations set by setFirstResult and setMaxResults methods call.
|
|
765
706
|
*/
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
if (!transactionStartedByUs) return [3 /*break*/, 7];
|
|
792
|
-
return [4 /*yield*/, queryRunner.commitTransaction()];
|
|
793
|
-
case 5:
|
|
794
|
-
_a.sent();
|
|
795
|
-
if (!this.expressionMap.callObservers) return [3 /*break*/, 7];
|
|
796
|
-
return [4 /*yield*/, new ObserverExecutor(this.connection.observers).execute()];
|
|
797
|
-
case 6:
|
|
798
|
-
_a.sent();
|
|
799
|
-
_a.label = 7;
|
|
800
|
-
case 7: return [2 /*return*/, results];
|
|
801
|
-
case 8:
|
|
802
|
-
error_3 = _a.sent();
|
|
803
|
-
if (!transactionStartedByUs) return [3 /*break*/, 12];
|
|
804
|
-
_a.label = 9;
|
|
805
|
-
case 9:
|
|
806
|
-
_a.trys.push([9, 11, , 12]);
|
|
807
|
-
return [4 /*yield*/, queryRunner.rollbackTransaction()];
|
|
808
|
-
case 10:
|
|
809
|
-
_a.sent();
|
|
810
|
-
return [3 /*break*/, 12];
|
|
811
|
-
case 11:
|
|
812
|
-
rollbackError_3 = _a.sent();
|
|
813
|
-
return [3 /*break*/, 12];
|
|
814
|
-
case 12: throw error_3;
|
|
815
|
-
case 13:
|
|
816
|
-
if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 15];
|
|
817
|
-
return [4 /*yield*/, queryRunner.release()];
|
|
818
|
-
case 14:
|
|
819
|
-
_a.sent();
|
|
820
|
-
_a.label = 15;
|
|
821
|
-
case 15: return [7 /*endfinally*/];
|
|
822
|
-
case 16: return [2 /*return*/];
|
|
707
|
+
async getCount() {
|
|
708
|
+
if (this.expressionMap.lockMode === "optimistic")
|
|
709
|
+
throw new OptimisticLockCanNotBeUsedError();
|
|
710
|
+
const queryRunner = this.obtainQueryRunner();
|
|
711
|
+
let transactionStartedByUs = false;
|
|
712
|
+
try {
|
|
713
|
+
// start transaction if it was enabled
|
|
714
|
+
if (this.expressionMap.useTransaction === true &&
|
|
715
|
+
queryRunner.isTransactionActive === false) {
|
|
716
|
+
await queryRunner.startTransaction();
|
|
717
|
+
transactionStartedByUs = true;
|
|
718
|
+
}
|
|
719
|
+
this.expressionMap.queryEntity = false;
|
|
720
|
+
const results = await this.executeCountQuery(queryRunner);
|
|
721
|
+
// close transaction if we started it
|
|
722
|
+
if (transactionStartedByUs) {
|
|
723
|
+
await queryRunner.commitTransaction();
|
|
724
|
+
}
|
|
725
|
+
return results;
|
|
726
|
+
}
|
|
727
|
+
catch (error) {
|
|
728
|
+
// rollback transaction if we started it
|
|
729
|
+
if (transactionStartedByUs) {
|
|
730
|
+
try {
|
|
731
|
+
await queryRunner.rollbackTransaction();
|
|
823
732
|
}
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
733
|
+
catch (rollbackError) { }
|
|
734
|
+
}
|
|
735
|
+
throw error;
|
|
736
|
+
}
|
|
737
|
+
finally {
|
|
738
|
+
if (queryRunner !== this.queryRunner)
|
|
739
|
+
// means we created our own query runner
|
|
740
|
+
await queryRunner.release();
|
|
741
|
+
}
|
|
742
|
+
}
|
|
827
743
|
/**
|
|
828
744
|
* Executes built SQL query and returns entities and overall entities count (without limitation).
|
|
829
745
|
* This method is useful to build pagination.
|
|
830
746
|
*/
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
case 6:
|
|
864
|
-
_a.sent();
|
|
865
|
-
if (!this.expressionMap.callObservers) return [3 /*break*/, 8];
|
|
866
|
-
return [4 /*yield*/, new ObserverExecutor(this.connection.observers).execute()];
|
|
867
|
-
case 7:
|
|
868
|
-
_a.sent();
|
|
869
|
-
_a.label = 8;
|
|
870
|
-
case 8: return [2 /*return*/, results];
|
|
871
|
-
case 9:
|
|
872
|
-
error_4 = _a.sent();
|
|
873
|
-
if (!transactionStartedByUs) return [3 /*break*/, 13];
|
|
874
|
-
_a.label = 10;
|
|
875
|
-
case 10:
|
|
876
|
-
_a.trys.push([10, 12, , 13]);
|
|
877
|
-
return [4 /*yield*/, queryRunner.rollbackTransaction()];
|
|
878
|
-
case 11:
|
|
879
|
-
_a.sent();
|
|
880
|
-
return [3 /*break*/, 13];
|
|
881
|
-
case 12:
|
|
882
|
-
rollbackError_4 = _a.sent();
|
|
883
|
-
return [3 /*break*/, 13];
|
|
884
|
-
case 13: throw error_4;
|
|
885
|
-
case 14:
|
|
886
|
-
if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 16];
|
|
887
|
-
return [4 /*yield*/, queryRunner.release()];
|
|
888
|
-
case 15:
|
|
889
|
-
_a.sent();
|
|
890
|
-
_a.label = 16;
|
|
891
|
-
case 16: return [7 /*endfinally*/];
|
|
892
|
-
case 17: return [2 /*return*/];
|
|
747
|
+
async getManyAndCount() {
|
|
748
|
+
if (this.expressionMap.lockMode === "optimistic")
|
|
749
|
+
throw new OptimisticLockCanNotBeUsedError();
|
|
750
|
+
const queryRunner = this.obtainQueryRunner();
|
|
751
|
+
let transactionStartedByUs = false;
|
|
752
|
+
try {
|
|
753
|
+
// start transaction if it was enabled
|
|
754
|
+
if (this.expressionMap.useTransaction === true &&
|
|
755
|
+
queryRunner.isTransactionActive === false) {
|
|
756
|
+
await queryRunner.startTransaction();
|
|
757
|
+
transactionStartedByUs = true;
|
|
758
|
+
}
|
|
759
|
+
this.expressionMap.queryEntity = true;
|
|
760
|
+
const entitiesAndRaw = await this.executeEntitiesAndRawResults(queryRunner);
|
|
761
|
+
this.expressionMap.queryEntity = false;
|
|
762
|
+
const cacheId = this.expressionMap.cacheId;
|
|
763
|
+
// Creates a new cacheId for the count query, or it will retreive the above query results
|
|
764
|
+
// and count will return 0.
|
|
765
|
+
this.expressionMap.cacheId = cacheId ? `${cacheId}-count` : cacheId;
|
|
766
|
+
const count = await this.executeCountQuery(queryRunner);
|
|
767
|
+
const results = [entitiesAndRaw.entities, count];
|
|
768
|
+
// close transaction if we started it
|
|
769
|
+
if (transactionStartedByUs) {
|
|
770
|
+
await queryRunner.commitTransaction();
|
|
771
|
+
}
|
|
772
|
+
return results;
|
|
773
|
+
}
|
|
774
|
+
catch (error) {
|
|
775
|
+
// rollback transaction if we started it
|
|
776
|
+
if (transactionStartedByUs) {
|
|
777
|
+
try {
|
|
778
|
+
await queryRunner.rollbackTransaction();
|
|
893
779
|
}
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
780
|
+
catch (rollbackError) { }
|
|
781
|
+
}
|
|
782
|
+
throw error;
|
|
783
|
+
}
|
|
784
|
+
finally {
|
|
785
|
+
if (queryRunner !== this.queryRunner)
|
|
786
|
+
// means we created our own query runner
|
|
787
|
+
await queryRunner.release();
|
|
788
|
+
}
|
|
789
|
+
}
|
|
897
790
|
/**
|
|
898
791
|
* Executes built SQL query and returns raw data stream.
|
|
899
792
|
*/
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
_b.sent();
|
|
931
|
-
if (!this.expressionMap.callObservers) return [3 /*break*/, 6];
|
|
932
|
-
return [4 /*yield*/, new ObserverExecutor(this.connection.observers).execute()];
|
|
933
|
-
case 5:
|
|
934
|
-
_b.sent();
|
|
935
|
-
_b.label = 6;
|
|
936
|
-
case 6: return [2 /*return*/, results];
|
|
937
|
-
case 7:
|
|
938
|
-
error_5 = _b.sent();
|
|
939
|
-
if (!transactionStartedByUs) return [3 /*break*/, 11];
|
|
940
|
-
_b.label = 8;
|
|
941
|
-
case 8:
|
|
942
|
-
_b.trys.push([8, 10, , 11]);
|
|
943
|
-
return [4 /*yield*/, queryRunner.rollbackTransaction()];
|
|
944
|
-
case 9:
|
|
945
|
-
_b.sent();
|
|
946
|
-
return [3 /*break*/, 11];
|
|
947
|
-
case 10:
|
|
948
|
-
rollbackError_5 = _b.sent();
|
|
949
|
-
return [3 /*break*/, 11];
|
|
950
|
-
case 11: throw error_5;
|
|
951
|
-
case 12:
|
|
952
|
-
if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 14];
|
|
953
|
-
return [4 /*yield*/, queryRunner.release()];
|
|
954
|
-
case 13:
|
|
955
|
-
_b.sent();
|
|
956
|
-
_b.label = 14;
|
|
957
|
-
case 14: return [7 /*endfinally*/];
|
|
958
|
-
case 15: return [2 /*return*/];
|
|
793
|
+
async stream() {
|
|
794
|
+
this.expressionMap.queryEntity = false;
|
|
795
|
+
const [sql, parameters] = this.getQueryAndParameters();
|
|
796
|
+
const queryRunner = this.obtainQueryRunner();
|
|
797
|
+
let transactionStartedByUs = false;
|
|
798
|
+
try {
|
|
799
|
+
// start transaction if it was enabled
|
|
800
|
+
if (this.expressionMap.useTransaction === true &&
|
|
801
|
+
queryRunner.isTransactionActive === false) {
|
|
802
|
+
await queryRunner.startTransaction();
|
|
803
|
+
transactionStartedByUs = true;
|
|
804
|
+
}
|
|
805
|
+
const releaseFn = () => {
|
|
806
|
+
if (queryRunner !== this.queryRunner)
|
|
807
|
+
// means we created our own query runner
|
|
808
|
+
return queryRunner.release();
|
|
809
|
+
return;
|
|
810
|
+
};
|
|
811
|
+
const results = queryRunner.stream(sql, parameters, releaseFn, releaseFn);
|
|
812
|
+
// close transaction if we started it
|
|
813
|
+
if (transactionStartedByUs) {
|
|
814
|
+
await queryRunner.commitTransaction();
|
|
815
|
+
}
|
|
816
|
+
return results;
|
|
817
|
+
}
|
|
818
|
+
catch (error) {
|
|
819
|
+
// rollback transaction if we started it
|
|
820
|
+
if (transactionStartedByUs) {
|
|
821
|
+
try {
|
|
822
|
+
await queryRunner.rollbackTransaction();
|
|
959
823
|
}
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
824
|
+
catch (rollbackError) { }
|
|
825
|
+
}
|
|
826
|
+
throw error;
|
|
827
|
+
}
|
|
828
|
+
}
|
|
963
829
|
/**
|
|
964
830
|
* Enables or disables query result caching.
|
|
965
831
|
*/
|
|
966
|
-
|
|
832
|
+
cache(enabledOrMillisecondsOrId, maybeMilliseconds) {
|
|
967
833
|
if (typeof enabledOrMillisecondsOrId === "boolean") {
|
|
968
834
|
this.expressionMap.cache = enabledOrMillisecondsOrId;
|
|
969
835
|
}
|
|
@@ -971,7 +837,8 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
971
837
|
this.expressionMap.cache = true;
|
|
972
838
|
this.expressionMap.cacheDuration = enabledOrMillisecondsOrId;
|
|
973
839
|
}
|
|
974
|
-
else if (typeof enabledOrMillisecondsOrId === "string" ||
|
|
840
|
+
else if (typeof enabledOrMillisecondsOrId === "string" ||
|
|
841
|
+
typeof enabledOrMillisecondsOrId === "number") {
|
|
975
842
|
this.expressionMap.cache = true;
|
|
976
843
|
this.expressionMap.cacheId = enabledOrMillisecondsOrId;
|
|
977
844
|
}
|
|
@@ -979,154 +846,173 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
979
846
|
this.expressionMap.cacheDuration = maybeMilliseconds;
|
|
980
847
|
}
|
|
981
848
|
return this;
|
|
982
|
-
}
|
|
849
|
+
}
|
|
983
850
|
/**
|
|
984
851
|
* Sets extra options that can be used to configure how query builder works.
|
|
985
852
|
*/
|
|
986
|
-
|
|
853
|
+
setOption(option) {
|
|
987
854
|
this.expressionMap.options.push(option);
|
|
988
855
|
return this;
|
|
989
|
-
}
|
|
990
|
-
/**
|
|
991
|
-
* Disables eager relations.
|
|
992
|
-
*/
|
|
993
|
-
SelectQueryBuilder.prototype.disableEagerRelations = function (disabled) {
|
|
994
|
-
if (disabled === void 0) { disabled = true; }
|
|
995
|
-
this.expressionMap.eagerRelations = disabled === true ? false : true;
|
|
996
|
-
return this;
|
|
997
|
-
};
|
|
856
|
+
}
|
|
998
857
|
// -------------------------------------------------------------------------
|
|
999
858
|
// Protected Methods
|
|
1000
859
|
// -------------------------------------------------------------------------
|
|
1001
|
-
|
|
860
|
+
join(direction, entityOrProperty, aliasName, condition, parameters, mapToProperty, isMappingMany) {
|
|
1002
861
|
this.setParameters(parameters || {});
|
|
1003
|
-
|
|
862
|
+
const joinAttribute = new JoinAttribute(this.connection, this.expressionMap);
|
|
1004
863
|
joinAttribute.direction = direction;
|
|
1005
864
|
joinAttribute.mapToProperty = mapToProperty;
|
|
1006
865
|
joinAttribute.isMappingMany = isMappingMany;
|
|
1007
866
|
joinAttribute.entityOrProperty = entityOrProperty; // relationName
|
|
1008
|
-
joinAttribute.condition = condition; // joinInverseSideCondition
|
|
867
|
+
joinAttribute.condition = condition ? condition : undefined; // joinInverseSideCondition
|
|
1009
868
|
// joinAttribute.junctionAlias = joinAttribute.relation.isOwning ? parentAlias + "_" + destinationTableAlias : destinationTableAlias + "_" + parentAlias;
|
|
1010
869
|
this.expressionMap.joinAttributes.push(joinAttribute);
|
|
1011
870
|
if (joinAttribute.metadata) {
|
|
871
|
+
if (joinAttribute.metadata.deleteDateColumn &&
|
|
872
|
+
!this.expressionMap.withDeleted) {
|
|
873
|
+
const conditionDeleteColumn = `${aliasName}.${joinAttribute.metadata.deleteDateColumn.propertyName} IS NULL`;
|
|
874
|
+
joinAttribute.condition = joinAttribute.condition
|
|
875
|
+
? ` ${joinAttribute.condition} AND ${conditionDeleteColumn}`
|
|
876
|
+
: `${conditionDeleteColumn}`;
|
|
877
|
+
}
|
|
1012
878
|
// todo: find and set metadata right there?
|
|
1013
879
|
joinAttribute.alias = this.expressionMap.createAlias({
|
|
1014
880
|
type: "join",
|
|
1015
881
|
name: aliasName,
|
|
1016
|
-
metadata: joinAttribute.metadata
|
|
882
|
+
metadata: joinAttribute.metadata,
|
|
1017
883
|
});
|
|
1018
|
-
if (joinAttribute.relation &&
|
|
884
|
+
if (joinAttribute.relation &&
|
|
885
|
+
joinAttribute.relation.junctionEntityMetadata) {
|
|
1019
886
|
this.expressionMap.createAlias({
|
|
1020
887
|
type: "join",
|
|
1021
888
|
name: joinAttribute.junctionAlias,
|
|
1022
|
-
metadata: joinAttribute.relation.junctionEntityMetadata
|
|
889
|
+
metadata: joinAttribute.relation.junctionEntityMetadata,
|
|
1023
890
|
});
|
|
1024
891
|
}
|
|
1025
892
|
}
|
|
1026
893
|
else {
|
|
1027
|
-
|
|
1028
|
-
if (entityOrProperty
|
|
1029
|
-
|
|
894
|
+
let subQuery = "";
|
|
895
|
+
if (typeof entityOrProperty === "function") {
|
|
896
|
+
const subQueryBuilder = entityOrProperty(this.subQuery());
|
|
1030
897
|
this.setParameters(subQueryBuilder.getParameters());
|
|
1031
898
|
subQuery = subQueryBuilder.getQuery();
|
|
1032
899
|
}
|
|
1033
900
|
else {
|
|
1034
901
|
subQuery = entityOrProperty;
|
|
1035
902
|
}
|
|
1036
|
-
|
|
903
|
+
const isSubQuery = typeof entityOrProperty === "function" ||
|
|
904
|
+
(entityOrProperty.substr(0, 1) === "(" &&
|
|
905
|
+
entityOrProperty.substr(-1) === ")");
|
|
1037
906
|
joinAttribute.alias = this.expressionMap.createAlias({
|
|
1038
907
|
type: "join",
|
|
1039
908
|
name: aliasName,
|
|
1040
|
-
tablePath: isSubQuery === false
|
|
909
|
+
tablePath: isSubQuery === false
|
|
910
|
+
? entityOrProperty
|
|
911
|
+
: undefined,
|
|
1041
912
|
subQuery: isSubQuery === true ? subQuery : undefined,
|
|
1042
913
|
});
|
|
1043
914
|
}
|
|
1044
|
-
}
|
|
915
|
+
}
|
|
1045
916
|
/**
|
|
1046
917
|
* Creates "SELECT FROM" part of SQL query.
|
|
1047
918
|
*/
|
|
1048
|
-
|
|
1049
|
-
var _this = this;
|
|
919
|
+
createSelectExpression() {
|
|
1050
920
|
if (!this.expressionMap.mainAlias)
|
|
1051
|
-
throw new
|
|
921
|
+
throw new TypeORMError("Cannot build query because main alias is not set (call qb#from method)");
|
|
1052
922
|
// todo throw exception if selects or from is missing
|
|
1053
|
-
|
|
1054
|
-
|
|
923
|
+
const allSelects = [];
|
|
924
|
+
const excludedSelects = [];
|
|
1055
925
|
if (this.expressionMap.mainAlias.hasMetadata) {
|
|
1056
|
-
|
|
1057
|
-
allSelects.push
|
|
1058
|
-
excludedSelects.push
|
|
926
|
+
const metadata = this.expressionMap.mainAlias.metadata;
|
|
927
|
+
allSelects.push(...this.buildEscapedEntityColumnSelects(this.expressionMap.mainAlias.name, metadata));
|
|
928
|
+
excludedSelects.push(...this.findEntityColumnSelects(this.expressionMap.mainAlias.name, metadata));
|
|
1059
929
|
}
|
|
1060
930
|
// add selects from joins
|
|
1061
|
-
this.expressionMap.joinAttributes
|
|
1062
|
-
.forEach(function (join) {
|
|
931
|
+
this.expressionMap.joinAttributes.forEach((join) => {
|
|
1063
932
|
if (join.metadata) {
|
|
1064
|
-
allSelects.push
|
|
1065
|
-
excludedSelects.push
|
|
933
|
+
allSelects.push(...this.buildEscapedEntityColumnSelects(join.alias.name, join.metadata));
|
|
934
|
+
excludedSelects.push(...this.findEntityColumnSelects(join.alias.name, join.metadata));
|
|
1066
935
|
}
|
|
1067
936
|
else {
|
|
1068
|
-
|
|
937
|
+
const hasMainAlias = this.expressionMap.selects.some((select) => select.selection === join.alias.name);
|
|
1069
938
|
if (hasMainAlias) {
|
|
1070
|
-
allSelects.push({
|
|
1071
|
-
|
|
939
|
+
allSelects.push({
|
|
940
|
+
selection: this.escape(join.alias.name) + ".*",
|
|
941
|
+
});
|
|
942
|
+
const excludedSelect = this.expressionMap.selects.find((select) => select.selection === join.alias.name);
|
|
1072
943
|
excludedSelects.push(excludedSelect);
|
|
1073
944
|
}
|
|
1074
945
|
}
|
|
1075
946
|
});
|
|
1076
947
|
// add all other selects
|
|
1077
948
|
this.expressionMap.selects
|
|
1078
|
-
.filter(
|
|
1079
|
-
.forEach(
|
|
949
|
+
.filter((select) => excludedSelects.indexOf(select) === -1)
|
|
950
|
+
.forEach((select) => allSelects.push({
|
|
951
|
+
selection: this.replacePropertyNames(select.selection),
|
|
952
|
+
aliasName: select.aliasName,
|
|
953
|
+
}));
|
|
1080
954
|
// if still selection is empty, then simply set it to all (*)
|
|
1081
955
|
if (allSelects.length === 0)
|
|
1082
956
|
allSelects.push({ selection: "*" });
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
break;
|
|
1089
|
-
case "pessimistic_write":
|
|
1090
|
-
lock = " WITH (UPDLOCK, ROWLOCK)";
|
|
1091
|
-
break;
|
|
1092
|
-
case "dirty_read":
|
|
1093
|
-
lock = " WITH (NOLOCK)";
|
|
1094
|
-
break;
|
|
957
|
+
// Use certain index
|
|
958
|
+
let useIndex = "";
|
|
959
|
+
if (this.expressionMap.useIndex) {
|
|
960
|
+
if (DriverUtils.isMySQLFamily(this.connection.driver)) {
|
|
961
|
+
useIndex = ` USE INDEX (${this.expressionMap.useIndex})`;
|
|
1095
962
|
}
|
|
1096
963
|
}
|
|
1097
964
|
// create a selection query
|
|
1098
|
-
|
|
1099
|
-
.filter(
|
|
1100
|
-
.
|
|
965
|
+
const froms = this.expressionMap.aliases
|
|
966
|
+
.filter((alias) => alias.type === "from" &&
|
|
967
|
+
(alias.tablePath || alias.subQuery))
|
|
968
|
+
.map((alias) => {
|
|
1101
969
|
if (alias.subQuery)
|
|
1102
|
-
return alias.subQuery + " " +
|
|
1103
|
-
return
|
|
970
|
+
return alias.subQuery + " " + this.escape(alias.name);
|
|
971
|
+
return (this.getTableName(alias.tablePath) +
|
|
972
|
+
" " +
|
|
973
|
+
this.escape(alias.name));
|
|
1104
974
|
});
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
975
|
+
const select = this.createSelectDistinctExpression();
|
|
976
|
+
const selection = allSelects
|
|
977
|
+
.map((select) => select.selection +
|
|
978
|
+
(select.aliasName
|
|
979
|
+
? " AS " + this.escape(select.aliasName)
|
|
980
|
+
: ""))
|
|
981
|
+
.join(", ");
|
|
982
|
+
return (select +
|
|
983
|
+
selection +
|
|
984
|
+
" FROM " +
|
|
985
|
+
froms.join(", ") +
|
|
986
|
+
this.createTableLockExpression() +
|
|
987
|
+
useIndex);
|
|
988
|
+
}
|
|
1109
989
|
/**
|
|
1110
990
|
* Creates select | select distinct part of SQL query.
|
|
1111
991
|
*/
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
992
|
+
createSelectDistinctExpression() {
|
|
993
|
+
const { selectDistinct, selectDistinctOn, maxExecutionTime } = this.expressionMap;
|
|
994
|
+
const { driver } = this.connection;
|
|
995
|
+
let select = "SELECT ";
|
|
996
|
+
if (maxExecutionTime > 0) {
|
|
997
|
+
if (DriverUtils.isMySQLFamily(driver)) {
|
|
998
|
+
select += `/*+ MAX_EXECUTION_TIME(${this.expressionMap.maxExecutionTime}) */ `;
|
|
999
|
+
}
|
|
1000
|
+
}
|
|
1001
|
+
if (driver.options.type === "postgres" && selectDistinctOn.length > 0) {
|
|
1002
|
+
const selectDistinctOnMap = selectDistinctOn
|
|
1003
|
+
.map((on) => this.replacePropertyNames(on))
|
|
1004
|
+
.join(", ");
|
|
1005
|
+
select = `SELECT DISTINCT ON (${selectDistinctOnMap}) `;
|
|
1120
1006
|
}
|
|
1121
1007
|
else if (selectDistinct) {
|
|
1122
1008
|
select = "SELECT DISTINCT ";
|
|
1123
1009
|
}
|
|
1124
1010
|
return select;
|
|
1125
|
-
}
|
|
1011
|
+
}
|
|
1126
1012
|
/**
|
|
1127
1013
|
* Creates "JOIN" part of SQL query.
|
|
1128
1014
|
*/
|
|
1129
|
-
|
|
1015
|
+
createJoinExpression() {
|
|
1130
1016
|
// examples:
|
|
1131
1017
|
// select from owning side
|
|
1132
1018
|
// qb.select("post")
|
|
@@ -1134,131 +1020,256 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
1134
1020
|
// select from non-owning side
|
|
1135
1021
|
// qb.select("category")
|
|
1136
1022
|
// .leftJoinAndSelect("category.post", "post");
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1023
|
+
const joins = this.expressionMap.joinAttributes.map((joinAttr) => {
|
|
1024
|
+
const relation = joinAttr.relation;
|
|
1025
|
+
const destinationTableName = joinAttr.tablePath;
|
|
1026
|
+
const destinationTableAlias = joinAttr.alias.name;
|
|
1027
|
+
let appendedCondition = joinAttr.condition
|
|
1028
|
+
? " AND (" + joinAttr.condition + ")"
|
|
1029
|
+
: "";
|
|
1030
|
+
const parentAlias = joinAttr.parentAlias;
|
|
1144
1031
|
// if join was build without relation (e.g. without "post.category") then it means that we have direct
|
|
1145
1032
|
// table to join, without junction table involved. This means we simply join direct table.
|
|
1146
1033
|
if (!parentAlias || !relation) {
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1034
|
+
const destinationJoin = joinAttr.alias.subQuery
|
|
1035
|
+
? joinAttr.alias.subQuery
|
|
1036
|
+
: this.getTableName(destinationTableName);
|
|
1037
|
+
return (" " +
|
|
1038
|
+
joinAttr.direction +
|
|
1039
|
+
" JOIN " +
|
|
1040
|
+
destinationJoin +
|
|
1041
|
+
" " +
|
|
1042
|
+
this.escape(destinationTableAlias) +
|
|
1043
|
+
this.createTableLockExpression() +
|
|
1044
|
+
(joinAttr.condition
|
|
1045
|
+
? " ON " + this.replacePropertyNames(joinAttr.condition)
|
|
1046
|
+
: ""));
|
|
1150
1047
|
}
|
|
1151
1048
|
// if real entity relation is involved
|
|
1152
1049
|
if (relation.isManyToOne || relation.isOneToOneOwner) {
|
|
1153
1050
|
// JOIN `category` `category` ON `category`.`id` = `post`.`categoryId`
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1051
|
+
const condition = relation.joinColumns
|
|
1052
|
+
.map((joinColumn) => {
|
|
1053
|
+
return (destinationTableAlias +
|
|
1054
|
+
"." +
|
|
1055
|
+
joinColumn.referencedColumn.propertyPath +
|
|
1056
|
+
"=" +
|
|
1057
|
+
parentAlias +
|
|
1058
|
+
"." +
|
|
1059
|
+
relation.propertyPath +
|
|
1060
|
+
"." +
|
|
1061
|
+
joinColumn.referencedColumn.propertyPath);
|
|
1062
|
+
})
|
|
1063
|
+
.join(" AND ");
|
|
1064
|
+
return (" " +
|
|
1065
|
+
joinAttr.direction +
|
|
1066
|
+
" JOIN " +
|
|
1067
|
+
this.getTableName(destinationTableName) +
|
|
1068
|
+
" " +
|
|
1069
|
+
this.escape(destinationTableAlias) +
|
|
1070
|
+
this.createTableLockExpression() +
|
|
1071
|
+
" ON " +
|
|
1072
|
+
this.replacePropertyNames(condition + appendedCondition));
|
|
1159
1073
|
}
|
|
1160
1074
|
else if (relation.isOneToMany || relation.isOneToOneNotOwner) {
|
|
1161
1075
|
// JOIN `post` `post` ON `post`.`categoryId` = `category`.`id`
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1076
|
+
const condition = relation
|
|
1077
|
+
.inverseRelation.joinColumns.map((joinColumn) => {
|
|
1078
|
+
if (relation.inverseEntityMetadata.tableType ===
|
|
1079
|
+
"entity-child" &&
|
|
1080
|
+
relation.inverseEntityMetadata.discriminatorColumn) {
|
|
1081
|
+
appendedCondition +=
|
|
1082
|
+
" AND " +
|
|
1083
|
+
destinationTableAlias +
|
|
1084
|
+
"." +
|
|
1085
|
+
relation.inverseEntityMetadata
|
|
1086
|
+
.discriminatorColumn.databaseName +
|
|
1087
|
+
"='" +
|
|
1088
|
+
relation.inverseEntityMetadata
|
|
1089
|
+
.discriminatorValue +
|
|
1090
|
+
"'";
|
|
1091
|
+
}
|
|
1092
|
+
return (destinationTableAlias +
|
|
1093
|
+
"." +
|
|
1094
|
+
relation.inverseRelation.propertyPath +
|
|
1095
|
+
"." +
|
|
1096
|
+
joinColumn.referencedColumn.propertyPath +
|
|
1097
|
+
"=" +
|
|
1098
|
+
parentAlias +
|
|
1099
|
+
"." +
|
|
1100
|
+
joinColumn.referencedColumn.propertyPath);
|
|
1101
|
+
})
|
|
1102
|
+
.join(" AND ");
|
|
1103
|
+
return (" " +
|
|
1104
|
+
joinAttr.direction +
|
|
1105
|
+
" JOIN " +
|
|
1106
|
+
this.getTableName(destinationTableName) +
|
|
1107
|
+
" " +
|
|
1108
|
+
this.escape(destinationTableAlias) +
|
|
1109
|
+
this.createTableLockExpression() +
|
|
1110
|
+
" ON " +
|
|
1111
|
+
this.replacePropertyNames(condition + appendedCondition));
|
|
1112
|
+
}
|
|
1113
|
+
else {
|
|
1114
|
+
// means many-to-many
|
|
1115
|
+
const junctionTableName = relation.junctionEntityMetadata.tablePath;
|
|
1116
|
+
const junctionAlias = joinAttr.junctionAlias;
|
|
1117
|
+
let junctionCondition = "", destinationCondition = "";
|
|
1172
1118
|
if (relation.isOwning) {
|
|
1173
|
-
junctionCondition = relation.joinColumns
|
|
1119
|
+
junctionCondition = relation.joinColumns
|
|
1120
|
+
.map((joinColumn) => {
|
|
1174
1121
|
// `post_category`.`postId` = `post`.`id`
|
|
1175
|
-
return
|
|
1176
|
-
|
|
1177
|
-
|
|
1122
|
+
return (junctionAlias +
|
|
1123
|
+
"." +
|
|
1124
|
+
joinColumn.propertyPath +
|
|
1125
|
+
"=" +
|
|
1126
|
+
parentAlias +
|
|
1127
|
+
"." +
|
|
1128
|
+
joinColumn.referencedColumn.propertyPath);
|
|
1129
|
+
})
|
|
1130
|
+
.join(" AND ");
|
|
1131
|
+
destinationCondition = relation.inverseJoinColumns
|
|
1132
|
+
.map((joinColumn) => {
|
|
1178
1133
|
// `category`.`id` = `post_category`.`categoryId`
|
|
1179
|
-
return destinationTableAlias +
|
|
1180
|
-
|
|
1134
|
+
return (destinationTableAlias +
|
|
1135
|
+
"." +
|
|
1136
|
+
joinColumn.referencedColumn.propertyPath +
|
|
1137
|
+
"=" +
|
|
1138
|
+
junctionAlias +
|
|
1139
|
+
"." +
|
|
1140
|
+
joinColumn.propertyPath);
|
|
1141
|
+
})
|
|
1142
|
+
.join(" AND ");
|
|
1181
1143
|
}
|
|
1182
1144
|
else {
|
|
1183
|
-
junctionCondition = relation
|
|
1145
|
+
junctionCondition = relation
|
|
1146
|
+
.inverseRelation.inverseJoinColumns.map((joinColumn) => {
|
|
1184
1147
|
// `post_category`.`categoryId` = `category`.`id`
|
|
1185
|
-
return
|
|
1186
|
-
|
|
1187
|
-
|
|
1148
|
+
return (junctionAlias +
|
|
1149
|
+
"." +
|
|
1150
|
+
joinColumn.propertyPath +
|
|
1151
|
+
"=" +
|
|
1152
|
+
parentAlias +
|
|
1153
|
+
"." +
|
|
1154
|
+
joinColumn.referencedColumn.propertyPath);
|
|
1155
|
+
})
|
|
1156
|
+
.join(" AND ");
|
|
1157
|
+
destinationCondition = relation
|
|
1158
|
+
.inverseRelation.joinColumns.map((joinColumn) => {
|
|
1188
1159
|
// `post`.`id` = `post_category`.`postId`
|
|
1189
|
-
return destinationTableAlias +
|
|
1190
|
-
|
|
1160
|
+
return (destinationTableAlias +
|
|
1161
|
+
"." +
|
|
1162
|
+
joinColumn.referencedColumn.propertyPath +
|
|
1163
|
+
"=" +
|
|
1164
|
+
junctionAlias +
|
|
1165
|
+
"." +
|
|
1166
|
+
joinColumn.propertyPath);
|
|
1167
|
+
})
|
|
1168
|
+
.join(" AND ");
|
|
1191
1169
|
}
|
|
1192
|
-
return
|
|
1193
|
-
|
|
1170
|
+
return (" " +
|
|
1171
|
+
joinAttr.direction +
|
|
1172
|
+
" JOIN " +
|
|
1173
|
+
this.getTableName(junctionTableName) +
|
|
1174
|
+
" " +
|
|
1175
|
+
this.escape(junctionAlias) +
|
|
1176
|
+
this.createTableLockExpression() +
|
|
1177
|
+
" ON " +
|
|
1178
|
+
this.replacePropertyNames(junctionCondition) +
|
|
1179
|
+
" " +
|
|
1180
|
+
joinAttr.direction +
|
|
1181
|
+
" JOIN " +
|
|
1182
|
+
this.getTableName(destinationTableName) +
|
|
1183
|
+
" " +
|
|
1184
|
+
this.escape(destinationTableAlias) +
|
|
1185
|
+
this.createTableLockExpression() +
|
|
1186
|
+
" ON " +
|
|
1187
|
+
this.replacePropertyNames(destinationCondition + appendedCondition));
|
|
1194
1188
|
}
|
|
1195
1189
|
});
|
|
1196
1190
|
return joins.join(" ");
|
|
1197
|
-
}
|
|
1191
|
+
}
|
|
1198
1192
|
/**
|
|
1199
1193
|
* Creates "GROUP BY" part of SQL query.
|
|
1200
1194
|
*/
|
|
1201
|
-
|
|
1195
|
+
createGroupByExpression() {
|
|
1202
1196
|
if (!this.expressionMap.groupBys || !this.expressionMap.groupBys.length)
|
|
1203
1197
|
return "";
|
|
1204
|
-
return " GROUP BY " +
|
|
1205
|
-
|
|
1198
|
+
return (" GROUP BY " +
|
|
1199
|
+
this.replacePropertyNames(this.expressionMap.groupBys.join(", ")));
|
|
1200
|
+
}
|
|
1206
1201
|
/**
|
|
1207
1202
|
* Creates "ORDER BY" part of SQL query.
|
|
1208
1203
|
*/
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
var orderBys = this.expressionMap.allOrderBys;
|
|
1204
|
+
createOrderByExpression() {
|
|
1205
|
+
const orderBys = this.expressionMap.allOrderBys;
|
|
1212
1206
|
if (Object.keys(orderBys).length > 0)
|
|
1213
|
-
return " ORDER BY " +
|
|
1214
|
-
.
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1207
|
+
return (" ORDER BY " +
|
|
1208
|
+
Object.keys(orderBys)
|
|
1209
|
+
.map((columnName) => {
|
|
1210
|
+
if (typeof orderBys[columnName] === "string") {
|
|
1211
|
+
return (this.replacePropertyNames(columnName) +
|
|
1212
|
+
" " +
|
|
1213
|
+
orderBys[columnName]);
|
|
1214
|
+
}
|
|
1215
|
+
else {
|
|
1216
|
+
return (this.replacePropertyNames(columnName) +
|
|
1217
|
+
" " +
|
|
1218
|
+
orderBys[columnName].order +
|
|
1219
|
+
" " +
|
|
1220
|
+
orderBys[columnName].nulls);
|
|
1221
|
+
}
|
|
1222
|
+
})
|
|
1223
|
+
.join(", "));
|
|
1223
1224
|
return "";
|
|
1224
|
-
}
|
|
1225
|
+
}
|
|
1225
1226
|
/**
|
|
1226
1227
|
* Creates "LIMIT" and "OFFSET" parts of SQL query.
|
|
1227
1228
|
*/
|
|
1228
|
-
|
|
1229
|
+
createLimitOffsetExpression() {
|
|
1229
1230
|
// in the case if nothing is joined in the query builder we don't need to make two requests to get paginated results
|
|
1230
1231
|
// we can use regular limit / offset, that's why we add offset and limit construction here based on skip and take values
|
|
1231
|
-
|
|
1232
|
-
if (!offset &&
|
|
1232
|
+
let offset = this.expressionMap.offset, limit = this.expressionMap.limit;
|
|
1233
|
+
if (!offset &&
|
|
1234
|
+
!limit &&
|
|
1235
|
+
this.expressionMap.joinAttributes.length === 0) {
|
|
1233
1236
|
offset = this.expressionMap.skip;
|
|
1234
1237
|
limit = this.expressionMap.take;
|
|
1235
1238
|
}
|
|
1236
|
-
if (this.connection.driver
|
|
1239
|
+
if (this.connection.driver.options.type === "mssql") {
|
|
1237
1240
|
// Due to a limitation in SQL Server's parser implementation it does not support using
|
|
1238
1241
|
// OFFSET or FETCH NEXT without an ORDER BY clause being provided. In cases where the
|
|
1239
1242
|
// user does not request one we insert a dummy ORDER BY that does nothing and should
|
|
1240
1243
|
// have no effect on the query planner or on the order of the results returned.
|
|
1241
1244
|
// https://dba.stackexchange.com/a/193799
|
|
1242
|
-
|
|
1243
|
-
if ((limit || offset) &&
|
|
1245
|
+
let prefix = "";
|
|
1246
|
+
if ((limit || offset) &&
|
|
1247
|
+
Object.keys(this.expressionMap.allOrderBys).length <= 0) {
|
|
1244
1248
|
prefix = " ORDER BY (SELECT NULL)";
|
|
1245
1249
|
}
|
|
1246
1250
|
if (limit && offset)
|
|
1247
|
-
return prefix +
|
|
1251
|
+
return (prefix +
|
|
1252
|
+
" OFFSET " +
|
|
1253
|
+
offset +
|
|
1254
|
+
" ROWS FETCH NEXT " +
|
|
1255
|
+
limit +
|
|
1256
|
+
" ROWS ONLY");
|
|
1248
1257
|
if (limit)
|
|
1249
|
-
return prefix + " OFFSET 0 ROWS FETCH NEXT " + limit + " ROWS ONLY";
|
|
1258
|
+
return (prefix + " OFFSET 0 ROWS FETCH NEXT " + limit + " ROWS ONLY");
|
|
1250
1259
|
if (offset)
|
|
1251
1260
|
return prefix + " OFFSET " + offset + " ROWS";
|
|
1252
1261
|
}
|
|
1253
|
-
else if (
|
|
1262
|
+
else if (DriverUtils.isMySQLFamily(this.connection.driver) ||
|
|
1263
|
+
this.connection.driver.options.type === "aurora-mysql" ||
|
|
1264
|
+
this.connection.driver.options.type === "sap") {
|
|
1254
1265
|
if (limit && offset)
|
|
1255
1266
|
return " LIMIT " + limit + " OFFSET " + offset;
|
|
1256
1267
|
if (limit)
|
|
1257
1268
|
return " LIMIT " + limit;
|
|
1258
1269
|
if (offset)
|
|
1259
|
-
throw new OffsetWithoutLimitNotSupportedError(
|
|
1270
|
+
throw new OffsetWithoutLimitNotSupportedError();
|
|
1260
1271
|
}
|
|
1261
|
-
else if (this.connection.driver
|
|
1272
|
+
else if (DriverUtils.isSQLiteFamily(this.connection.driver)) {
|
|
1262
1273
|
if (limit && offset)
|
|
1263
1274
|
return " LIMIT " + limit + " OFFSET " + offset;
|
|
1264
1275
|
if (limit)
|
|
@@ -1266,9 +1277,13 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
1266
1277
|
if (offset)
|
|
1267
1278
|
return " LIMIT -1 OFFSET " + offset;
|
|
1268
1279
|
}
|
|
1269
|
-
else if (this.connection.driver
|
|
1280
|
+
else if (this.connection.driver.options.type === "oracle") {
|
|
1270
1281
|
if (limit && offset)
|
|
1271
|
-
return " OFFSET " +
|
|
1282
|
+
return (" OFFSET " +
|
|
1283
|
+
offset +
|
|
1284
|
+
" ROWS FETCH NEXT " +
|
|
1285
|
+
limit +
|
|
1286
|
+
" ROWS ONLY");
|
|
1272
1287
|
if (limit)
|
|
1273
1288
|
return " FETCH NEXT " + limit + " ROWS ONLY";
|
|
1274
1289
|
if (offset)
|
|
@@ -1283,465 +1298,667 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
1283
1298
|
return " OFFSET " + offset;
|
|
1284
1299
|
}
|
|
1285
1300
|
return "";
|
|
1286
|
-
}
|
|
1301
|
+
}
|
|
1302
|
+
/**
|
|
1303
|
+
* Creates "LOCK" part of SELECT Query after table Clause
|
|
1304
|
+
* ex.
|
|
1305
|
+
* SELECT 1
|
|
1306
|
+
* FROM USER U WITH (NOLOCK)
|
|
1307
|
+
* JOIN ORDER O WITH (NOLOCK)
|
|
1308
|
+
* ON U.ID=O.OrderID
|
|
1309
|
+
*/
|
|
1310
|
+
createTableLockExpression() {
|
|
1311
|
+
if (this.connection.driver.options.type === "mssql") {
|
|
1312
|
+
switch (this.expressionMap.lockMode) {
|
|
1313
|
+
case "pessimistic_read":
|
|
1314
|
+
return " WITH (HOLDLOCK, ROWLOCK)";
|
|
1315
|
+
case "pessimistic_write":
|
|
1316
|
+
return " WITH (UPDLOCK, ROWLOCK)";
|
|
1317
|
+
case "dirty_read":
|
|
1318
|
+
return " WITH (NOLOCK)";
|
|
1319
|
+
}
|
|
1320
|
+
}
|
|
1321
|
+
return "";
|
|
1322
|
+
}
|
|
1287
1323
|
/**
|
|
1288
1324
|
* Creates "LOCK" part of SQL query.
|
|
1289
1325
|
*/
|
|
1290
|
-
|
|
1291
|
-
|
|
1326
|
+
createLockExpression() {
|
|
1327
|
+
const driver = this.connection.driver;
|
|
1328
|
+
let lockTablesClause = "";
|
|
1329
|
+
if (this.expressionMap.lockTables) {
|
|
1330
|
+
if (!(driver.options.type === "postgres" ||
|
|
1331
|
+
driver.options.type === "cockroachdb")) {
|
|
1332
|
+
throw new TypeORMError("Lock tables not supported in selected driver");
|
|
1333
|
+
}
|
|
1334
|
+
if (this.expressionMap.lockTables.length < 1) {
|
|
1335
|
+
throw new TypeORMError("lockTables cannot be an empty array");
|
|
1336
|
+
}
|
|
1337
|
+
lockTablesClause = " OF " + this.expressionMap.lockTables.join(", ");
|
|
1338
|
+
}
|
|
1292
1339
|
switch (this.expressionMap.lockMode) {
|
|
1293
1340
|
case "pessimistic_read":
|
|
1294
|
-
if (driver
|
|
1341
|
+
if (DriverUtils.isMySQLFamily(driver) ||
|
|
1342
|
+
driver.options.type === "aurora-mysql") {
|
|
1295
1343
|
return " LOCK IN SHARE MODE";
|
|
1296
1344
|
}
|
|
1297
|
-
else if (driver
|
|
1298
|
-
return " FOR SHARE";
|
|
1345
|
+
else if (driver.options.type === "postgres") {
|
|
1346
|
+
return " FOR SHARE" + lockTablesClause;
|
|
1299
1347
|
}
|
|
1300
|
-
else if (driver
|
|
1348
|
+
else if (driver.options.type === "oracle") {
|
|
1301
1349
|
return " FOR UPDATE";
|
|
1302
1350
|
}
|
|
1303
|
-
else if (driver
|
|
1351
|
+
else if (driver.options.type === "mssql") {
|
|
1304
1352
|
return "";
|
|
1305
1353
|
}
|
|
1306
1354
|
else {
|
|
1307
1355
|
throw new LockNotSupportedOnGivenDriverError();
|
|
1308
1356
|
}
|
|
1309
1357
|
case "pessimistic_write":
|
|
1310
|
-
if (driver
|
|
1358
|
+
if (DriverUtils.isMySQLFamily(driver) ||
|
|
1359
|
+
driver.options.type === "aurora-mysql" ||
|
|
1360
|
+
driver.options.type === "oracle") {
|
|
1311
1361
|
return " FOR UPDATE";
|
|
1312
1362
|
}
|
|
1313
|
-
else if (driver
|
|
1363
|
+
else if (driver.options.type === "postgres" ||
|
|
1364
|
+
driver.options.type === "cockroachdb") {
|
|
1365
|
+
return " FOR UPDATE" + lockTablesClause;
|
|
1366
|
+
}
|
|
1367
|
+
else if (driver.options.type === "mssql") {
|
|
1314
1368
|
return "";
|
|
1315
1369
|
}
|
|
1316
1370
|
else {
|
|
1317
1371
|
throw new LockNotSupportedOnGivenDriverError();
|
|
1318
1372
|
}
|
|
1373
|
+
case "pessimistic_partial_write":
|
|
1374
|
+
if (driver.options.type === "postgres") {
|
|
1375
|
+
return " FOR UPDATE" + lockTablesClause + " SKIP LOCKED";
|
|
1376
|
+
}
|
|
1377
|
+
else if (DriverUtils.isMySQLFamily(driver)) {
|
|
1378
|
+
return " FOR UPDATE SKIP LOCKED";
|
|
1379
|
+
}
|
|
1380
|
+
else {
|
|
1381
|
+
throw new LockNotSupportedOnGivenDriverError();
|
|
1382
|
+
}
|
|
1383
|
+
case "pessimistic_write_or_fail":
|
|
1384
|
+
if (driver.options.type === "postgres" ||
|
|
1385
|
+
driver.options.type === "cockroachdb") {
|
|
1386
|
+
return " FOR UPDATE" + lockTablesClause + " NOWAIT";
|
|
1387
|
+
}
|
|
1388
|
+
else if (DriverUtils.isMySQLFamily(driver)) {
|
|
1389
|
+
return " FOR UPDATE NOWAIT";
|
|
1390
|
+
}
|
|
1391
|
+
else {
|
|
1392
|
+
throw new LockNotSupportedOnGivenDriverError();
|
|
1393
|
+
}
|
|
1394
|
+
case "for_no_key_update":
|
|
1395
|
+
if (driver.options.type === "postgres" ||
|
|
1396
|
+
driver.options.type === "cockroachdb") {
|
|
1397
|
+
return " FOR NO KEY UPDATE" + lockTablesClause;
|
|
1398
|
+
}
|
|
1399
|
+
else {
|
|
1400
|
+
throw new LockNotSupportedOnGivenDriverError();
|
|
1401
|
+
}
|
|
1319
1402
|
default:
|
|
1320
1403
|
return "";
|
|
1321
1404
|
}
|
|
1322
|
-
}
|
|
1405
|
+
}
|
|
1323
1406
|
/**
|
|
1324
1407
|
* Creates "HAVING" part of SQL query.
|
|
1325
1408
|
*/
|
|
1326
|
-
|
|
1327
|
-
var _this = this;
|
|
1409
|
+
createHavingExpression() {
|
|
1328
1410
|
if (!this.expressionMap.havings || !this.expressionMap.havings.length)
|
|
1329
1411
|
return "";
|
|
1330
|
-
|
|
1412
|
+
const conditions = this.expressionMap.havings
|
|
1413
|
+
.map((having, index) => {
|
|
1331
1414
|
switch (having.type) {
|
|
1332
1415
|
case "and":
|
|
1333
|
-
return (index > 0 ? "AND " : "") +
|
|
1416
|
+
return ((index > 0 ? "AND " : "") +
|
|
1417
|
+
this.replacePropertyNames(having.condition));
|
|
1334
1418
|
case "or":
|
|
1335
|
-
return (index > 0 ? "OR " : "") +
|
|
1419
|
+
return ((index > 0 ? "OR " : "") +
|
|
1420
|
+
this.replacePropertyNames(having.condition));
|
|
1336
1421
|
default:
|
|
1337
|
-
return
|
|
1422
|
+
return this.replacePropertyNames(having.condition);
|
|
1338
1423
|
}
|
|
1339
|
-
})
|
|
1424
|
+
})
|
|
1425
|
+
.join(" ");
|
|
1340
1426
|
if (!conditions.length)
|
|
1341
1427
|
return "";
|
|
1342
1428
|
return " HAVING " + conditions;
|
|
1343
|
-
}
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
var columns = [];
|
|
1429
|
+
}
|
|
1430
|
+
buildEscapedEntityColumnSelects(aliasName, metadata) {
|
|
1431
|
+
const hasMainAlias = this.expressionMap.selects.some((select) => select.selection === aliasName);
|
|
1432
|
+
const columns = [];
|
|
1348
1433
|
if (hasMainAlias) {
|
|
1349
|
-
columns.push
|
|
1434
|
+
columns.push(...metadata.columns.filter((column) => column.isSelect === true));
|
|
1350
1435
|
}
|
|
1351
|
-
columns.push
|
|
1352
|
-
return
|
|
1353
|
-
|
|
1436
|
+
columns.push(...metadata.columns.filter((column) => {
|
|
1437
|
+
return this.expressionMap.selects.some((select) => select.selection ===
|
|
1438
|
+
aliasName + "." + column.propertyPath);
|
|
1439
|
+
}));
|
|
1354
1440
|
// if user used partial selection and did not select some primary columns which are required to be selected
|
|
1355
1441
|
// we select those primary columns and mark them as "virtual". Later virtual column values will be removed from final entity
|
|
1356
1442
|
// to make entity contain exactly what user selected
|
|
1357
|
-
if (columns.length === 0)
|
|
1443
|
+
if (columns.length === 0)
|
|
1444
|
+
// however not in the case when nothing (even partial) was selected from this target (for example joins without selection)
|
|
1358
1445
|
return [];
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1446
|
+
const nonSelectedPrimaryColumns = this.expressionMap.queryEntity
|
|
1447
|
+
? metadata.primaryColumns.filter((primaryColumn) => columns.indexOf(primaryColumn) === -1)
|
|
1448
|
+
: [];
|
|
1449
|
+
const allColumns = [...columns, ...nonSelectedPrimaryColumns];
|
|
1450
|
+
const finalSelects = [];
|
|
1451
|
+
allColumns.forEach((column) => {
|
|
1452
|
+
let selectionPath = this.escape(aliasName) + "." + this.escape(column.databaseName);
|
|
1453
|
+
if (this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {
|
|
1454
|
+
if (DriverUtils.isMySQLFamily(this.connection.driver) ||
|
|
1455
|
+
this.connection.driver.options.type === "aurora-mysql") {
|
|
1456
|
+
const useLegacy = this.connection.driver.options.legacySpatialSupport;
|
|
1457
|
+
const asText = useLegacy ? "AsText" : "ST_AsText";
|
|
1458
|
+
selectionPath = `${asText}(${selectionPath})`;
|
|
1369
1459
|
}
|
|
1370
|
-
if (
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1460
|
+
if (this.connection.driver.options.type === "postgres")
|
|
1461
|
+
if (column.precision) {
|
|
1462
|
+
// cast to JSON to trigger parsing in the driver
|
|
1463
|
+
selectionPath = `ST_AsGeoJSON(${selectionPath}, ${column.precision})::json`;
|
|
1464
|
+
}
|
|
1465
|
+
else {
|
|
1466
|
+
selectionPath = `ST_AsGeoJSON(${selectionPath})::json`;
|
|
1467
|
+
}
|
|
1468
|
+
if (this.connection.driver.options.type === "mssql")
|
|
1469
|
+
selectionPath = `${selectionPath}.ToString()`;
|
|
1470
|
+
}
|
|
1471
|
+
const selections = this.expressionMap.selects.filter((select) => select.selection === aliasName + "." + column.propertyPath);
|
|
1472
|
+
if (selections.length) {
|
|
1473
|
+
selections.forEach((selection) => {
|
|
1474
|
+
finalSelects.push({
|
|
1475
|
+
selection: selectionPath,
|
|
1476
|
+
aliasName: selection.aliasName
|
|
1477
|
+
? selection.aliasName
|
|
1478
|
+
: DriverUtils.buildAlias(this.connection.driver, aliasName, column.databaseName),
|
|
1479
|
+
// todo: need to keep in mind that custom selection.aliasName breaks hydrator. fix it later!
|
|
1480
|
+
virtual: selection.virtual,
|
|
1481
|
+
});
|
|
1482
|
+
});
|
|
1483
|
+
}
|
|
1484
|
+
else {
|
|
1485
|
+
finalSelects.push({
|
|
1486
|
+
selection: selectionPath,
|
|
1487
|
+
aliasName: DriverUtils.buildAlias(this.connection.driver, aliasName, column.databaseName),
|
|
1488
|
+
// todo: need to keep in mind that custom selection.aliasName breaks hydrator. fix it later!
|
|
1489
|
+
virtual: hasMainAlias,
|
|
1490
|
+
});
|
|
1491
|
+
}
|
|
1382
1492
|
});
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1493
|
+
return finalSelects;
|
|
1494
|
+
}
|
|
1495
|
+
findEntityColumnSelects(aliasName, metadata) {
|
|
1496
|
+
const mainSelect = this.expressionMap.selects.find((select) => select.selection === aliasName);
|
|
1386
1497
|
if (mainSelect)
|
|
1387
1498
|
return [mainSelect];
|
|
1388
|
-
return this.expressionMap.selects.filter(
|
|
1389
|
-
return metadata.columns.some(
|
|
1499
|
+
return this.expressionMap.selects.filter((select) => {
|
|
1500
|
+
return metadata.columns.some((column) => select.selection === aliasName + "." + column.propertyPath);
|
|
1390
1501
|
});
|
|
1391
|
-
}
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1502
|
+
}
|
|
1503
|
+
computeCountExpression() {
|
|
1504
|
+
const mainAlias = this.expressionMap.mainAlias.name; // todo: will this work with "fromTableName"?
|
|
1505
|
+
const metadata = this.expressionMap.mainAlias.metadata;
|
|
1506
|
+
const primaryColumns = metadata.primaryColumns;
|
|
1507
|
+
const distinctAlias = this.escape(mainAlias);
|
|
1508
|
+
// If we aren't doing anything that will create a join, we can use a simpler `COUNT` instead
|
|
1509
|
+
// so we prevent poor query patterns in the most likely cases
|
|
1510
|
+
if (this.expressionMap.joinAttributes.length === 0 &&
|
|
1511
|
+
this.expressionMap.relationIdAttributes.length === 0 &&
|
|
1512
|
+
this.expressionMap.relationCountAttributes.length === 0) {
|
|
1513
|
+
return "COUNT(1)";
|
|
1514
|
+
}
|
|
1515
|
+
// For everything else, we'll need to do some hackery to get the correct count values.
|
|
1516
|
+
if (this.connection.driver.options.type === "cockroachdb" ||
|
|
1517
|
+
this.connection.driver.options.type === "postgres") {
|
|
1518
|
+
// Postgres and CockroachDB can pass multiple parameters to the `DISTINCT` function
|
|
1519
|
+
// https://www.postgresql.org/docs/9.5/sql-select.html#SQL-DISTINCT
|
|
1520
|
+
return ("COUNT(DISTINCT(" +
|
|
1521
|
+
primaryColumns
|
|
1522
|
+
.map((c) => `${distinctAlias}.${this.escape(c.databaseName)}`)
|
|
1523
|
+
.join(", ") +
|
|
1524
|
+
"))");
|
|
1525
|
+
}
|
|
1526
|
+
if (DriverUtils.isMySQLFamily(this.connection.driver)) {
|
|
1527
|
+
// MySQL & MariaDB can pass multiple parameters to the `DISTINCT` language construct
|
|
1528
|
+
// https://mariadb.com/kb/en/count-distinct/
|
|
1529
|
+
return ("COUNT(DISTINCT " +
|
|
1530
|
+
primaryColumns
|
|
1531
|
+
.map((c) => `${distinctAlias}.${this.escape(c.databaseName)}`)
|
|
1532
|
+
.join(", ") +
|
|
1533
|
+
")");
|
|
1534
|
+
}
|
|
1535
|
+
if (this.connection.driver.options.type === "mssql") {
|
|
1536
|
+
// SQL Server has gotta be different from everyone else. They don't support
|
|
1537
|
+
// distinct counting multiple columns & they don't have the same operator
|
|
1538
|
+
// characteristic for concatenating, so we gotta use the `CONCAT` function.
|
|
1539
|
+
// However, If it's exactly 1 column we can omit the `CONCAT` for better performance.
|
|
1540
|
+
const columnsExpression = primaryColumns
|
|
1541
|
+
.map((primaryColumn) => `${distinctAlias}.${this.escape(primaryColumn.databaseName)}`)
|
|
1542
|
+
.join(", '|;|', ");
|
|
1543
|
+
if (primaryColumns.length === 1) {
|
|
1544
|
+
return `COUNT(DISTINCT(${columnsExpression}))`;
|
|
1545
|
+
}
|
|
1546
|
+
return `COUNT(DISTINCT(CONCAT(${columnsExpression})))`;
|
|
1547
|
+
}
|
|
1548
|
+
// If all else fails, fall back to a `COUNT` and `DISTINCT` across all the primary columns concatenated.
|
|
1549
|
+
// Per the SQL spec, this is the canonical string concatenation mechanism which is most
|
|
1550
|
+
// likely to work across servers implementing the SQL standard.
|
|
1551
|
+
// Please note, if there is only one primary column that the concatenation does not occur in this
|
|
1552
|
+
// query and the query is a standard `COUNT DISTINCT` in that case.
|
|
1553
|
+
return (`COUNT(DISTINCT(` +
|
|
1554
|
+
primaryColumns
|
|
1555
|
+
.map((c) => `${distinctAlias}.${this.escape(c.databaseName)}`)
|
|
1556
|
+
.join(" || '|;|' || ") +
|
|
1557
|
+
"))");
|
|
1558
|
+
}
|
|
1559
|
+
async executeCountQuery(queryRunner) {
|
|
1560
|
+
const countSql = this.computeCountExpression();
|
|
1561
|
+
const results = await this.clone()
|
|
1562
|
+
.orderBy()
|
|
1563
|
+
.groupBy()
|
|
1564
|
+
.offset(undefined)
|
|
1565
|
+
.limit(undefined)
|
|
1566
|
+
.skip(undefined)
|
|
1567
|
+
.take(undefined)
|
|
1568
|
+
.select(countSql, "cnt")
|
|
1569
|
+
.setOption("disable-global-order")
|
|
1570
|
+
.loadRawResults(queryRunner);
|
|
1571
|
+
if (!results || !results[0] || !results[0]["cnt"])
|
|
1572
|
+
return 0;
|
|
1573
|
+
return parseInt(results[0]["cnt"]);
|
|
1574
|
+
}
|
|
1575
|
+
applyFindOptions() {
|
|
1576
|
+
// todo: convert relations: string[] to object map to simplify code
|
|
1577
|
+
// todo: same with selects
|
|
1578
|
+
if (this.expressionMap.mainAlias.metadata) {
|
|
1579
|
+
if (this.findOptions.relationLoadStrategy) {
|
|
1580
|
+
this.expressionMap.relationLoadStrategy =
|
|
1581
|
+
this.findOptions.relationLoadStrategy;
|
|
1582
|
+
}
|
|
1583
|
+
if (this.findOptions.comment) {
|
|
1584
|
+
this.comment(this.findOptions.comment);
|
|
1585
|
+
}
|
|
1586
|
+
if (this.findOptions.withDeleted) {
|
|
1587
|
+
this.withDeleted();
|
|
1588
|
+
}
|
|
1589
|
+
if (this.findOptions.select) {
|
|
1590
|
+
const select = Array.isArray(this.findOptions.select)
|
|
1591
|
+
? OrmUtils.propertyPathsToTruthyObject(this.findOptions.select)
|
|
1592
|
+
: this.findOptions.select;
|
|
1593
|
+
this.buildSelect(select, this.expressionMap.mainAlias.metadata, this.expressionMap.mainAlias.name);
|
|
1594
|
+
}
|
|
1595
|
+
if (this.selects.length) {
|
|
1596
|
+
this.select(this.selects);
|
|
1597
|
+
}
|
|
1598
|
+
this.selects = [];
|
|
1599
|
+
if (this.findOptions.relations) {
|
|
1600
|
+
const relations = Array.isArray(this.findOptions.relations)
|
|
1601
|
+
? OrmUtils.propertyPathsToTruthyObject(this.findOptions.relations)
|
|
1602
|
+
: this.findOptions.relations;
|
|
1603
|
+
this.buildRelations(relations, typeof this.findOptions.select === "object"
|
|
1604
|
+
? this.findOptions.select
|
|
1605
|
+
: undefined, this.expressionMap.mainAlias.metadata, this.expressionMap.mainAlias.name);
|
|
1606
|
+
if (this.findOptions.loadEagerRelations !== false &&
|
|
1607
|
+
this.expressionMap.relationLoadStrategy === "join") {
|
|
1608
|
+
this.buildEagerRelations(relations, typeof this.findOptions.select === "object"
|
|
1609
|
+
? this.findOptions
|
|
1610
|
+
.select
|
|
1611
|
+
: undefined, this.expressionMap.mainAlias.metadata, this.expressionMap.mainAlias.name);
|
|
1612
|
+
}
|
|
1613
|
+
}
|
|
1614
|
+
if (this.selects.length) {
|
|
1615
|
+
console.log("adding following selects: ", this.selects);
|
|
1616
|
+
this.addSelect(this.selects);
|
|
1617
|
+
}
|
|
1618
|
+
if (this.findOptions.where) {
|
|
1398
1619
|
this.conditions = this.buildWhere(this.findOptions.where, this.expressionMap.mainAlias.metadata, this.expressionMap.mainAlias.name);
|
|
1399
|
-
|
|
1620
|
+
if (this.conditions.length)
|
|
1621
|
+
this.andWhere(this.conditions.substr(0, 1) !== "("
|
|
1622
|
+
? "(" + this.conditions + ")"
|
|
1623
|
+
: this.conditions); // temporary and where and braces
|
|
1624
|
+
}
|
|
1625
|
+
if (this.findOptions.order) {
|
|
1400
1626
|
this.buildOrder(this.findOptions.order, this.expressionMap.mainAlias.metadata, this.expressionMap.mainAlias.name);
|
|
1401
|
-
|
|
1402
|
-
this.buildRelations(this.findOptions.relations, this.expressionMap.mainAlias.metadata);
|
|
1403
|
-
if (this.selects.length)
|
|
1404
|
-
this.select(this.selects);
|
|
1627
|
+
}
|
|
1405
1628
|
// apply joins
|
|
1406
1629
|
if (this.joins.length) {
|
|
1407
|
-
this.joins.forEach(
|
|
1408
|
-
if (join.select) {
|
|
1630
|
+
this.joins.forEach((join) => {
|
|
1631
|
+
if (join.select && !join.selection) {
|
|
1632
|
+
// if (join.selection) {
|
|
1633
|
+
//
|
|
1634
|
+
// } else {
|
|
1409
1635
|
if (join.type === "inner") {
|
|
1410
|
-
|
|
1636
|
+
this.innerJoinAndSelect(`${join.parentAlias}.${join.relationMetadata.propertyPath}`, join.alias);
|
|
1411
1637
|
}
|
|
1412
1638
|
else {
|
|
1413
|
-
|
|
1639
|
+
this.leftJoinAndSelect(`${join.parentAlias}.${join.relationMetadata.propertyPath}`, join.alias);
|
|
1414
1640
|
}
|
|
1641
|
+
// }
|
|
1415
1642
|
}
|
|
1416
1643
|
else {
|
|
1417
1644
|
if (join.type === "inner") {
|
|
1418
|
-
|
|
1645
|
+
this.innerJoin(`${join.parentAlias}.${join.relationMetadata.propertyPath}`, join.alias);
|
|
1419
1646
|
}
|
|
1420
1647
|
else {
|
|
1421
|
-
|
|
1648
|
+
this.leftJoin(`${join.parentAlias}.${join.relationMetadata.propertyPath}`, join.alias);
|
|
1422
1649
|
}
|
|
1423
1650
|
}
|
|
1651
|
+
// if (join.select) {
|
|
1652
|
+
// if (this.findOptions.loadEagerRelations !== false) {
|
|
1653
|
+
// FindOptionsUtils.joinEagerRelations(
|
|
1654
|
+
// this,
|
|
1655
|
+
// join.alias,
|
|
1656
|
+
// join.relationMetadata.inverseEntityMetadata
|
|
1657
|
+
// );
|
|
1658
|
+
// }
|
|
1659
|
+
// }
|
|
1424
1660
|
});
|
|
1425
1661
|
}
|
|
1426
|
-
if (this.conditions.length)
|
|
1427
|
-
|
|
1662
|
+
// if (this.conditions.length) {
|
|
1663
|
+
// this.where(this.conditions.join(" AND "));
|
|
1664
|
+
// }
|
|
1428
1665
|
// apply offset
|
|
1429
1666
|
if (this.findOptions.skip !== undefined) {
|
|
1430
|
-
if (this.findOptions.pagination === false) {
|
|
1431
|
-
|
|
1432
|
-
}
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
}
|
|
1667
|
+
// if (this.findOptions.options && this.findOptions.options.pagination === false) {
|
|
1668
|
+
// this.offset(this.findOptions.skip);
|
|
1669
|
+
// } else {
|
|
1670
|
+
this.skip(this.findOptions.skip);
|
|
1671
|
+
// }
|
|
1436
1672
|
}
|
|
1437
1673
|
// apply limit
|
|
1438
1674
|
if (this.findOptions.take !== undefined) {
|
|
1439
|
-
if (this.findOptions.pagination === false) {
|
|
1440
|
-
|
|
1441
|
-
}
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
}
|
|
1675
|
+
// if (this.findOptions.options && this.findOptions.options.pagination === false) {
|
|
1676
|
+
// this.limit(this.findOptions.take);
|
|
1677
|
+
// } else {
|
|
1678
|
+
this.take(this.findOptions.take);
|
|
1679
|
+
// }
|
|
1445
1680
|
}
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
});
|
|
1681
|
+
// apply caching options
|
|
1682
|
+
if (typeof this.findOptions.cache === "number") {
|
|
1683
|
+
this.cache(this.findOptions.cache);
|
|
1450
1684
|
}
|
|
1451
|
-
if (this.
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1685
|
+
else if (typeof this.findOptions.cache === "boolean") {
|
|
1686
|
+
this.cache(this.findOptions.cache);
|
|
1687
|
+
}
|
|
1688
|
+
else if (typeof this.findOptions.cache === "object") {
|
|
1689
|
+
this.cache(this.findOptions.cache.id, this.findOptions.cache.milliseconds);
|
|
1690
|
+
}
|
|
1691
|
+
if (this.findOptions.join) {
|
|
1692
|
+
if (this.findOptions.join.leftJoin)
|
|
1693
|
+
Object.keys(this.findOptions.join.leftJoin).forEach((key) => {
|
|
1694
|
+
this.leftJoin(this.findOptions.join.leftJoin[key], key);
|
|
1695
|
+
});
|
|
1696
|
+
if (this.findOptions.join.innerJoin)
|
|
1697
|
+
Object.keys(this.findOptions.join.innerJoin).forEach((key) => {
|
|
1698
|
+
this.innerJoin(this.findOptions.join.innerJoin[key], key);
|
|
1699
|
+
});
|
|
1700
|
+
if (this.findOptions.join.leftJoinAndSelect)
|
|
1701
|
+
Object.keys(this.findOptions.join.leftJoinAndSelect).forEach((key) => {
|
|
1702
|
+
this.leftJoinAndSelect(this.findOptions.join.leftJoinAndSelect[key], key);
|
|
1464
1703
|
});
|
|
1465
|
-
|
|
1466
|
-
|
|
1704
|
+
if (this.findOptions.join.innerJoinAndSelect)
|
|
1705
|
+
Object.keys(this.findOptions.join.innerJoinAndSelect).forEach((key) => {
|
|
1706
|
+
this.innerJoinAndSelect(this.findOptions.join.innerJoinAndSelect[key], key);
|
|
1707
|
+
});
|
|
1708
|
+
}
|
|
1709
|
+
if (this.findOptions.lock) {
|
|
1710
|
+
if (this.findOptions.lock.mode === "optimistic") {
|
|
1711
|
+
this.setLock(this.findOptions.lock.mode, this.findOptions.lock.version);
|
|
1712
|
+
}
|
|
1713
|
+
else if (this.findOptions.lock.mode === "pessimistic_read" ||
|
|
1714
|
+
this.findOptions.lock.mode === "pessimistic_write" ||
|
|
1715
|
+
this.findOptions.lock.mode === "dirty_read" ||
|
|
1716
|
+
this.findOptions.lock.mode ===
|
|
1717
|
+
"pessimistic_partial_write" ||
|
|
1718
|
+
this.findOptions.lock.mode ===
|
|
1719
|
+
"pessimistic_write_or_fail" ||
|
|
1720
|
+
this.findOptions.lock.mode === "for_no_key_update") {
|
|
1721
|
+
const tableNames = this.findOptions.lock.tables
|
|
1722
|
+
? this.findOptions.lock.tables.map((table) => {
|
|
1723
|
+
const tableAlias = this.expressionMap.aliases.find((alias) => {
|
|
1724
|
+
return (alias.metadata
|
|
1725
|
+
.tableNameWithoutPrefix === table);
|
|
1726
|
+
});
|
|
1727
|
+
if (!tableAlias) {
|
|
1728
|
+
throw new TypeORMError(`"${table}" is not part of this query`);
|
|
1729
|
+
}
|
|
1730
|
+
return this.escape(tableAlias.name);
|
|
1731
|
+
})
|
|
1732
|
+
: undefined;
|
|
1733
|
+
this.setLock(this.findOptions.lock.mode, undefined, tableNames);
|
|
1734
|
+
}
|
|
1467
1735
|
}
|
|
1468
1736
|
if (this.findOptions.loadRelationIds === true) {
|
|
1469
1737
|
this.loadAllRelationIds();
|
|
1470
1738
|
}
|
|
1471
|
-
else if (this.findOptions.loadRelationIds
|
|
1739
|
+
else if (typeof this.findOptions.loadRelationIds === "object") {
|
|
1472
1740
|
this.loadAllRelationIds(this.findOptions.loadRelationIds);
|
|
1473
1741
|
}
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
SelectQueryBuilder.prototype.applyFindOptionsOrmOptions = function (findOptions) {
|
|
1477
|
-
if (this.expressionMap.mainAlias.metadata) {
|
|
1478
|
-
// apply caching options
|
|
1479
|
-
if (typeof findOptions.cache === "number") {
|
|
1480
|
-
this.cache(findOptions.cache);
|
|
1481
|
-
}
|
|
1482
|
-
else if (typeof findOptions.cache === "boolean") {
|
|
1483
|
-
this.cache(findOptions.cache);
|
|
1484
|
-
}
|
|
1485
|
-
else if (typeof findOptions.cache === "object") {
|
|
1486
|
-
this.cache(findOptions.cache.id, findOptions.cache.milliseconds);
|
|
1742
|
+
if (this.findOptions.loadEagerRelations !== false) {
|
|
1743
|
+
FindOptionsUtils.joinEagerRelations(this, this.expressionMap.mainAlias.name, this.expressionMap.mainAlias.metadata);
|
|
1487
1744
|
}
|
|
1488
|
-
if (findOptions.
|
|
1489
|
-
|
|
1490
|
-
this.callListeners(false);
|
|
1491
|
-
if (findOptions.options.observers === false)
|
|
1492
|
-
this.callObservers(false);
|
|
1745
|
+
if (this.findOptions.transaction === true) {
|
|
1746
|
+
this.expressionMap.useTransaction = true;
|
|
1493
1747
|
}
|
|
1494
|
-
if (
|
|
1495
|
-
|
|
1496
|
-
|
|
1748
|
+
// if (this.orderBys.length) {
|
|
1749
|
+
// this.orderBys.forEach(orderBy => {
|
|
1750
|
+
// this.addOrderBy(orderBy.alias, orderBy.direction, orderBy.nulls);
|
|
1751
|
+
// });
|
|
1752
|
+
// }
|
|
1753
|
+
// todo
|
|
1754
|
+
// if (this.options.options && this.options.options.eagerRelations) {
|
|
1755
|
+
// this.queryBuilder
|
|
1756
|
+
// }
|
|
1757
|
+
// todo
|
|
1758
|
+
// if (this.findOptions.options && this.findOptions.listeners === false) {
|
|
1759
|
+
// this.callListeners(false);
|
|
1760
|
+
// }
|
|
1761
|
+
}
|
|
1762
|
+
}
|
|
1763
|
+
/**
|
|
1764
|
+
* Executes sql generated by query builder and returns object with raw results and entities created from them.
|
|
1765
|
+
*/
|
|
1766
|
+
async executeEntitiesAndRawResults(queryRunner) {
|
|
1767
|
+
if (!this.expressionMap.mainAlias)
|
|
1768
|
+
throw new TypeORMError(`Alias is not set. Use "from" method to set an alias.`);
|
|
1769
|
+
if ((this.expressionMap.lockMode === "pessimistic_read" ||
|
|
1770
|
+
this.expressionMap.lockMode === "pessimistic_write" ||
|
|
1771
|
+
this.expressionMap.lockMode === "pessimistic_partial_write" ||
|
|
1772
|
+
this.expressionMap.lockMode === "pessimistic_write_or_fail" ||
|
|
1773
|
+
this.expressionMap.lockMode === "for_no_key_update") &&
|
|
1774
|
+
!queryRunner.isTransactionActive)
|
|
1775
|
+
throw new PessimisticLockTransactionRequiredError();
|
|
1776
|
+
if (this.expressionMap.lockMode === "optimistic") {
|
|
1777
|
+
const metadata = this.expressionMap.mainAlias.metadata;
|
|
1778
|
+
if (!metadata.versionColumn && !metadata.updateDateColumn)
|
|
1779
|
+
throw new NoVersionOrUpdateDateColumnError(metadata.name);
|
|
1780
|
+
}
|
|
1781
|
+
const relationIdLoader = new RelationIdLoader(this.connection, queryRunner, this.expressionMap.relationIdAttributes);
|
|
1782
|
+
const relationCountLoader = new RelationCountLoader(this.connection, queryRunner, this.expressionMap.relationCountAttributes);
|
|
1783
|
+
const relationIdMetadataTransformer = new RelationIdMetadataToAttributeTransformer(this.expressionMap);
|
|
1784
|
+
relationIdMetadataTransformer.transform();
|
|
1785
|
+
const relationCountMetadataTransformer = new RelationCountMetadataToAttributeTransformer(this.expressionMap);
|
|
1786
|
+
relationCountMetadataTransformer.transform();
|
|
1787
|
+
let rawResults = [], entities = [];
|
|
1788
|
+
// for pagination enabled (e.g. skip and take) its much more complicated - its a special process
|
|
1789
|
+
// where we make two queries to find the data we need
|
|
1790
|
+
// first query find ids in skip and take range
|
|
1791
|
+
// and second query loads the actual data in given ids range
|
|
1792
|
+
if ((this.expressionMap.skip || this.expressionMap.take) &&
|
|
1793
|
+
this.expressionMap.joinAttributes.length > 0) {
|
|
1794
|
+
// we are skipping order by here because its not working in subqueries anyway
|
|
1795
|
+
// to make order by working we need to apply it on a distinct query
|
|
1796
|
+
const [selects, orderBys] = this.createOrderByCombinedWithSelectExpression("distinctAlias");
|
|
1797
|
+
const metadata = this.expressionMap.mainAlias.metadata;
|
|
1798
|
+
const mainAliasName = this.expressionMap.mainAlias.name;
|
|
1799
|
+
const querySelects = metadata.primaryColumns.map((primaryColumn) => {
|
|
1800
|
+
const distinctAlias = this.escape("distinctAlias");
|
|
1801
|
+
const columnAlias = this.escape(DriverUtils.buildAlias(this.connection.driver, mainAliasName, primaryColumn.databaseName));
|
|
1802
|
+
if (!orderBys[columnAlias])
|
|
1803
|
+
// make sure we aren't overriding user-defined order in inverse direction
|
|
1804
|
+
orderBys[columnAlias] = "ASC";
|
|
1805
|
+
const alias = DriverUtils.buildAlias(this.connection.driver, "ids_" + mainAliasName, primaryColumn.databaseName);
|
|
1806
|
+
return `${distinctAlias}.${columnAlias} as "${alias}"`;
|
|
1807
|
+
});
|
|
1808
|
+
rawResults = await new SelectQueryBuilder(this.connection, queryRunner)
|
|
1809
|
+
.select(`DISTINCT ${querySelects.join(", ")}`)
|
|
1810
|
+
.addSelect(selects)
|
|
1811
|
+
.from(`(${this.clone().orderBy().getQuery()})`, "distinctAlias")
|
|
1812
|
+
.offset(this.expressionMap.skip)
|
|
1813
|
+
.limit(this.expressionMap.take)
|
|
1814
|
+
.orderBy(orderBys)
|
|
1815
|
+
.cache(this.expressionMap.cache
|
|
1816
|
+
? this.expressionMap.cache
|
|
1817
|
+
: this.expressionMap.cacheId, this.expressionMap.cacheDuration)
|
|
1818
|
+
.setParameters(this.getParameters())
|
|
1819
|
+
.setNativeParameters(this.expressionMap.nativeParameters)
|
|
1820
|
+
.getRawMany();
|
|
1821
|
+
if (rawResults.length > 0) {
|
|
1822
|
+
let condition = "";
|
|
1823
|
+
const parameters = {};
|
|
1824
|
+
if (metadata.hasMultiplePrimaryKeys) {
|
|
1825
|
+
condition = rawResults
|
|
1826
|
+
.map((result, index) => {
|
|
1827
|
+
return metadata.primaryColumns
|
|
1828
|
+
.map((primaryColumn) => {
|
|
1829
|
+
const paramKey = `orm_distinct_ids_${index}_${primaryColumn.databaseName}`;
|
|
1830
|
+
parameters[paramKey] =
|
|
1831
|
+
result[`ids_${mainAliasName}_${primaryColumn.databaseName}`];
|
|
1832
|
+
return `${mainAliasName}.${primaryColumn.propertyPath}=:${paramKey}`;
|
|
1833
|
+
})
|
|
1834
|
+
.join(" AND ");
|
|
1835
|
+
})
|
|
1836
|
+
.join(" OR ");
|
|
1497
1837
|
}
|
|
1498
1838
|
else {
|
|
1499
|
-
|
|
1839
|
+
const alias = DriverUtils.buildAlias(this.connection.driver, "ids_" + mainAliasName, metadata.primaryColumns[0].databaseName);
|
|
1840
|
+
const ids = rawResults.map((result) => result[alias]);
|
|
1841
|
+
const areAllNumbers = ids.every((id) => typeof id === "number");
|
|
1842
|
+
if (areAllNumbers) {
|
|
1843
|
+
// fixes #190. if all numbers then its safe to perform query without parameter
|
|
1844
|
+
condition = `${mainAliasName}.${metadata.primaryColumns[0].propertyPath} IN (${ids.join(", ")})`;
|
|
1845
|
+
}
|
|
1846
|
+
else {
|
|
1847
|
+
parameters["orm_distinct_ids"] = ids;
|
|
1848
|
+
condition =
|
|
1849
|
+
mainAliasName +
|
|
1850
|
+
"." +
|
|
1851
|
+
metadata.primaryColumns[0].propertyPath +
|
|
1852
|
+
" IN (:...orm_distinct_ids)";
|
|
1853
|
+
}
|
|
1500
1854
|
}
|
|
1855
|
+
rawResults = await this.clone()
|
|
1856
|
+
.mergeExpressionMap({
|
|
1857
|
+
extraAppendedAndWhereCondition: condition,
|
|
1858
|
+
})
|
|
1859
|
+
.setParameters(parameters)
|
|
1860
|
+
.loadRawResults(queryRunner);
|
|
1501
1861
|
}
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
}
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
return [2 /*return*/, parseInt(results[0]["cnt"])];
|
|
1554
|
-
}
|
|
1555
|
-
});
|
|
1556
|
-
});
|
|
1557
|
-
};
|
|
1558
|
-
/**
|
|
1559
|
-
* Executes sql generated by query builder and returns object with raw results and entities created from them.
|
|
1560
|
-
*/
|
|
1561
|
-
SelectQueryBuilder.prototype.executeEntitiesAndRawResults = function (queryRunner) {
|
|
1562
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
1563
|
-
var cloneQb1, cloneQb2, metadata, relationIdLoader, relationCountLoader, relationIdMetadataTransformer, relationCountMetadataTransformer, rawResults, entities, _a, selects, orderBys_1, metadata_1, mainAliasName_1, querySelects, clonnedQb, condition, parameters_1, ids, areAllNumbers, rawRelationIdResults, rawRelationCountResults, transformer, broadcastResult;
|
|
1564
|
-
var _this = this;
|
|
1565
|
-
return tslib_1.__generator(this, function (_b) {
|
|
1566
|
-
switch (_b.label) {
|
|
1567
|
-
case 0:
|
|
1568
|
-
if (!this.expressionMap.mainAlias)
|
|
1569
|
-
throw new Error("Alias is not set. Use \"from\" method to set an alias.");
|
|
1570
|
-
cloneQb1 = this.clone();
|
|
1571
|
-
cloneQb2 = this.clone();
|
|
1572
|
-
if ((this.expressionMap.lockMode === "pessimistic_read" || this.expressionMap.lockMode === "pessimistic_write") && !queryRunner.isTransactionActive)
|
|
1573
|
-
throw new PessimisticLockTransactionRequiredError();
|
|
1574
|
-
if (this.expressionMap.lockMode === "optimistic") {
|
|
1575
|
-
metadata = this.expressionMap.mainAlias.metadata;
|
|
1576
|
-
if (!metadata.versionColumn && !metadata.updateDateColumn)
|
|
1577
|
-
throw new NoVersionOrUpdateDateColumnError(metadata.name);
|
|
1578
|
-
}
|
|
1579
|
-
relationIdLoader = new RelationIdLoader(this.connection, queryRunner, this.expressionMap.relationIdAttributes);
|
|
1580
|
-
relationCountLoader = new RelationCountLoader(this.connection, queryRunner, this.expressionMap.relationCountAttributes);
|
|
1581
|
-
relationIdMetadataTransformer = new RelationIdMetadataToAttributeTransformer(this.expressionMap);
|
|
1582
|
-
relationIdMetadataTransformer.transform();
|
|
1583
|
-
relationCountMetadataTransformer = new RelationCountMetadataToAttributeTransformer(this.expressionMap);
|
|
1584
|
-
relationCountMetadataTransformer.transform();
|
|
1585
|
-
rawResults = [], entities = [];
|
|
1586
|
-
if (!((this.expressionMap.skip || this.expressionMap.take) && this.expressionMap.joinAttributes.length > 0)) return [3 /*break*/, 4];
|
|
1587
|
-
_a = tslib_1.__read(this.createOrderByCombinedWithSelectExpression("distinctAlias"), 2), selects = _a[0], orderBys_1 = _a[1];
|
|
1588
|
-
metadata_1 = this.expressionMap.mainAlias.metadata;
|
|
1589
|
-
mainAliasName_1 = this.expressionMap.mainAlias.name;
|
|
1590
|
-
querySelects = metadata_1.primaryColumns.map(function (primaryColumn) {
|
|
1591
|
-
var distinctAlias = _this.escape("distinctAlias");
|
|
1592
|
-
var columnAlias = _this.escape(DriverUtils.buildColumnAlias(_this.connection.driver, mainAliasName_1, primaryColumn.databaseName));
|
|
1593
|
-
if (!orderBys_1[columnAlias]) // make sure we aren't overriding user-defined order in inverse direction
|
|
1594
|
-
orderBys_1[columnAlias] = "ASC";
|
|
1595
|
-
return distinctAlias + "." + columnAlias + " as \"ids_" + DriverUtils.buildColumnAlias(_this.connection.driver, mainAliasName_1, primaryColumn.databaseName) + "\"";
|
|
1596
|
-
});
|
|
1597
|
-
clonnedQb = cloneQb1
|
|
1598
|
-
// .setFindOptions({
|
|
1599
|
-
// select: this.findOptions.select,
|
|
1600
|
-
// relations: this.findOptions.relations,
|
|
1601
|
-
// options: this.findOptions.options,
|
|
1602
|
-
// where: this.findOptions.where
|
|
1603
|
-
// })
|
|
1604
|
-
.orderBy();
|
|
1605
|
-
return [4 /*yield*/, new SelectQueryBuilder(this.connection, queryRunner)
|
|
1606
|
-
.select("DISTINCT " + querySelects.join(", "))
|
|
1607
|
-
.addSelect(selects)
|
|
1608
|
-
.from("(" + clonnedQb.getQuery() + ")", "distinctAlias")
|
|
1609
|
-
.offset(this.expressionMap.skip)
|
|
1610
|
-
.limit(this.expressionMap.take)
|
|
1611
|
-
.orderBy(orderBys_1)
|
|
1612
|
-
.cache(this.expressionMap.cache ? this.expressionMap.cache : this.expressionMap.cacheId, this.expressionMap.cacheDuration)
|
|
1613
|
-
.setParameters(this.getParameters())
|
|
1614
|
-
.setNativeParameters(this.expressionMap.nativeParameters)
|
|
1615
|
-
.getRawMany()];
|
|
1616
|
-
case 1:
|
|
1617
|
-
rawResults = _b.sent();
|
|
1618
|
-
if (!(rawResults.length > 0)) return [3 /*break*/, 3];
|
|
1619
|
-
condition = "";
|
|
1620
|
-
parameters_1 = {};
|
|
1621
|
-
if (metadata_1.hasMultiplePrimaryKeys) {
|
|
1622
|
-
condition = rawResults.map(function (result, index) {
|
|
1623
|
-
return metadata_1.primaryColumns.map(function (primaryColumn) {
|
|
1624
|
-
parameters_1["ids_" + index + "_" + primaryColumn.databaseName] = result["ids_" + mainAliasName_1 + "_" + primaryColumn.databaseName];
|
|
1625
|
-
return mainAliasName_1 + "." + primaryColumn.propertyPath + "=:ids_" + index + "_" + primaryColumn.databaseName;
|
|
1626
|
-
}).join(" AND ");
|
|
1627
|
-
}).join(" OR ");
|
|
1628
|
-
}
|
|
1629
|
-
else {
|
|
1630
|
-
ids = rawResults.map(function (result) { return result["ids_" + DriverUtils.buildColumnAlias(_this.connection.driver, mainAliasName_1, metadata_1.primaryColumns[0].databaseName)]; });
|
|
1631
|
-
areAllNumbers = ids.every(function (id) { return typeof id === "number"; });
|
|
1632
|
-
if (areAllNumbers) {
|
|
1633
|
-
// fixes #190. if all numbers then its safe to perform query without parameter
|
|
1634
|
-
condition = mainAliasName_1 + "." + metadata_1.primaryColumns[0].propertyPath + " IN (" + ids.join(", ") + ")";
|
|
1635
|
-
}
|
|
1636
|
-
else {
|
|
1637
|
-
parameters_1["ids"] = ids;
|
|
1638
|
-
condition = mainAliasName_1 + "." + metadata_1.primaryColumns[0].propertyPath + " IN (:...ids)";
|
|
1639
|
-
}
|
|
1862
|
+
}
|
|
1863
|
+
else {
|
|
1864
|
+
rawResults = await this.loadRawResults(queryRunner);
|
|
1865
|
+
}
|
|
1866
|
+
if (rawResults.length > 0) {
|
|
1867
|
+
// transform raw results into entities
|
|
1868
|
+
const rawRelationIdResults = await relationIdLoader.load(rawResults);
|
|
1869
|
+
const rawRelationCountResults = await relationCountLoader.load(rawResults);
|
|
1870
|
+
const transformer = new RawSqlResultsToEntityTransformer(this.expressionMap, this.connection.driver, rawRelationIdResults, rawRelationCountResults, this.queryRunner);
|
|
1871
|
+
entities = transformer.transform(rawResults, this.expressionMap.mainAlias);
|
|
1872
|
+
// broadcast all "after load" events
|
|
1873
|
+
if (this.expressionMap.callListeners === true &&
|
|
1874
|
+
this.expressionMap.mainAlias.hasMetadata) {
|
|
1875
|
+
await queryRunner.broadcaster.broadcast("Load", this.expressionMap.mainAlias.metadata, entities);
|
|
1876
|
+
}
|
|
1877
|
+
}
|
|
1878
|
+
if (this.expressionMap.relationLoadStrategy === "query") {
|
|
1879
|
+
await Promise.all(this.relationMetadatas.map(async (relation) => {
|
|
1880
|
+
const relationTarget = relation.inverseEntityMetadata.target;
|
|
1881
|
+
const relationAlias = relation.inverseEntityMetadata.targetName;
|
|
1882
|
+
const select = Array.isArray(this.findOptions.select)
|
|
1883
|
+
? OrmUtils.propertyPathsToTruthyObject(this.findOptions.select)
|
|
1884
|
+
: this.findOptions.select;
|
|
1885
|
+
const relations = Array.isArray(this.findOptions.relations)
|
|
1886
|
+
? OrmUtils.propertyPathsToTruthyObject(this.findOptions.relations)
|
|
1887
|
+
: this.findOptions.relations;
|
|
1888
|
+
const queryBuilder = this.createQueryBuilder()
|
|
1889
|
+
.select(relationAlias)
|
|
1890
|
+
.from(relationTarget, relationAlias)
|
|
1891
|
+
.setFindOptions({
|
|
1892
|
+
select: select
|
|
1893
|
+
? OrmUtils.deepValue(select, relation.propertyPath)
|
|
1894
|
+
: undefined,
|
|
1895
|
+
order: this.findOptions.order
|
|
1896
|
+
? OrmUtils.deepValue(this.findOptions.order, relation.propertyPath)
|
|
1897
|
+
: undefined,
|
|
1898
|
+
relations: relations
|
|
1899
|
+
? OrmUtils.deepValue(relations, relation.propertyPath)
|
|
1900
|
+
: undefined,
|
|
1901
|
+
withDeleted: this.findOptions.withDeleted,
|
|
1902
|
+
relationLoadStrategy: this.findOptions.relationLoadStrategy,
|
|
1903
|
+
});
|
|
1904
|
+
if (entities.length > 0) {
|
|
1905
|
+
const relatedEntityGroups = await this.connection.relationIdLoader.loadManyToManyRelationIdsAndGroup(relation, entities, undefined, queryBuilder);
|
|
1906
|
+
entities.forEach((entity) => {
|
|
1907
|
+
const relatedEntityGroup = relatedEntityGroups.find((group) => group.entity === entity);
|
|
1908
|
+
if (relatedEntityGroup) {
|
|
1909
|
+
const value = relatedEntityGroup.related === undefined
|
|
1910
|
+
? null
|
|
1911
|
+
: relatedEntityGroup.related;
|
|
1912
|
+
relation.setEntityValue(entity, value);
|
|
1640
1913
|
}
|
|
1641
|
-
|
|
1642
|
-
// .setFindOptions(this.findOptions)
|
|
1643
|
-
.mergeExpressionMap({ extraAppendedAndWhereCondition: condition })
|
|
1644
|
-
.setParameters(parameters_1)
|
|
1645
|
-
.loadRawResults(queryRunner)];
|
|
1646
|
-
case 2:
|
|
1647
|
-
rawResults = _b.sent();
|
|
1648
|
-
_b.label = 3;
|
|
1649
|
-
case 3: return [3 /*break*/, 6];
|
|
1650
|
-
case 4: return [4 /*yield*/, this.loadRawResults(queryRunner)];
|
|
1651
|
-
case 5:
|
|
1652
|
-
// console.time("load raw results");
|
|
1653
|
-
rawResults = _b.sent();
|
|
1654
|
-
_b.label = 6;
|
|
1655
|
-
case 6:
|
|
1656
|
-
if (!(rawResults.length > 0)) return [3 /*break*/, 10];
|
|
1657
|
-
return [4 /*yield*/, relationIdLoader.load(rawResults)];
|
|
1658
|
-
case 7:
|
|
1659
|
-
rawRelationIdResults = _b.sent();
|
|
1660
|
-
return [4 /*yield*/, relationCountLoader.load(rawResults)];
|
|
1661
|
-
case 8:
|
|
1662
|
-
rawRelationCountResults = _b.sent();
|
|
1663
|
-
transformer = new RawSqlResultsToEntityTransformer(this.expressionMap, this.connection.driver, rawRelationIdResults, rawRelationCountResults, this.queryRunner);
|
|
1664
|
-
// console.time("transforming entities");
|
|
1665
|
-
entities = transformer.transform(rawResults, this.expressionMap.mainAlias);
|
|
1666
|
-
if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 10];
|
|
1667
|
-
broadcastResult = new BroadcasterResult();
|
|
1668
|
-
queryRunner.broadcaster.broadcastLoadEventsForAll(broadcastResult, this.expressionMap.mainAlias.metadata, entities);
|
|
1669
|
-
if (!(broadcastResult.promises.length > 0)) return [3 /*break*/, 10];
|
|
1670
|
-
return [4 /*yield*/, Promise.all(broadcastResult.promises)];
|
|
1671
|
-
case 9:
|
|
1672
|
-
_b.sent();
|
|
1673
|
-
_b.label = 10;
|
|
1674
|
-
case 10: return [4 /*yield*/, Promise.all(this.relationMetadatas.map(function (relation) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
1675
|
-
var relationTarget, relationAlias, queryBuilder, relatedEntityGroups_1;
|
|
1676
|
-
return tslib_1.__generator(this, function (_a) {
|
|
1677
|
-
switch (_a.label) {
|
|
1678
|
-
case 0:
|
|
1679
|
-
relationTarget = relation.inverseEntityMetadata.target;
|
|
1680
|
-
relationAlias = relation.inverseEntityMetadata.targetName;
|
|
1681
|
-
queryBuilder = this.createQueryBuilder()
|
|
1682
|
-
.select(relationAlias)
|
|
1683
|
-
.from(relationTarget, relationAlias)
|
|
1684
|
-
.setFindOptions({
|
|
1685
|
-
select: this.findOptions.select && typeof this.findOptions.select === "object" ? OrmUtils.deepValue(this.findOptions.select, relation.propertyPath) : undefined,
|
|
1686
|
-
order: this.findOptions.order ? OrmUtils.deepValue(this.findOptions.order, relation.propertyPath) : undefined,
|
|
1687
|
-
relations: this.findOptions.relations && typeof this.findOptions.relations === "object" ? OrmUtils.deepValue(this.findOptions.relations, relation.propertyPath) : undefined,
|
|
1688
|
-
});
|
|
1689
|
-
if (!(entities.length > 0)) return [3 /*break*/, 2];
|
|
1690
|
-
return [4 /*yield*/, this.connection.relationIdLoader.loadManyToManyRelationIdsAndGroup(relation, entities, undefined, queryBuilder)];
|
|
1691
|
-
case 1:
|
|
1692
|
-
relatedEntityGroups_1 = _a.sent();
|
|
1693
|
-
entities.forEach(function (entity) {
|
|
1694
|
-
var relatedEntityGroup = relatedEntityGroups_1.find(function (group) { return group.entity === entity; });
|
|
1695
|
-
if (relatedEntityGroup) {
|
|
1696
|
-
var value = relatedEntityGroup.related === undefined ? null : relatedEntityGroup.related;
|
|
1697
|
-
relation.setEntityValue(entity, value);
|
|
1698
|
-
}
|
|
1699
|
-
});
|
|
1700
|
-
_a.label = 2;
|
|
1701
|
-
case 2: return [2 /*return*/];
|
|
1702
|
-
}
|
|
1703
|
-
});
|
|
1704
|
-
}); }))];
|
|
1705
|
-
case 11:
|
|
1706
|
-
_b.sent();
|
|
1707
|
-
return [2 /*return*/, {
|
|
1708
|
-
raw: rawResults,
|
|
1709
|
-
entities: entities,
|
|
1710
|
-
}];
|
|
1914
|
+
});
|
|
1711
1915
|
}
|
|
1712
|
-
});
|
|
1713
|
-
}
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1916
|
+
}));
|
|
1917
|
+
}
|
|
1918
|
+
return {
|
|
1919
|
+
raw: rawResults,
|
|
1920
|
+
entities: entities,
|
|
1921
|
+
};
|
|
1922
|
+
}
|
|
1923
|
+
createOrderByCombinedWithSelectExpression(parentAlias) {
|
|
1717
1924
|
// if table has a default order then apply it
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
.map(
|
|
1925
|
+
const orderBys = this.expressionMap.allOrderBys;
|
|
1926
|
+
const selectString = Object.keys(orderBys)
|
|
1927
|
+
.map((orderCriteria) => {
|
|
1721
1928
|
if (orderCriteria.indexOf(".") !== -1) {
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1929
|
+
const criteriaParts = orderCriteria.split(".");
|
|
1930
|
+
const aliasName = criteriaParts[0];
|
|
1931
|
+
const propertyPath = criteriaParts.slice(1).join(".");
|
|
1932
|
+
const alias = this.expressionMap.findAliasByName(aliasName);
|
|
1933
|
+
const column = alias.metadata.findColumnWithPropertyPath(propertyPath);
|
|
1934
|
+
return (this.escape(parentAlias) +
|
|
1935
|
+
"." +
|
|
1936
|
+
this.escape(DriverUtils.buildAlias(this.connection.driver, aliasName, column.databaseName)));
|
|
1726
1937
|
}
|
|
1727
1938
|
else {
|
|
1728
|
-
if (
|
|
1729
|
-
|
|
1939
|
+
if (this.expressionMap.selects.find((select) => select.selection === orderCriteria ||
|
|
1940
|
+
select.aliasName === orderCriteria))
|
|
1941
|
+
return this.escape(parentAlias) + "." + orderCriteria;
|
|
1730
1942
|
return "";
|
|
1731
1943
|
}
|
|
1732
1944
|
})
|
|
1733
1945
|
.join(", ");
|
|
1734
|
-
|
|
1735
|
-
Object.keys(orderBys).forEach(
|
|
1946
|
+
const orderByObject = {};
|
|
1947
|
+
Object.keys(orderBys).forEach((orderCriteria) => {
|
|
1736
1948
|
if (orderCriteria.indexOf(".") !== -1) {
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1949
|
+
const criteriaParts = orderCriteria.split(".");
|
|
1950
|
+
const aliasName = criteriaParts[0];
|
|
1951
|
+
const propertyPath = criteriaParts.slice(1).join(".");
|
|
1952
|
+
const alias = this.expressionMap.findAliasByName(aliasName);
|
|
1953
|
+
const column = alias.metadata.findColumnWithPropertyPath(propertyPath);
|
|
1954
|
+
orderByObject[this.escape(parentAlias) +
|
|
1955
|
+
"." +
|
|
1956
|
+
this.escape(DriverUtils.buildAlias(this.connection.driver, aliasName, column.databaseName))] = orderBys[orderCriteria];
|
|
1741
1957
|
}
|
|
1742
1958
|
else {
|
|
1743
|
-
if (
|
|
1744
|
-
|
|
1959
|
+
if (this.expressionMap.selects.find((select) => select.selection === orderCriteria ||
|
|
1960
|
+
select.aliasName === orderCriteria)) {
|
|
1961
|
+
orderByObject[this.escape(parentAlias) + "." + orderCriteria] = orderBys[orderCriteria];
|
|
1745
1962
|
}
|
|
1746
1963
|
else {
|
|
1747
1964
|
orderByObject[orderCriteria] = orderBys[orderCriteria];
|
|
@@ -1749,317 +1966,451 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
1749
1966
|
}
|
|
1750
1967
|
});
|
|
1751
1968
|
return [selectString, orderByObject];
|
|
1752
|
-
}
|
|
1969
|
+
}
|
|
1753
1970
|
/**
|
|
1754
1971
|
* Loads raw results from the database.
|
|
1755
1972
|
*/
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
case 3:
|
|
1779
|
-
results = _b.sent();
|
|
1780
|
-
if (!(this.connection.queryResultCache && (this.expressionMap.cache || cacheOptions.alwaysEnabled))) return [3 /*break*/, 5];
|
|
1781
|
-
return [4 /*yield*/, this.connection.queryResultCache.storeInCache({
|
|
1782
|
-
identifier: this.expressionMap.cacheId,
|
|
1783
|
-
query: queryId,
|
|
1784
|
-
time: new Date().getTime(),
|
|
1785
|
-
duration: this.expressionMap.cacheDuration || cacheOptions.duration || 1000,
|
|
1786
|
-
result: JSON.stringify(results)
|
|
1787
|
-
}, savedQueryResultCacheOptions, queryRunner)];
|
|
1788
|
-
case 4:
|
|
1789
|
-
_b.sent();
|
|
1790
|
-
_b.label = 5;
|
|
1791
|
-
case 5: return [2 /*return*/, results];
|
|
1973
|
+
async loadRawResults(queryRunner) {
|
|
1974
|
+
const [sql, parameters] = this.getQueryAndParameters();
|
|
1975
|
+
const queryId = sql + " -- PARAMETERS: " + JSON.stringify(parameters);
|
|
1976
|
+
const cacheOptions = typeof this.connection.options.cache === "object"
|
|
1977
|
+
? this.connection.options.cache
|
|
1978
|
+
: {};
|
|
1979
|
+
let savedQueryResultCacheOptions = undefined;
|
|
1980
|
+
let cacheError = false;
|
|
1981
|
+
if (this.connection.queryResultCache &&
|
|
1982
|
+
(this.expressionMap.cache || cacheOptions.alwaysEnabled)) {
|
|
1983
|
+
try {
|
|
1984
|
+
savedQueryResultCacheOptions =
|
|
1985
|
+
await this.connection.queryResultCache.getFromCache({
|
|
1986
|
+
identifier: this.expressionMap.cacheId,
|
|
1987
|
+
query: queryId,
|
|
1988
|
+
duration: this.expressionMap.cacheDuration ||
|
|
1989
|
+
cacheOptions.duration ||
|
|
1990
|
+
1000,
|
|
1991
|
+
}, queryRunner);
|
|
1992
|
+
if (savedQueryResultCacheOptions &&
|
|
1993
|
+
!this.connection.queryResultCache.isExpired(savedQueryResultCacheOptions)) {
|
|
1994
|
+
return JSON.parse(savedQueryResultCacheOptions.result);
|
|
1792
1995
|
}
|
|
1793
|
-
}
|
|
1794
|
-
|
|
1795
|
-
|
|
1996
|
+
}
|
|
1997
|
+
catch (error) {
|
|
1998
|
+
if (!cacheOptions.ignoreErrors) {
|
|
1999
|
+
throw error;
|
|
2000
|
+
}
|
|
2001
|
+
cacheError = true;
|
|
2002
|
+
}
|
|
2003
|
+
}
|
|
2004
|
+
const results = await queryRunner.query(sql, parameters, true);
|
|
2005
|
+
if (!cacheError &&
|
|
2006
|
+
this.connection.queryResultCache &&
|
|
2007
|
+
(this.expressionMap.cache || cacheOptions.alwaysEnabled)) {
|
|
2008
|
+
try {
|
|
2009
|
+
await this.connection.queryResultCache.storeInCache({
|
|
2010
|
+
identifier: this.expressionMap.cacheId,
|
|
2011
|
+
query: queryId,
|
|
2012
|
+
time: new Date().getTime(),
|
|
2013
|
+
duration: this.expressionMap.cacheDuration ||
|
|
2014
|
+
cacheOptions.duration ||
|
|
2015
|
+
1000,
|
|
2016
|
+
result: JSON.stringify(results.records),
|
|
2017
|
+
}, savedQueryResultCacheOptions, queryRunner);
|
|
2018
|
+
}
|
|
2019
|
+
catch (error) {
|
|
2020
|
+
if (!cacheOptions.ignoreErrors) {
|
|
2021
|
+
throw error;
|
|
2022
|
+
}
|
|
2023
|
+
}
|
|
2024
|
+
}
|
|
2025
|
+
return results.records;
|
|
2026
|
+
}
|
|
1796
2027
|
/**
|
|
1797
2028
|
* Merges into expression map given expression map properties.
|
|
1798
2029
|
*/
|
|
1799
|
-
|
|
2030
|
+
mergeExpressionMap(expressionMap) {
|
|
1800
2031
|
ObjectUtils.assign(this.expressionMap, expressionMap);
|
|
1801
2032
|
return this;
|
|
1802
|
-
}
|
|
2033
|
+
}
|
|
1803
2034
|
/**
|
|
1804
2035
|
* Normalizes a give number - converts to int if possible.
|
|
1805
2036
|
*/
|
|
1806
|
-
|
|
2037
|
+
normalizeNumber(num) {
|
|
1807
2038
|
if (typeof num === "number" || num === undefined || num === null)
|
|
1808
2039
|
return num;
|
|
1809
2040
|
return Number(num);
|
|
1810
|
-
}
|
|
2041
|
+
}
|
|
1811
2042
|
/**
|
|
1812
2043
|
* Creates a query builder used to execute sql queries inside this query builder.
|
|
1813
2044
|
*/
|
|
1814
|
-
|
|
2045
|
+
obtainQueryRunner() {
|
|
1815
2046
|
return this.queryRunner || this.connection.createQueryRunner("slave");
|
|
1816
|
-
}
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
// alias: joinAlias,
|
|
1847
|
-
// parentAlias: alias,
|
|
1848
|
-
// relationMetadata: relation
|
|
1849
|
-
// });
|
|
1850
|
-
// }
|
|
1851
|
-
// this.buildOrder(select[key] as FindOptionsOrder<any>, relation.inverseEntityMetadata, joinAlias);
|
|
1852
|
-
}
|
|
2047
|
+
}
|
|
2048
|
+
buildSelect(select, metadata, alias, embedPrefix) {
|
|
2049
|
+
for (let key in select) {
|
|
2050
|
+
if (select[key] === undefined)
|
|
2051
|
+
continue;
|
|
2052
|
+
const propertyPath = embedPrefix ? embedPrefix + "." + key : key;
|
|
2053
|
+
const column = metadata.findColumnWithPropertyPathStrict(propertyPath);
|
|
2054
|
+
const embed = metadata.findEmbeddedWithPropertyPath(propertyPath);
|
|
2055
|
+
const relation = metadata.findRelationWithPropertyPath(propertyPath);
|
|
2056
|
+
if (!embed && !column && !relation)
|
|
2057
|
+
throw new EntityPropertyNotFoundError(propertyPath, metadata);
|
|
2058
|
+
if (column) {
|
|
2059
|
+
this.selects.push(alias + "." + propertyPath);
|
|
2060
|
+
// this.addSelect(alias + "." + propertyPath);
|
|
2061
|
+
}
|
|
2062
|
+
else if (embed) {
|
|
2063
|
+
this.buildSelect(select[key], metadata, alias, key);
|
|
2064
|
+
// } else if (relation) {
|
|
2065
|
+
// const joinAlias = alias + "_" + relation.propertyName;
|
|
2066
|
+
// const existJoin = this.joins.find(join => join.alias === joinAlias);
|
|
2067
|
+
// if (!existJoin) {
|
|
2068
|
+
// this.joins.push({
|
|
2069
|
+
// type: "left",
|
|
2070
|
+
// select: false,
|
|
2071
|
+
// alias: joinAlias,
|
|
2072
|
+
// parentAlias: alias,
|
|
2073
|
+
// relationMetadata: relation
|
|
2074
|
+
// });
|
|
2075
|
+
// }
|
|
2076
|
+
// this.buildOrder(select[key] as FindOptionsOrder<any>, relation.inverseEntityMetadata, joinAlias);
|
|
1853
2077
|
}
|
|
1854
2078
|
}
|
|
1855
|
-
}
|
|
1856
|
-
|
|
1857
|
-
var _this = this;
|
|
2079
|
+
}
|
|
2080
|
+
buildRelations(relations, selection, metadata, alias, embedPrefix) {
|
|
1858
2081
|
if (!relations)
|
|
1859
2082
|
return;
|
|
1860
|
-
|
|
1861
|
-
relations
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
2083
|
+
Object.keys(relations).forEach((relationName) => {
|
|
2084
|
+
const relationValue = relations[relationName];
|
|
2085
|
+
const propertyPath = embedPrefix
|
|
2086
|
+
? embedPrefix + "." + relationName
|
|
2087
|
+
: relationName;
|
|
2088
|
+
const embed = metadata.findEmbeddedWithPropertyPath(propertyPath);
|
|
2089
|
+
const relation = metadata.findRelationWithPropertyPath(propertyPath);
|
|
2090
|
+
if (!embed && !relation)
|
|
2091
|
+
throw new EntityPropertyNotFoundError(propertyPath, metadata);
|
|
2092
|
+
if (embed) {
|
|
2093
|
+
this.buildRelations(relationValue, typeof selection === "object"
|
|
2094
|
+
? OrmUtils.deepValue(selection, embed.propertyPath)
|
|
2095
|
+
: undefined, metadata, alias, propertyPath);
|
|
2096
|
+
}
|
|
2097
|
+
else if (relation) {
|
|
2098
|
+
let joinAlias = alias + "_" + propertyPath.replace(".", "_");
|
|
2099
|
+
joinAlias = DriverUtils.buildAlias(this.connection.driver, { joiner: "__" }, alias, joinAlias);
|
|
2100
|
+
if (relationValue === true ||
|
|
2101
|
+
typeof relationValue === "object") {
|
|
2102
|
+
if (this.expressionMap.relationLoadStrategy === "query") {
|
|
2103
|
+
this.relationMetadatas.push(relation);
|
|
1880
2104
|
}
|
|
1881
2105
|
else {
|
|
1882
|
-
|
|
2106
|
+
// join
|
|
2107
|
+
this.joins.push({
|
|
2108
|
+
type: "left",
|
|
2109
|
+
select: true,
|
|
2110
|
+
selection: selection &&
|
|
2111
|
+
typeof selection[relationName] === "object"
|
|
2112
|
+
? selection[relationName]
|
|
2113
|
+
: undefined,
|
|
2114
|
+
alias: joinAlias,
|
|
2115
|
+
parentAlias: alias,
|
|
2116
|
+
relationMetadata: relation,
|
|
2117
|
+
});
|
|
2118
|
+
if (selection &&
|
|
2119
|
+
typeof selection[relationName] === "object") {
|
|
2120
|
+
console.log("sub selection", relationName);
|
|
2121
|
+
this.buildSelect(selection[relationName], relation.inverseEntityMetadata, joinAlias);
|
|
2122
|
+
}
|
|
1883
2123
|
}
|
|
1884
2124
|
}
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
2125
|
+
if (typeof relationValue === "object" &&
|
|
2126
|
+
this.expressionMap.relationLoadStrategy === "join") {
|
|
2127
|
+
this.buildRelations(relationValue, typeof selection === "object"
|
|
2128
|
+
? OrmUtils.deepValue(selection, relation.propertyPath)
|
|
2129
|
+
: undefined, relation.inverseEntityMetadata, joinAlias, undefined);
|
|
2130
|
+
}
|
|
2131
|
+
}
|
|
2132
|
+
});
|
|
2133
|
+
}
|
|
2134
|
+
buildEagerRelations(relations, selection, metadata, alias, embedPrefix) {
|
|
2135
|
+
if (!relations)
|
|
2136
|
+
return;
|
|
2137
|
+
Object.keys(relations).forEach((relationName) => {
|
|
2138
|
+
const relationValue = relations[relationName];
|
|
2139
|
+
const propertyPath = embedPrefix
|
|
2140
|
+
? embedPrefix + "." + relationName
|
|
2141
|
+
: relationName;
|
|
2142
|
+
const embed = metadata.findEmbeddedWithPropertyPath(propertyPath);
|
|
2143
|
+
const relation = metadata.findRelationWithPropertyPath(propertyPath);
|
|
2144
|
+
if (!embed && !relation)
|
|
2145
|
+
throw new EntityPropertyNotFoundError(propertyPath, metadata);
|
|
2146
|
+
if (embed) {
|
|
2147
|
+
this.buildEagerRelations(relationValue, typeof selection === "object"
|
|
2148
|
+
? OrmUtils.deepValue(selection, embed.propertyPath)
|
|
2149
|
+
: undefined, metadata, alias, propertyPath);
|
|
2150
|
+
}
|
|
2151
|
+
else if (relation) {
|
|
2152
|
+
let joinAlias = alias + "_" + propertyPath.replace(".", "_");
|
|
2153
|
+
joinAlias = DriverUtils.buildAlias(this.connection.driver, { joiner: "__" }, alias, joinAlias);
|
|
2154
|
+
if (relationValue === true ||
|
|
2155
|
+
typeof relationValue === "object") {
|
|
2156
|
+
relation.inverseEntityMetadata.eagerRelations.forEach((eagerRelation) => {
|
|
2157
|
+
let eagerRelationJoinAlias = joinAlias +
|
|
2158
|
+
"_" +
|
|
2159
|
+
eagerRelation.propertyPath.replace(".", "_");
|
|
2160
|
+
eagerRelationJoinAlias = DriverUtils.buildAlias(this.connection.driver, { joiner: "__" }, joinAlias, eagerRelationJoinAlias);
|
|
2161
|
+
const existJoin = this.joins.find((join) => join.alias === eagerRelationJoinAlias);
|
|
2162
|
+
if (!existJoin) {
|
|
2163
|
+
this.joins.push({
|
|
2164
|
+
type: "left",
|
|
2165
|
+
select: true,
|
|
2166
|
+
alias: eagerRelationJoinAlias,
|
|
2167
|
+
parentAlias: joinAlias,
|
|
2168
|
+
selection: undefined,
|
|
2169
|
+
relationMetadata: eagerRelation,
|
|
2170
|
+
});
|
|
2171
|
+
}
|
|
2172
|
+
if (selection &&
|
|
2173
|
+
typeof selection[relationName] === "object") {
|
|
2174
|
+
this.buildSelect(selection[relationName], relation.inverseEntityMetadata, joinAlias);
|
|
2175
|
+
}
|
|
2176
|
+
});
|
|
2177
|
+
}
|
|
2178
|
+
if (typeof relationValue === "object") {
|
|
2179
|
+
this.buildEagerRelations(relationValue, typeof selection === "object"
|
|
2180
|
+
? OrmUtils.deepValue(selection, relation.propertyPath)
|
|
2181
|
+
: undefined, relation.inverseEntityMetadata, joinAlias, undefined);
|
|
2182
|
+
}
|
|
2183
|
+
}
|
|
2184
|
+
});
|
|
2185
|
+
}
|
|
2186
|
+
buildOrder(order, metadata, alias, embedPrefix) {
|
|
2187
|
+
for (let key in order) {
|
|
1890
2188
|
if (order[key] === undefined)
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
2189
|
+
continue;
|
|
2190
|
+
const propertyPath = embedPrefix ? embedPrefix + "." + key : key;
|
|
2191
|
+
const column = metadata.findColumnWithPropertyPathStrict(propertyPath);
|
|
2192
|
+
const embed = metadata.findEmbeddedWithPropertyPath(propertyPath);
|
|
2193
|
+
const relation = metadata.findRelationWithPropertyPath(propertyPath);
|
|
1896
2194
|
if (!embed && !column && !relation)
|
|
1897
|
-
throw new
|
|
2195
|
+
throw new EntityPropertyNotFoundError(propertyPath, metadata);
|
|
1898
2196
|
if (column) {
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
2197
|
+
let direction = typeof order[key] === "object"
|
|
2198
|
+
? order[key].direction
|
|
2199
|
+
: order[key];
|
|
2200
|
+
direction =
|
|
2201
|
+
direction === "DESC" ||
|
|
2202
|
+
direction === "desc" ||
|
|
2203
|
+
direction === -1
|
|
2204
|
+
? "DESC"
|
|
2205
|
+
: "ASC";
|
|
2206
|
+
let nulls = typeof order[key] === "object"
|
|
2207
|
+
? order[key].nulls
|
|
2208
|
+
: undefined;
|
|
2209
|
+
nulls =
|
|
2210
|
+
nulls === "first"
|
|
2211
|
+
? "NULLS FIRST"
|
|
2212
|
+
: nulls === "last"
|
|
2213
|
+
? "NULLS LAST"
|
|
2214
|
+
: undefined;
|
|
2215
|
+
this.addOrderBy(`${alias}.${propertyPath}`, direction, nulls);
|
|
2216
|
+
// this.orderBys.push({ alias: alias + "." + propertyPath, direction, nulls });
|
|
1904
2217
|
}
|
|
1905
2218
|
else if (embed) {
|
|
1906
|
-
|
|
2219
|
+
this.buildOrder(order[key], metadata, alias, propertyPath);
|
|
1907
2220
|
}
|
|
1908
2221
|
else if (relation) {
|
|
1909
|
-
|
|
1910
|
-
|
|
2222
|
+
let joinAlias = alias + "_" + propertyPath.replace(".", "_");
|
|
2223
|
+
joinAlias = DriverUtils.buildAlias(this.connection.driver, { joiner: "__" }, alias, joinAlias);
|
|
2224
|
+
// console.log("joinAlias", joinAlias, joinAlias.length, this.connection.driver.maxAliasLength)
|
|
2225
|
+
// todo: use expressionMap.joinAttributes, and create a new one using
|
|
2226
|
+
// const joinAttribute = new JoinAttribute(this.connection, this.expressionMap);
|
|
2227
|
+
const existJoin = this.joins.find((join) => join.alias === joinAlias);
|
|
1911
2228
|
if (!existJoin) {
|
|
1912
|
-
|
|
2229
|
+
this.joins.push({
|
|
1913
2230
|
type: "left",
|
|
1914
2231
|
select: false,
|
|
1915
|
-
alias:
|
|
2232
|
+
alias: joinAlias,
|
|
1916
2233
|
parentAlias: alias,
|
|
1917
|
-
|
|
2234
|
+
selection: undefined,
|
|
2235
|
+
relationMetadata: relation,
|
|
1918
2236
|
});
|
|
1919
2237
|
}
|
|
1920
|
-
|
|
2238
|
+
this.buildOrder(order[key], relation.inverseEntityMetadata, joinAlias);
|
|
1921
2239
|
}
|
|
1922
|
-
}
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
2240
|
+
}
|
|
2241
|
+
}
|
|
2242
|
+
buildWhere(where, metadata, alias, embedPrefix) {
|
|
2243
|
+
let condition = "";
|
|
2244
|
+
// let parameterIndex = Object.keys(this.expressionMap.nativeParameters).length;
|
|
2245
|
+
if (Array.isArray(where)) {
|
|
2246
|
+
condition =
|
|
2247
|
+
"(" +
|
|
2248
|
+
where
|
|
2249
|
+
.map((whereItem) => {
|
|
2250
|
+
return this.buildWhere(whereItem, metadata, alias, embedPrefix);
|
|
2251
|
+
})
|
|
2252
|
+
.filter((condition) => !!condition)
|
|
2253
|
+
.map((condition) => "(" + condition + ")")
|
|
2254
|
+
.join(" OR ") +
|
|
2255
|
+
")";
|
|
1936
2256
|
}
|
|
1937
2257
|
else {
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
if (where[key] === undefined)
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
2258
|
+
let andConditions = [];
|
|
2259
|
+
for (let key in where) {
|
|
2260
|
+
if (where[key] === undefined || where[key] === null)
|
|
2261
|
+
continue;
|
|
2262
|
+
const propertyPath = embedPrefix ? embedPrefix + "." + key : key;
|
|
2263
|
+
const column = metadata.findColumnWithPropertyPathStrict(propertyPath);
|
|
2264
|
+
const embed = metadata.findEmbeddedWithPropertyPath(propertyPath);
|
|
2265
|
+
const relation = metadata.findRelationWithPropertyPath(propertyPath);
|
|
1946
2266
|
if (!embed && !column && !relation)
|
|
1947
|
-
throw new
|
|
2267
|
+
throw new EntityPropertyNotFoundError(propertyPath, metadata);
|
|
1948
2268
|
if (column) {
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
2269
|
+
const aliasPath = `${alias}.${propertyPath}`;
|
|
2270
|
+
// const parameterName = alias + "_" + propertyPath.split(".").join("_") + "_" + parameterIndex;
|
|
2271
|
+
// todo: we need to handle other operators as well?
|
|
2272
|
+
let parameterValue = where[key];
|
|
2273
|
+
if (InstanceChecker.isEqualOperator(where[key])) {
|
|
2274
|
+
parameterValue = where[key].value;
|
|
1954
2275
|
}
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
if (parameterValue.useParameter) {
|
|
1958
|
-
var realParameterValues = parameterValue.multipleParameters ? parameterValue.value : [parameterValue.value];
|
|
1959
|
-
realParameterValues.forEach(function (realParameterValue, realParameterValueIndex) {
|
|
1960
|
-
// don't create parameters for number to prevent max number of variables issues as much as possible
|
|
1961
|
-
if (typeof realParameterValue === "number") {
|
|
1962
|
-
parameters_2.push(realParameterValue);
|
|
1963
|
-
}
|
|
1964
|
-
else {
|
|
1965
|
-
_this.expressionMap.nativeParameters[parameterName_1 + realParameterValueIndex] = realParameterValue;
|
|
1966
|
-
parameterIndex++;
|
|
1967
|
-
parameters_2.push(_this.connection.driver.createParameter(parameterName_1 + realParameterValueIndex, parameterIndex - 1));
|
|
1968
|
-
}
|
|
1969
|
-
});
|
|
1970
|
-
}
|
|
1971
|
-
andConditions.push(parameterValue.toSql(this_2.connection, aliasPath, parameters_2));
|
|
1972
|
-
}
|
|
1973
|
-
else {
|
|
1974
|
-
this_2.expressionMap.nativeParameters[parameterName_1] = parameterValue;
|
|
1975
|
-
parameterIndex++;
|
|
1976
|
-
var parameter = this_2.connection.driver.createParameter(parameterName_1, parameterIndex - 1);
|
|
1977
|
-
andConditions.push(aliasPath + " = " + parameter);
|
|
2276
|
+
if (column.transformer) {
|
|
2277
|
+
parameterValue = ApplyValueTransformers.transformTo(column.transformer, parameterValue);
|
|
1978
2278
|
}
|
|
2279
|
+
// if (parameterValue === null) {
|
|
2280
|
+
// andConditions.push(`${aliasPath} IS NULL`);
|
|
2281
|
+
//
|
|
2282
|
+
// } else if (parameterValue instanceof FindOperator) {
|
|
2283
|
+
// // let parameters: any[] = [];
|
|
2284
|
+
// // if (parameterValue.useParameter) {
|
|
2285
|
+
// // const realParameterValues: any[] = parameterValue.multipleParameters ? parameterValue.value : [parameterValue.value];
|
|
2286
|
+
// // realParameterValues.forEach((realParameterValue, realParameterValueIndex) => {
|
|
2287
|
+
// //
|
|
2288
|
+
// // // don't create parameters for number to prevent max number of variables issues as much as possible
|
|
2289
|
+
// // if (typeof realParameterValue === "number") {
|
|
2290
|
+
// // parameters.push(realParameterValue);
|
|
2291
|
+
// //
|
|
2292
|
+
// // } else {
|
|
2293
|
+
// // this.expressionMap.nativeParameters[parameterName + realParameterValueIndex] = realParameterValue;
|
|
2294
|
+
// // parameterIndex++;
|
|
2295
|
+
// // parameters.push(this.connection.driver.createParameter(parameterName + realParameterValueIndex, parameterIndex - 1));
|
|
2296
|
+
// // }
|
|
2297
|
+
// // });
|
|
2298
|
+
// // }
|
|
2299
|
+
// andConditions.push(
|
|
2300
|
+
// this.createWhereConditionExpression(this.getWherePredicateCondition(aliasPath, parameterValue))
|
|
2301
|
+
// // parameterValue.toSql(this.connection, aliasPath, parameters));
|
|
2302
|
+
// )
|
|
2303
|
+
//
|
|
2304
|
+
// } else {
|
|
2305
|
+
// this.expressionMap.nativeParameters[parameterName] = parameterValue;
|
|
2306
|
+
// parameterIndex++;
|
|
2307
|
+
// const parameter = this.connection.driver.createParameter(parameterName, parameterIndex - 1);
|
|
2308
|
+
// andConditions.push(`${aliasPath} = ${parameter}`);
|
|
2309
|
+
// }
|
|
2310
|
+
andConditions.push(this.createWhereConditionExpression(this.getWherePredicateCondition(aliasPath, parameterValue)));
|
|
1979
2311
|
// this.conditions.push(`${alias}.${propertyPath} = :${paramName}`);
|
|
1980
2312
|
// this.expressionMap.parameters[paramName] = where[key]; // todo: handle functions and other edge cases
|
|
1981
2313
|
}
|
|
1982
2314
|
else if (embed) {
|
|
1983
|
-
|
|
1984
|
-
if (
|
|
1985
|
-
andConditions.push(
|
|
2315
|
+
const condition = this.buildWhere(where[key], metadata, alias, propertyPath);
|
|
2316
|
+
if (condition)
|
|
2317
|
+
andConditions.push(condition);
|
|
1986
2318
|
}
|
|
1987
2319
|
else if (relation) {
|
|
1988
2320
|
// if all properties of where are undefined we don't need to join anything
|
|
1989
2321
|
// this can happen when user defines map with conditional queries inside
|
|
1990
|
-
if (where[key]
|
|
1991
|
-
|
|
2322
|
+
if (typeof where[key] === "object") {
|
|
2323
|
+
const allAllUndefined = Object.keys(where[key]).every((k) => where[key][k] === undefined);
|
|
1992
2324
|
if (allAllUndefined) {
|
|
1993
|
-
|
|
2325
|
+
continue;
|
|
1994
2326
|
}
|
|
1995
2327
|
}
|
|
1996
|
-
if (where[key]
|
|
1997
|
-
if (where[key].type === "moreThan" ||
|
|
1998
|
-
|
|
2328
|
+
if (InstanceChecker.isFindOperator(where[key])) {
|
|
2329
|
+
if (where[key].type === "moreThan" ||
|
|
2330
|
+
where[key].type === "lessThan") {
|
|
2331
|
+
const sqlOperator = where[key].type === "moreThan" ? ">" : "<";
|
|
1999
2332
|
// basically relation count functionality
|
|
2000
|
-
|
|
2333
|
+
const qb = this.subQuery();
|
|
2001
2334
|
if (relation.isManyToManyOwner) {
|
|
2002
2335
|
qb.select("COUNT(*)")
|
|
2003
2336
|
.from(relation.joinTableName, relation.joinTableName)
|
|
2004
|
-
.where(relation.joinColumns
|
|
2005
|
-
|
|
2006
|
-
|
|
2337
|
+
.where(relation.joinColumns
|
|
2338
|
+
.map((column) => {
|
|
2339
|
+
return `${relation.joinTableName}.${column.propertyName} = ${alias}.${column.referencedColumn
|
|
2340
|
+
.propertyName}`;
|
|
2341
|
+
})
|
|
2342
|
+
.join(" AND "));
|
|
2007
2343
|
}
|
|
2008
2344
|
else if (relation.isManyToManyNotOwner) {
|
|
2009
2345
|
qb.select("COUNT(*)")
|
|
2010
2346
|
.from(relation.inverseRelation.joinTableName, relation.inverseRelation.joinTableName)
|
|
2011
|
-
.where(relation
|
|
2012
|
-
|
|
2013
|
-
|
|
2347
|
+
.where(relation
|
|
2348
|
+
.inverseRelation.inverseJoinColumns.map((column) => {
|
|
2349
|
+
return `${relation.inverseRelation
|
|
2350
|
+
.joinTableName}.${column.propertyName} = ${alias}.${column.referencedColumn
|
|
2351
|
+
.propertyName}`;
|
|
2352
|
+
})
|
|
2353
|
+
.join(" AND "));
|
|
2014
2354
|
}
|
|
2015
2355
|
else if (relation.isOneToMany) {
|
|
2016
2356
|
qb.select("COUNT(*)")
|
|
2017
|
-
.from(relation.inverseEntityMetadata.target, relation.inverseEntityMetadata
|
|
2018
|
-
.
|
|
2019
|
-
|
|
2020
|
-
|
|
2357
|
+
.from(relation.inverseEntityMetadata.target, relation.inverseEntityMetadata
|
|
2358
|
+
.tableName)
|
|
2359
|
+
.where(relation
|
|
2360
|
+
.inverseRelation.joinColumns.map((column) => {
|
|
2361
|
+
return `${relation
|
|
2362
|
+
.inverseEntityMetadata
|
|
2363
|
+
.tableName}.${column.propertyName} = ${alias}.${column.referencedColumn
|
|
2364
|
+
.propertyName}`;
|
|
2365
|
+
})
|
|
2366
|
+
.join(" AND "));
|
|
2021
2367
|
}
|
|
2022
2368
|
else {
|
|
2023
|
-
throw new Error(
|
|
2369
|
+
throw new Error(`This relation isn't supported by given find operator`);
|
|
2024
2370
|
}
|
|
2025
2371
|
// this
|
|
2026
2372
|
// .addSelect(qb.getSql(), relation.propertyAliasName + "_cnt")
|
|
2027
2373
|
// .andWhere(this.escape(relation.propertyAliasName + "_cnt") + " " + sqlOperator + " " + parseInt(where[key].value));
|
|
2028
|
-
|
|
2374
|
+
this.andWhere(qb.getSql() +
|
|
2375
|
+
" " +
|
|
2376
|
+
sqlOperator +
|
|
2377
|
+
" " +
|
|
2378
|
+
parseInt(where[key].value));
|
|
2029
2379
|
}
|
|
2030
2380
|
}
|
|
2031
2381
|
else {
|
|
2032
|
-
|
|
2033
|
-
|
|
2382
|
+
// const joinAlias = alias + "_" + relation.propertyName;
|
|
2383
|
+
let joinAlias = alias +
|
|
2384
|
+
"_" +
|
|
2385
|
+
relation.propertyPath.replace(".", "_");
|
|
2386
|
+
joinAlias = DriverUtils.buildAlias(this.connection.driver, { joiner: "__" }, alias, joinAlias);
|
|
2387
|
+
const existJoin = this.joins.find((join) => join.alias === joinAlias);
|
|
2034
2388
|
if (!existJoin) {
|
|
2035
|
-
|
|
2389
|
+
this.joins.push({
|
|
2036
2390
|
type: "inner",
|
|
2037
2391
|
select: false,
|
|
2038
|
-
|
|
2392
|
+
selection: undefined,
|
|
2393
|
+
alias: joinAlias,
|
|
2039
2394
|
parentAlias: alias,
|
|
2040
|
-
relationMetadata: relation
|
|
2395
|
+
relationMetadata: relation,
|
|
2041
2396
|
});
|
|
2042
2397
|
}
|
|
2043
2398
|
else {
|
|
2044
2399
|
if (existJoin.type === "left")
|
|
2045
2400
|
existJoin.type = "inner";
|
|
2046
2401
|
}
|
|
2047
|
-
|
|
2048
|
-
if (
|
|
2049
|
-
andConditions.push(
|
|
2402
|
+
const condition = this.buildWhere(where[key], relation.inverseEntityMetadata, joinAlias);
|
|
2403
|
+
if (condition) {
|
|
2404
|
+
andConditions.push(condition);
|
|
2405
|
+
// parameterIndex = Object.keys(this.expressionMap.nativeParameters).length;
|
|
2406
|
+
}
|
|
2050
2407
|
}
|
|
2051
2408
|
}
|
|
2052
|
-
};
|
|
2053
|
-
var this_2 = this;
|
|
2054
|
-
for (var key in where) {
|
|
2055
|
-
_loop_2(key);
|
|
2056
2409
|
}
|
|
2057
2410
|
condition = andConditions.join(" AND ");
|
|
2058
2411
|
}
|
|
2059
2412
|
return condition;
|
|
2060
|
-
}
|
|
2061
|
-
|
|
2062
|
-
}(QueryBuilder));
|
|
2063
|
-
export { SelectQueryBuilder };
|
|
2413
|
+
}
|
|
2414
|
+
}
|
|
2064
2415
|
|
|
2065
2416
|
//# sourceMappingURL=SelectQueryBuilder.js.map
|