🚗 Backend Toy Project/스프링 부트 게시판

    [스프링부트 게시판] 34. 사용자 프로필 이미지 추가

    좀 더 블로그스러운 느낌을 추가하기 위해 사용자 프로필 이미지를 추가해보았습니다. 이를 위해 User 객체에 프로필 이미지 URL을 저장하기 위한 문자열 형식의 변수를 우선 추가해주었습니다. 📝 UserApiController 컨트롤러에는 아래와 같은 함수를 추가해주었습니다. package com.cos.blog.controller.api; ... @RestController @RequiredArgsConstructor public class UserApiController { private final UserService userService; ... @PutMapping("/api/user/{user_id}/profileImageUrl") public ResponseDto profileImageUpd..

    [스프링부트 게시판] 33. 댓글 알림 기능

    다른 사용자가 게시글에 댓글을 남길 경우 해당 게시글을 작성한 사용자에게 알림이 뜨도록 구현해보았습니다. 실시간으로 알림을 보낼 필요는 없어보였기 때문에 인터셉터를 통한 비연결형으로 구현하였습니다. 인터셉터에 대한 자세한 설명은 아래 링크에서 확인하실 수 있습니다. Spring Interceptor 개념 정리, 적용법 📝 인터셉터란? 인터셉터(Interceptor)는 DispatcherServlet과 컨트롤러(Controller) 사이에서 요청(request)을 가로채는 역할을 수행합니다. 인터셉터를 사용하면 기존의 로직을 수정하지 않고 비즈니스 로 daegwonkim.tistory.com 📝 ReplyRepository 우선 다음과 같이 SQL 구문을 작성하여 함수를 구현하였습니다. package co..

    [스프링부트 게시판] 32. 이전에 봤던 글 표시

    게시판에서 로그인 한 사용자가 이전에 봤던 글이 있다면 해당 되는 글을 옅게 표시하는 기능을 추가하여 본 글과 보지 않은 글을 구분할 수 있도록 구현해보았습니다. 기능 구현은 각 게시글 객체마다 해당 게시글을 방문한 사용자에 대한 리스트를 저장하고 이후 현재 접속한 사용자와 리스트에 저장된 사용자를 비교하는 방식으로 구현하였습니다. 📝 Board 우선 Board 엔티티에 해당 게시글을 본 사용자 리스트를 저장하기 위해 새로운 변수를 추가해주었습니다. package com.cos.blog.model; ... @Entity @Data @AllArgsConstructor @NoArgsConstructor @Builder public class Board { ... private String seen; ... ..

    [스프링부트 게시판] 31. 이전글, 다음글 구현

    게시글 상세보기 페이지에서 이전글 또는 다음글로 바로 이동할 수 있도록 버튼을 생성하고 구현해주었습니다. 기능 구현은 이전에 구현했던 코드와 비슷하여 어렵지 않았으나 쿼리를 짜는데 시간이 조금 들었습니다. 📝 BoardRepository 우선 쿼리는 아래와 같이 작성하였습니다. SELECT * FROM board WHERE id = (SELECT prev_no FROM (SELECT id, LAG(id, 1, -1) OVER(ORDER BY id) AS prev_no FROM board) B WHERE id = :id) SELECT * FROM board WHERE id = (SELECT prev_no FROM (SELECT id, LEAD(id, 1, -1) OVER(ORDER BY id) AS pre..