[Healing Service - DEW Calendar - 일기 삭제 기능]

1. 일기 삭제 기능

사용자가 작성한 일기를 삭제하는 기능이다.
사용자의 고유번호와 일기 작성 날짜를 확인하여,
DB에서 삭제하는 로직을 설계했다.

2. 구현

2.1 Controller

 /**
     * 일기 삭제 API
     * @param request 사용자 요청
     * @param date 일기 작성 날짜
     * @return 일기 삭제 성공 메시지
     */
    @Operation(summary = " 일기 삭제 ", description = " ")
    @DeleteMapping("/diary")
    public ResponseEntity<String> deleteDiary(HttpServletRequest request,
                                              @RequestParam(name = "date")
                                              @DateTimeFormat(pattern = "yyyy-MM-dd")
                                              LocalDate date){

        /* 일기 삭제 */
        dewService.deleteDiary(request,date);

        return ResponseEntity.ok("일기 삭제 성공!");
    }

나는 항상 컨트롤러에는 별거를 안 넣으려고 한다.
내게 컨트롤러는 그저 시작점이자 가장 간단한 로직만 존재하는 곳으로 인식되기 때문이다.

중요한 수학적 논리는 서비스단이나 Repository 혹은 Mapper 부분에 설계한다.

2.2 Service

2.2.1 서비스 인터페이스

/**
     * 일기 삭제 메서드
     * @param request 사용자 요청
     * @param date 일기 작성 날짜
     */
    void deleteDiary(HttpServletRequest request, LocalDate date);

2.2.2 서비스 구현체

/**
     * 일기 삭제 메서드
     * @param request 사용자 요청
     * @param date 일기 작성 날짜
     */
    @Override
    public void deleteDiary(HttpServletRequest request, LocalDate date) {

        /* 사용자 고유번호 조회 */
        Long userNumber = jwtService.extractUserNumberFromRequest(request);

        /* 다이어리 삭제 */
        dewMapper.deleteDiary(userNumber,date);

    }

단순 삭제 API이다 보니 서비스 단에도 크게 복잡한 논리구조는 없다.
그저 고유번호만 조회하고, 다이어리 삭제를 위해 userNumber와 date를 Mapper 인터페이스에 넘기는 것이 전부이다.

2.3 Mapper

다이어리 삭제는 Mapper 인터페이스에서 담당한다.

mapper코드

/**
     * 일기 삭제 메서드
     * @param userNumber 사용자 고유 번호
     * @param date 일기 작성 날짜
     */
    void deleteDiary(@Param("userNumber")Long userNumber, @Param("date") LocalDate date);

사용자의 고유 번호와 일기 작성 날짜를 받아서 xml의 sql문으로 넘긴다.

xml코드

<!-- 일기 삭제 -->
    <delete id="deleteDiary">
        DELETE FROM diary
        WHERE userNumber = #{userNumber} AND date = #{date}
    </delete>

usernuber 와 date를 받아서 diary테이블에서 DELETE 메서드를 수행하는 SQL 문이다.

결과

삭제 성공 메시지 반환 성공.

profile
내가 있는 그 조직에서 가장 성실하기만 하자

0개의 댓글