Использую TypeOrm на NestJS
У меня есть таблица user_role я пишу endpoint для создания роли
async create(createUserRoleDto: CreateUserRoleDto): Promise<UserRole> {
const userRole = this.userRolesRepository.create(createUserRoleDto);
await this.userRolesRepository.save(userRole);
return this.findOne({ id: userRole.id });
}
@Entity()
export class UserRole extends CommonEntity {
@Column({ type: 'varchar', unique: true })
title: string;
@Column({ type: 'varchar', unique: true })
code: string;
@Column({ type: 'varchar', nullable: true })
description: string;
@ManyToMany(() => UserRight, (userRight) => userRight.id)
@JoinTable()
rights: UserRight[];
}
@Entity()
export class UserRight extends CommonEntity {
@Column({ type: 'varchar', unique: true })
title: string;
@Column({ type: 'boolean', default: true })
create: boolean;
@Column({ type: 'boolean', default: true })
read: boolean;
@Column({ type: 'boolean', default: true })
write: boolean;
@Column({ type: 'boolean', default: true })
delete: boolean;
@ManyToOne(() => ProjectModule)
module: ProjectModule;
}
у меня есть таблицы user_role user_right - права роли
есть user_role_rights_user_right это взаимоотношение этих таблиц связь многим-ко-многим
также есть project_module это фиксированная таблица она создается в миграциях и представлять собой модули и наименование контроллера
в user_right пишутся права (create read write delete) и moduleId
например у нас есть 5 модулей
с id 1 - 5
при создании роли id: 1 Admin
появляется 5 записей в таблице user_right
1 create:false read:false .... moduleId: 1
...
5 create:false read:false .... moduleId: 5
и также создается их связь
userRoleId: 1 userRightId: 1
...
userRoleId: 1 userRightId: 5
желательно все это сделать с помощью typeOrm у меня получилось сделать так что если в body передавать массив userRightId в виде [1,2,3..,5]
то все создается верно
но мне нужно создавать новые userRights потому что иначе две роли будут относится к одним правам что не верно
помогите пожалуйста