UNPKG

@loopback/repository

Version:

Define and implement a common set of interfaces for interacting with databases

41 lines (37 loc) 1.38 kB
// Copyright IBM Corp. and LoopBack contributors 2018,2020. All Rights Reserved. // Node module: @loopback/repository // This file is licensed under the MIT License. // License text available at https://opensource.org/licenses/MIT import {Entity, EntityResolver} from '../../model'; import {relation} from '../relation.decorator'; import {HasOneDefinition, RelationType} from '../relation.types'; /* * Decorator for hasOne * infers foreign key name from target model name unless explicitly specified * @param targetResolver - Target model for hasOne relation * @param definition - Optional metadata for setting up hasOne relation * @returns A property decorator */ export function hasOne<T extends Entity>( targetResolver: EntityResolver<T>, definition?: Partial<HasOneDefinition>, ) { return function (decoratedTarget: object, key: string) { // property.array(targetResolver)(decoratedTarget, key); const meta: HasOneDefinition = Object.assign( // default values, can be customized by the caller {}, // properties provided by the caller definition, // properties enforced by the decorator { type: RelationType.hasOne, targetsMany: false, name: key, source: decoratedTarget.constructor, target: targetResolver, }, ); relation(meta)(decoratedTarget, key); }; }