본문 바로가기

내일 배움 캠프

2024-01-02

오늘은 팀프로젝트 8일 차이며 주말 및 오늘 진행한 내용은 다음과 같다.

1. 테스트를 통한 버그 수정 및 마감 기한 기능 추가 

 

1. 주말동안 Card CRUD를 테스트하면서 카드 이동도 같이 테스트를 진행했다. 테스트를 진행하면서 카드 이동에서 문제인 부분을 발견했다. 문제가 되는 부분은 다른 칼럼으로 카드를 이동할 때나 동일 칼럼 안에서 카드의 번호가 윗번에서 아래번으로 옮긴다면 문제가 안되지만 

 아래번에서 위의 번호로 옮길때는 순서가 이동되지 않는 즉 가중치가 해당 번호에 맞는 가중치로 변경되지 않았다.

에러의 상황: 2번 카드를 4번으로 옮기려고 할 때 결과 
a(1), b(2), c(3), d(4), e(5)  -> a(1), b(1.5), c(3), d(4), e(5) 

 

따라서 위의 문제되는 상황을 해결하기 위해 아래의 코드를 추가했다. 아래의 코드 체킹을 통해 옮기려는 카드가 옮기려는 위치보다 아래에 있는지 체크하는 메서드이다. 

private boolean currentCardPositionCompareMovePosition(Long currentCardId, Long moveCardPosition, List<Card> cardList){
    boolean moveCardUnderCheck = false;
    for (int i = 0; i < cardList.size(); i++) {
       if (Objects.equals(currentCardId, cardList.get(i).getId())) {
          if ( i < moveCardPosition) {
             moveCardUnderCheck = true;
             break;
          }
       }
    }
    return moveCardUnderCheck;
}

아래의 기능을 통해 카드를 움직여도 문제없이 가중치 값이 잘 적용됐다.

 

그리고 오늘 추가적으로 deadline기능을 추가했는데 deadline으로 기능을 추가하기에는 얽혀있는 부분이 많아서 그냥 데이터만 넘겨서 저장하도록 했다. Request Dto를 수정하면서 LocalDatetime을 입력하는 방식에 대해 알아봤다.  
Dto에서 LocalDateTime을 입력받으려면 포맷을 설정해 줘야 하는데 2가지 방법이 있다 @DateTimeFormat 방식과 @JsonFormat방식이 있다.
둘 다 날짜 및 시간에 대한 데이터를 포맷하는 기능은 같지만 각각 다른 용도와 적용되는 부분이 다르다. 

@DateTimeFormat방식은 Controller에서 넘어오는 문자열을 날짜로 변환하는 용도로 사용한다.

따라서 요청이 들어오면서 Jaskson라이브러리가 JSON문자열을 Java객체로 변환하기 즉 역직렬화를 진행하기 때문에 RequestBody, PathVaiable, RequestBody에 서사용이 가능하지만 Response에서는 객체 데이터를 JSON으로 변환하는 직렬화처리를 진행해서 응답을 보내주기 때문에 Response에서는 사용이 불가능하다.

 

@JsonFormat 방식은 JSON 데이터를 객체로 변환시켜 주는 역할을 하기 때문에 Requset가 JSON방식이라면 즉 @RestController가 설정되어 있다면 자유롭게 사용이 가능하다. Response에서도 마찬가지로 JSON방식으로 Response를 전달하기 때문에 사용이 가능하다. 


따라서 Request구성할때 둘 다 사용가능하지만 Controller에서 @RestController가 설정 돼있기 때문에 확장성을 고려해서 @JsonFormat을 사용하여 추가했다.

@Getter
public class CardUpdateRequestDto {
    private String title;

    private String description;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private LocalDateTime deadline;

    private String color;
}

'내일 배움 캠프' 카테고리의 다른 글

2024-01-04  (0) 2024.01.05
2024-01-03  (1) 2024.01.04
2023-12-29  (0) 2023.12.29
2023-12-28  (2) 2023.12.29
2023-12-27  (0) 2023.12.27