@central-credit/app
Version:
Application Central Credit
55 lines (49 loc) • 1.47 kB
text/typescript
// Copyright IBM Corp. 2018. All Rights Reserved.
// Node module: loopback4-example-shopping
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT
import {
DefaultCrudRepository,
juggler,
repository,
HasOneRepositoryFactory
} from '@loopback/repository'
import { User, UserCredentials } from '../models'
import { inject, Getter } from '@loopback/core'
import { UserCredentialsRepository } from './user-credentials.repository'
export type Credentials = {
email: string
password: string
}
export class UserRepository extends DefaultCrudRepository<
User,
typeof User.prototype.id
> {
public readonly userCredentials: HasOneRepositoryFactory<
UserCredentials,
typeof User.prototype.id
>
constructor(
('datasources.mongo') protected datasource: juggler.DataSource,
.getter('UserCredentialsRepository')
protected userCredentialsRepositoryGetter: Getter<UserCredentialsRepository>
) {
super(User, datasource)
this.userCredentials = this.createHasOneRepositoryFactoryFor(
'userCredentials',
userCredentialsRepositoryGetter
)
}
async findCredentials(
userId: typeof User.prototype.id
): Promise<UserCredentials | undefined> {
try {
return await this.userCredentials(userId).get()
} catch (err) {
if (err.code === 'ENTITY_NOT_FOUND') {
return undefined
}
throw err
}
}
}