diff --git a/src/__tests__/helpers/database.helper.ts b/src/__tests__/helpers/database.helper.ts index 0e1c3384e..cdcbfad82 100644 --- a/src/__tests__/helpers/database.helper.ts +++ b/src/__tests__/helpers/database.helper.ts @@ -34,6 +34,7 @@ export async function givenRepositories(testdb: any) { async () => activityLogRepository, async () => accountSettingRepository, async () => notificationSettingRepository, + async () => peopleRepository, ); const userExperienceRepository: UserExperienceRepository = new UserExperienceRepository( diff --git a/src/models/user.model.ts b/src/models/user.model.ts index 41e63ed2d..9445def8b 100644 --- a/src/models/user.model.ts +++ b/src/models/user.model.ts @@ -9,6 +9,8 @@ import {UserCurrency} from './user-currency.model'; import {UserExperience} from './user-experience.model'; import {AccountSetting} from './account-setting.model'; import {NotificationSetting} from './notification-setting.model'; +import {People} from './people.model'; +import {UserSocialMedia} from './user-social-media.model'; @model({ settings: { @@ -204,6 +206,9 @@ export class User extends Entity { @hasOne(() => NotificationSetting) notificationSetting: NotificationSetting; + @hasMany(() => People, {through: {model: () => UserSocialMedia}}) + people: People[]; + constructor(data?: Partial) { super(data); } diff --git a/src/repositories/user.repository.ts b/src/repositories/user.repository.ts index 75c6d88d6..d4784405f 100644 --- a/src/repositories/user.repository.ts +++ b/src/repositories/user.repository.ts @@ -18,6 +18,8 @@ import { UserRelations, AccountSetting, NotificationSetting, + People, + UserSocialMedia, } from '../models'; import {ActivityLogRepository} from './activity-log.repository'; import {CurrencyRepository} from './currency.repository'; @@ -28,6 +30,7 @@ import {UserExperienceRepository} from './user-experience.repository'; import {UserSocialMediaRepository} from './user-social-media.repository'; import {AccountSettingRepository} from './account-setting.repository'; import {NotificationSettingRepository} from './notification-setting.repository'; +import {PeopleRepository} from './people.repository'; @bind({scope: BindingScope.SINGLETON}) export class UserRepository extends DefaultCrudRepository< @@ -69,6 +72,13 @@ export class UserRepository extends DefaultCrudRepository< typeof User.prototype.id >; + public readonly people: HasManyThroughRepositoryFactory< + People, + typeof People.prototype.id, + UserSocialMedia, + typeof User.prototype.id + >; + constructor( @inject('datasources.mongo') dataSource: MongoDataSource, @repository.getter('UserSocialMediaRepository') @@ -89,8 +99,16 @@ export class UserRepository extends DefaultCrudRepository< protected accountSettingRepositoryGetter: Getter, @repository.getter('NotificationSettingRepository') protected notificationSettingRepositoryGetter: Getter, + @repository.getter('PeopleRepository') + protected peopleRepositoryGetter: Getter, ) { super(User, dataSource); + this.people = this.createHasManyThroughRepositoryFactoryFor( + 'people', + peopleRepositoryGetter, + userSocialMediaRepositoryGetter, + ); + this.registerInclusionResolver('people', this.people.inclusionResolver); this.notificationSetting = this.createHasOneRepositoryFactoryFor( 'notificationSetting', notificationSettingRepositoryGetter,