import { AggregateQuery, Class, Query } from '@nestjs-query/core'; import { Repository, SelectQueryBuilder, ObjectLiteral } from 'typeorm'; import { RelationMetadata } from 'typeorm/metadata/RelationMetadata'; import { FilterQueryBuilder } from './filter-query.builder'; interface JoinCondition { leftHand: string; rightHand: string; } interface JoinColumn { target: Class | string; alias: string; conditions: JoinCondition[]; } declare type SQLFragment = { sql: string; params: ObjectLiteral; }; declare type PrimaryKey = { databasePath: string; selectPath: string; propertyName: string; }; interface RelationQuery { from: Class; fromAlias: string; fromPrimaryKeys: PrimaryKey[]; joins: JoinColumn[]; whereCondition(entity: Entity): SQLFragment; } export declare type EntityIndexRelation = Relation & { __nestjsQuery__entityIndex__: number; }; /** * @internal * * Class that will convert a Query into a `typeorm` Query Builder. */ export declare class RelationQueryBuilder { readonly repo: Repository; readonly relation: string; private relationMetadata; readonly filterQueryBuilder: FilterQueryBuilder; readonly relationRepo: Repository; private paramCount; constructor(repo: Repository, relation: string); select(entity: Entity, query: Query): SelectQueryBuilder; batchSelect(entities: Entity[], query: Query): SelectQueryBuilder>; batchAggregate(entities: Entity[], query: Query, aggregateQuery: AggregateQuery): SelectQueryBuilder>>; aggregate(entity: Entity, query: Query, aggregateQuery: AggregateQuery): SelectQueryBuilder; private createUnionAggregateSubQuery; private createUnionSelectSubQuery; private createRelationQueryBuilder; private get relationMeta(); getManyToOneOrOneToOneOwnerMeta(relation: RelationMetadata): RelationQuery; getOneToManyOrOneToOneNotOwnerMeta(relation: RelationMetadata): RelationQuery; getManyToManyOwnerMeta(relation: RelationMetadata): RelationQuery; getManyToManyNotOwnerMetadata(relation: RelationMetadata): RelationQuery; private getParamName; get entityIndexColName(): string; private get escapedEntityIndexColName(); private get unionAlias(); private get escapedUnionAlias(); private escapeName; getRelationPrimaryKeysPropertyNameAndColumnsName(): { columnName: string; propertyName: string; }[]; } export {};