diff --git a/libs/common/src/modules/community/entities/community.entity.ts b/libs/common/src/modules/community/entities/community.entity.ts index 1fafcf9..c63da01 100644 --- a/libs/common/src/modules/community/entities/community.entity.ts +++ b/libs/common/src/modules/community/entities/community.entity.ts @@ -1,8 +1,16 @@ -import { Column, Entity, ManyToOne, OneToMany, Unique } from 'typeorm'; +import { + Column, + Entity, + ManyToMany, + ManyToOne, + OneToMany, + Unique, +} from 'typeorm'; import { AbstractEntity } from '../../abstract/entities/abstract.entity'; import { CommunityDto } from '../dtos'; import { RegionEntity } from '../../region/entities'; import { SpaceEntity } from '../../space/entities'; +import { UserEntity } from '../../user/entities'; @Entity({ name: 'community' }) @Unique(['name']) @@ -31,4 +39,7 @@ export class CommunityEntity extends AbstractEntity { @OneToMany(() => SpaceEntity, (space) => space.community) spaces: SpaceEntity[]; + + @ManyToMany(() => UserEntity, (user) => user.communities) + users: UserEntity[]; } diff --git a/libs/common/src/modules/user/entities/user.entity.ts b/libs/common/src/modules/user/entities/user.entity.ts index 141f5de..18f51fb 100644 --- a/libs/common/src/modules/user/entities/user.entity.ts +++ b/libs/common/src/modules/user/entities/user.entity.ts @@ -2,6 +2,8 @@ import { Column, DeleteDateColumn, Entity, + JoinTable, + ManyToMany, ManyToOne, OneToMany, Unique, @@ -26,6 +28,7 @@ import { OtpType } from '../../../../src/constants/otp-type.enum'; import { RoleTypeEntity } from '../../role-type/entities'; import { SpaceEntity } from '../../space/entities'; import { VisitorPasswordEntity } from '../../visitor-password/entities'; +import { CommunityEntity } from '../../community/entities'; @Entity({ name: 'user' }) export class UserEntity extends AbstractEntity { @@ -115,6 +118,15 @@ export class UserEntity extends AbstractEntity { (visitorPassword) => visitorPassword.user, ) public visitorPasswords: VisitorPasswordEntity[]; + + @ManyToMany(() => CommunityEntity, (community) => community.users) + @JoinTable({ + name: 'user_communities', // Join table to link users and communities + joinColumn: { name: 'user_id', referencedColumnName: 'uuid' }, + inverseJoinColumn: { name: 'community_id', referencedColumnName: 'uuid' }, + }) + communities: CommunityEntity[]; + constructor(partial: Partial) { super(); Object.assign(this, partial);