UNPKG

1.22 kBTypeScriptView Raw
1import { Entity } from '../../model';
2import { EntityCrudRepository } from '../../repositories/repository';
3import { BelongsToDefinition, Getter, InclusionResolver } from '../relation.types';
4export interface BelongsToAccessor<Target extends Entity, SourceId> {
5 /**
6 * Invoke the function to obtain HasManyRepository.
7 */
8 (sourceId: SourceId, polymorphicTypes?: string | string[]): Promise<Target>;
9 /**
10 * Use `resolver` property to obtain an InclusionResolver for this relation.
11 */
12 inclusionResolver: InclusionResolver<Entity, Target>;
13}
14/**
15 * Enforces a BelongsTo constraint on a repository
16 * If the target model is polymorphic, i.e. stored within different repositories,
17 * supply the targetRepositoryGetter with a dictionary in the form of {[typeName: string]: repositoryGetter}
18 */
19export declare function createBelongsToAccessor<Target extends Entity, TargetId, Source extends Entity, SourceId>(belongsToMetadata: BelongsToDefinition, targetRepositoryGetter: Getter<EntityCrudRepository<Target, TargetId>> | {
20 [repoType: string]: Getter<EntityCrudRepository<Target, TargetId>>;
21}, sourceRepository: EntityCrudRepository<Source, SourceId>): BelongsToAccessor<Target, SourceId>;