Speed x Speak x Newsfeed
빠르게 전하는 소식, 함께 나누는 소통의 공간

⚠️ 친구 차단/삭제
💭 문제 상황
💭 원인
PostRepository JPQL 쿼리에 BlockedUser 조건 누락PostService.getPostById 단건 조회에서 차단 여부 체크 없음UserController 프로필 조회에서 차단 여부 처리 없음💭 해결
1. 뉴스피드/전체 게시물 조회
NOT EXISTS (
SELECT 1 FROM BlockedUser b
WHERE b.userId = :me AND b.targetUserId = p.user.id
)
viewerId(me)를 전달하도록 수정2. 단건 조회
if (blockedUserRepository.existsByUserIdAndTargetUserId(me, post.getUser().getId())) {
throw new ResponseStatusException(HttpStatus.FORBIDDEN, "차단한 사용자의 게시물입니다.");
}
3. 회원 정보 조회
"차단한 사용자입니다." 응답 반환💭 결과
⚠️ Follow 조회 기능
💭 문제 상황
NullPointerException 발생💭 원인
userRepository.existsById()로 대상 사용자 존재 여부 확인 없음viewerId와 userId 일치 검증 부재💭 해결
1. 로그인 여부
if (viewer == null) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("로그인이 필요합니다.");
}
2. 사용자 존재 여부
if (!userRepository.existsById(userId)) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body("사용자를 찾을 수 없습니다.");
}
3. 본인만 목록 조회 가능
if (!viewer.getId().equals(userId)) {
return ResponseEntity.status(HttpStatus.FORBIDDEN).body("본인만 조회할 수 있습니다.");
}
4. 단건 상태 조회 예외 처리
if (!viewer.getId().equals(userId)) {
return ResponseEntity.status(HttpStatus.FORBIDDEN).body("본인만 조회할 수 있습니다.");
}
💭 결과
401 UNAUTHORIZED 응답404 NOT_FOUND 응답403 FORBIDDEN)400 BAD_REQUEST 처리발제를 듣기 시작했던 초반은 프로젝트 구현을 마칠 수 있을지, 혹은 이렇다 할 결과가 나올 수 있을지에 대한 막막함이 컸다. 그러나 내가 맡은 부분부터 차근차근 코드를 작성해 나가니까 생각했던 것보다 수월하게 담당 부분을 구현할 수 있었고, 코드 테스트를 진행하면서도 재미를 느끼게 되었다.
결과적으로는 처음 진행하는 팀 프로젝트라서 걱정과 고민이 되는 부분이 많았지만, 팀원들과 의견을 나누면서 문제를 해결하고 점차 진도가 나가며 진행률이 올라가는 것을 보니까 뿌듯함이 느껴졌다. 지금까지는 개인 프로젝트만 진행해서 처음부터 끝까지 혼자 노력했지만, 팀원들과 협업하며 하나의 프로젝트를 완성했을 때에는 또 다른 성취감과 후련함이 느껴진다는 것을 깨달았다. 9월에 진행할 최종 프로젝트는 현재보다 더 발전한 결과를 얻기 위해 더 열심히 임해야겠다는 다짐을 하였다.
✔️ 자세한 코드 및 시연 영상은 깃허브에서 확인 가능
→ SFeed → Speed x Speak x Newsfeed