728x90
- 베어러 토큰이 있어야 작동이 가능하게 코드 수정해야 함.
async changeListTitle(
updateListDto: UpdatedListDto,
listId: number,
user: User,
) {
// 찾고 싶은 게시물을 listId를 통해서 찾아준다.
const { id } = user;
const list = await this.ListRepository.findOne({
where: { listId, userId: id },
});
if (!list) {
throw new NotFoundException(`해당하는 컬럼이 존재하지 않습니다.`);
}
// 레포지토리에 업데이트를 해줘야함
await this.ListRepository.update({ listId, userId: id }, updateListDto);
// list의 타이틀을 변경된 것을 DB에 넣어야함
const changedListTitle = await this.ListRepository.findOne({
where: {
listId,
userId: id,
},
});
if (changedListTitle) {
return {
status: HttpStatus.OK,
message: `${listId}번 컬럼 제목이 정상적으로 변경되었습니다.`,
result: changedListTitle,
};
}
// return changedListTitle;
}
// 컨트롤러
@UseGuards(JwtAuthGuard)
@Patch('/:listId')
changeListTile(
@Body() updatedListDto: UpdatedListDto,
@Param('listId') listId: number,
@userInfo() user: User,
) {
return this.listService.changeListTitle(updatedListDto, listId, user);
서비스 부분: userId와 listId를 통해 바꿀 게시물을 찾아줌 컨트롤러 부분: 인증된 사용자가 사용할 수 있도록 베어러 토큰 사용을 위해서 UseGuards설정을 해주고 userInfo라는 커스텀 데코레이터를 사용함.
- 가드를 사용해서 베어러 토큰을 받아서 작업할 수 있게 했음
@UseGuards(JwtAuthGuard)
@Post() // url 추가적으로 작성해줘야함(기능은 잘 돌아감)
// 클라이언트가 body에 담아서 보내야 하는 것
create(@Body() createListDto: CreateListDto, @userInfo() user: User) {
this.listService.createList(createListDto, user);
return {
status: HttpStatus.CREATED,
message: `새로운 컬럼이 생성되었습니다.`,
};
// return { statusCode: HttpStatus.OK, message: '내 정보 수정에 성공했습니다.', data: updatedUser, };
}
// 컬럼 제목 변경
@UseGuards(JwtAuthGuard)
@Patch('/:listId')
changeListTile(
@Body() updatedListDto: UpdatedListDto,
@Param('listId') listId: number,
@userInfo() user: User,
) {
return this.listService.changeListTitle(updatedListDto, listId, user);
}
// 컬럼 삭제 하기
@UseGuards(JwtAuthGuard)
@Delete('/:listId')
deleteList(@Param('listId') listId: number, @userInfo() user: User) {
return this.listService.deleteList(listId, user);
}
// 서비스
async createList(createListDto: CreateListDto, user: User) {
const { title } = createListDto;
const { id } = user;
const newList = await this.ListRepository.save({
title,
userId: id,
});
return newList.title;
}
// 컬럼 제목 변경
async changeListTitle(
updateListDto: UpdatedListDto,
listId: number,
user: User,
) {
// 찾고 싶은 게시물을 listId를 통해서 찾아준다.
const { id } = user;
const list = await this.ListRepository.findOne({
where: { listId, userId: id },
});
if (!list) {
throw new NotFoundException(`해당하는 컬럼이 존재하지 않습니다.`);
}
// 레포지토리에 업데이트를 해줘야함
await this.ListRepository.update({ listId, userId: id }, updateListDto);
// list의 타이틀을 변경된 것을 DB에 넣어야함
const changedListTitle = await this.ListRepository.findOne({
where: {
listId,
userId: id,
},
});
if (changedListTitle) {
return {
status: HttpStatus.OK,
message: `${listId}번 컬럼 제목이 정상적으로 변경되었습니다.`,
result: changedListTitle,
};
}
// return changedListTitle;
}
// 컬럼 삭제하기
async deleteList(listId: number, user: User) {
const { id } = user;
const list = await this.ListRepository.findOne({
where: { listId, userId: id },
});
if (!list) {
throw new NotFoundException(`해당하는 컬럼이 존재하지 않습니다.`);
}
const deleteList = await this.ListRepository.delete({ listId, userId: id });
if (deleteList) {
return {
status: HttpStatus.OK,
message: `${listId}번 컬럼이 정상적으로 삭제되었습니다.`,
result: deleteList,
};
}
}
- 트롤로 프로젝트 List 위치 이동 생성 Ing (이거는 진짜 못하겠음;;)
너무 어렵다... 나 최종프로젝트까지 잘버틸 수 있을까?