// Copyright IBM Corp. and LoopBack contributors 2020. All Rights Reserved. // Node module: @loopback/authentication-jwt // This file is licensed under the MIT License. // License text available at https://opensource.org/licenses/MIT import {Getter, inject} from '@loopback/core'; import { DefaultCrudRepository, HasOneRepositoryFactory, juggler, repository, } from '@loopback/repository'; import {UserServiceBindings} from '../keys'; import {User, UserCredentials, UserRelations} from '../models'; import {UserCredentialsRepository} from './user-credentials.repository'; export class UserRepository extends DefaultCrudRepository< User, typeof User.prototype.id, UserRelations > { public readonly userCredentials: HasOneRepositoryFactory< UserCredentials, typeof User.prototype.id >; constructor( @inject(`datasources.${UserServiceBindings.DATASOURCE_NAME}`) dataSource: juggler.DataSource, @repository.getter('UserCredentialsRepository') protected userCredentialsRepositoryGetter: Getter, ) { super(User, dataSource); this.userCredentials = this.createHasOneRepositoryFactoryFor( 'userCredentials', userCredentialsRepositoryGetter, ); this.registerInclusionResolver( 'userCredentials', this.userCredentials.inclusionResolver, ); } async findCredentials( userId: typeof User.prototype.id, ): Promise { return this.userCredentials(userId) .get() .catch(err => { if (err.code === 'ENTITY_NOT_FOUND') return undefined; throw err; }); } }