cs 질의응답을 작성을 했고, 기술면접도 9?10?번까지는 작성을 해야한다고 해서 일단 10번까지는 작성을 해놓으려고 합니다.
그런데 오늘 마저 코딩을 하고 싶었지만 상세조회를 작성을 해줘야 그뒤로 댓글관련해서 작성을 하는데 아직 다른분의 작업공간이라 하질 못하고 있습니다.
일단 튜터님이 말씀해주신대로 멤버 업데이트 부분을 수정해주었습니다.
board-member.service.ts
//보드 멤버 업데이트
async UpdateBoardMember(boardId: number, users: string[]) {
const board = await this.boardsService.GetBoardById(boardId);
const boardMembers = await this.boardMemberRepository.find({ relations: ['user', 'board'] });
const boardMember = boardMembers.filter((member) => {
return boardId == member.board.id;
});
const userArray = [];
for (const i in boardMember) {
userArray.push(boardMember[i].user.name);
}
const deleteUsers = userArray.filter((x) => !users.includes(x));
const updateUsers = users.filter((x) => !userArray.includes(x));
if (!board) throw new NotFoundException('해당 보드는 존재하지 않습니다.');
const entityManager = this.boardMemberRepository.manager;
try {
await entityManager.transaction(async (transactionEntityManager: EntityManager) => {
if (updateUsers.length > 0) {
for (const i in updateUsers) {
const user = await this.usersService.findUserByName(updateUsers[i]);
if (!user) throw new NotFoundException('해당 유저는 존재하지 않습니다.');
const newBoardMembers = this.boardMemberRepository.create({ board, user });
console.log(newBoardMembers);
await transactionEntityManager.save(Board_Member, newBoardMembers);
}
}
if (deleteUsers.length > 0) {
for (const i in deleteUsers) {
const deleteBoardMember = this.boardMemberRepository.delete({ id: deleteUsers[i].id });
console.log(deleteBoardMember);
await transactionEntityManager.remove(deleteBoardMember);
}
}
});
return { result: true };
} catch (err) {
console.error(err);
}
}
board-member.controller.ts
//보드 멤버 업데이트
@Put('/boards/:boardId/members')
@UseGuards(AuthGuard)
async UpdateBoardMember(
@Param('boardId') boardId: number,
@Body() data: BoardMemberUpdateDto,
@Res() res: Response
) {
await this.boardMembersService.UpdateBoardMember(boardId, ata.names);
return res.status(HttpStatus.OK).json({ message: '보드멤버를 업데이트 했습니다.' });
}
board.dto.ts
export class BoardMemberUpdateDto {
@IsNotEmpty()
@IsArray()
names: string[];
}
기술면접 top30