import {AuthenticationBindings} from '@bleco/authentication'; import {Getter, inject} from '@loopback/core'; import {BelongsToAccessor, juggler, repository} from '@loopback/repository'; import {DefaultUserUpdatableCrudRepository, EntityClass, IAuthTenantUser} from '@loopx/core'; import {UserTenant, UserTenantRepository} from '@loopx/user-core'; import {UserLevelResource, UserLevelResourceTypes} from '../models'; import {AuthDbSourceName} from '../types'; export class UserLevelResourceRepository< ULR extends UserLevelResourceTypes = UserLevelResourceTypes, > extends DefaultUserUpdatableCrudRepository { public readonly userTenant: BelongsToAccessor; constructor( @inject(`datasources.${AuthDbSourceName}`) dataSource: juggler.DataSource, @repository.getter('UserTenantRepository') protected userTenantRepositoryGetter: Getter, @inject.getter(AuthenticationBindings.CURRENT_USER, {optional: true}) getCurrentUser?: Getter, entityClass: EntityClass = UserLevelResource, ) { super(entityClass, dataSource, getCurrentUser); this.userTenant = this.createBelongsToAccessorFor('userTenant', userTenantRepositoryGetter); this.registerInclusionResolver('userTenant', this.userTenant.inclusionResolver); } }