All files / src/repositories user.repository.ts

100% Statements 19/19
100% Branches 0/0
100% Functions 3/3
100% Lines 17/17

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 371x 1x 1x 1x 1x     1x                     331x 331x   331x 331x 331x 331x 331x     1x 1x 5x     1x      
import {Getter, inject} from '@loopback/core';
import {BelongsToAccessor, DefaultCrudRepository, HasManyRepositoryFactory, repository} from '@loopback/repository';
import {MysqlDataSource} from '../datasources';
import {Roles, User, UserDetails, UserRelations} from '../models';
import {validateEmailExist} from '../services';
import {RolesRepository} from './roles.repository';
import {UserDetailsRepository} from './user-details.repository';
export class UserRepository extends DefaultCrudRepository<
  User,
  typeof User.prototype.UID,
  UserRelations
> {
  public readonly role: BelongsToAccessor<Roles, typeof User.prototype.UID>;
 
  public readonly userDetails: HasManyRepositoryFactory<UserDetails, typeof User.prototype.UID>;
 
  constructor(
    @inject('datasources.mysql') dataSource: MysqlDataSource,
    @repository.getter('RolesRepository') protected rolesRepositoryGetter: Getter<RolesRepository>,
    @repository.getter('UserDetailsRepository') protected userDetailsRepositoryGetter: Getter<UserDetailsRepository>,
  ) {
    super(User, dataSource);
    this.userDetails = this.createHasManyRepositoryFactoryFor('userDetails', userDetailsRepositoryGetter,);
    this.registerInclusionResolver('userDetails', this.userDetails.inclusionResolver);
    this.role = this.createBelongsToAccessorFor('role', rolesRepositoryGetter,);
    this.registerInclusionResolver('role', this.role.inclusionResolver);
  }
  definePersistedModel(entityClass: typeof User) {
    const modelClass = super.definePersistedModel(entityClass);
    modelClass.observe('before save', async ctx => {
      validateEmailExist()
    });
 
    return modelClass;
  }
}