import { Connection, ObjectLiteral } from "../"; import { RelationMetadata } from "../metadata/RelationMetadata"; /** * Loads relation ids for the given entities. */ export declare class RelationIdLoader { private connection; constructor(connection: Connection); /** * Loads relation ids of the given entity or entities. */ load(target: Function | string, relation: string, entities: ObjectLiteral | ObjectLiteral[], relatedEntities?: ObjectLiteral | ObjectLiteral[]): Promise; /** * Loads relation ids of the given entity or entities. */ load(relation: RelationMetadata, entities: ObjectLiteral | ObjectLiteral[], relatedEntities?: ObjectLiteral | ObjectLiteral[]): Promise; /** * Loads relation ids of the given entities and groups them into the object with parent and children. * * todo: extract this method? */ loadManyToManyRelationIdsAndGroup(relation: RelationMetadata, entitiesOrEntities: E1 | E1[], relatedEntityOrEntities?: E2 | E2[]): Promise<{ entity: E1; related?: E2 | E2[]; }[]>; /** * Loads relation ids of the given entities and maps them into the given entity property. async loadManyToManyRelationIdsAndMap( relation: RelationMetadata, entityOrEntities: ObjectLiteral|ObjectLiteral[], mapToEntityOrEntities: ObjectLiteral|ObjectLiteral[], propertyName: string ): Promise { const relationIds = await this.loadManyToManyRelationIds(relation, entityOrEntities, mapToEntityOrEntities); const mapToEntities = mapToEntityOrEntities instanceof Array ? mapToEntityOrEntities : [mapToEntityOrEntities]; const junctionMetadata = relation.junctionEntityMetadata!; const mainAlias = junctionMetadata.name; const columns = relation.isOwning ? junctionMetadata.inverseColumns : junctionMetadata.ownerColumns; const inverseColumns = relation.isOwning ? junctionMetadata.ownerColumns : junctionMetadata.inverseColumns; mapToEntities.forEach(mapToEntity => { mapToEntity[propertyName] = []; relationIds.forEach(relationId => { const match = inverseColumns.every(column => { return column.referencedColumn!.getEntityValue(mapToEntity) === relationId[mainAlias + "_" + column.propertyName]; }); if (match) { if (columns.length === 1) { mapToEntity[propertyName].push(relationId[mainAlias + "_" + columns[0].propertyName]); } else { const value = {}; columns.forEach(column => { column.referencedColumn!.setEntityValue(value, relationId[mainAlias + "_" + column.propertyName]); }); mapToEntity[propertyName].push(value); } } }); }); }*/ /** * Loads relation ids for the many-to-many relation. */ protected loadForManyToMany(relation: RelationMetadata, entities: ObjectLiteral[], relatedEntities?: ObjectLiteral[]): Promise; /** * Loads relation ids for the many-to-one and one-to-one owner relations. */ protected loadForManyToOneAndOneToOneOwner(relation: RelationMetadata, entities: ObjectLiteral[], relatedEntities?: ObjectLiteral[]): Promise; /** * Loads relation ids for the one-to-many and one-to-one not owner relations. */ protected loadForOneToManyAndOneToOneNotOwner(relation: RelationMetadata, entities: ObjectLiteral[], relatedEntities?: ObjectLiteral[]): Promise; }