TIL/Project

Trouble Shooting ( 일정 관리 앱)

myoma 2024. 11. 8. 10:23

1 ) 배경

  • 처음에 날짜를 직접 입력하게 만들었는데, 조건을 보니 날짜별로 내림차순 정렬이라는 조건 확인.

 

 

2) 발단

  • 조건을 맞추기 위해 날짜를 내림차순으로 정렬하였으나 가장 최근 기록이 올라오지 않는 것을 확인.
  • 이유가 시, 분, 초를 넣어주지 않아서 정렬이 똑바로 되지 않음

 

 

3) 전개 & 위기

  • 사용자가 데이터를 직접  YYYY-mm-DD  HH : mm : sss을 입력하기엔 너무 번거로울 뿐 더러 날짜를 자동으로 실시간 데이터를 넣어주는 게 프로그램에 더욱 적합하다고 생각이 들었으나 자동 입력이 안되는 문제 발생 
// 일정 생성
    @PostMapping
    public ResponseEntity<CalenderResponseDto> createCalender(@RequestBody CalenderRequestDto requestDto) {
        // 식별자가 1씩 증가 하도록 만듦
        Long calenderId = calenderList.isEmpty() ? 1 : Collections.max(calenderList.keySet()) + 1;


        //요청 받은 데이터로 Calender 객체 생성
        Calender calender = new Calender(calenderId, requestDto.getAuthor(), requestDto.getContents(),
                requestDto.getPassword(), requestDto.getcreateDate(), requestDto.getchangeDate());

        // Inmemory DB에 Memo 저장
        calenderList.put(calenderId, calender);

        return new ResponseEntity<>(new CalenderResponseDto(calender), HttpStatus.CREATED);
    }

 

 

 

 

4) 절정

  • 여러 방법을 찾다가 LocalDateTime 이라는 메서드를 발견하여 사용.

 

 

5) 결말

  • LocalDateTime은 date 타입이기에 날짜와 시간을 넣어주는 변수를 새로 만들어 그 곳에 날짜와 시간 데이터를 넣어주고 그것을 다시 String 타입으로 변환하여 사용. 그 결과 자동으로 날짜와 시간의 데이터를 불러옴.
// 일정 생성
    @PostMapping
    public ResponseEntity<CalenderResponseDto> createCalender(@RequestBody CalenderRequestDto requestDto) {
        // 식별자가 1씩 증가 하도록 만듦
        Long calenderId = calenderList.isEmpty() ? 1 : Collections.max(calenderList.keySet()) + 1;

        LocalDateTime dateTime = LocalDateTime.now();
        // 원하는 포맷 지정
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        // 포맷 적용
        String formattedDate = dateTime.format(formatter);


        //요청 받은 데이터로 Calender 객체 생성
        Calender calender = new Calender(calenderId, requestDto.getAuthor(), requestDto.getContents(),
                requestDto.getPassword(), formattedDate, formattedDate);

        // Inmemory DB에 Memo 저장
        calenderList.put(calenderId, calender);

        return new ResponseEntity<>(new CalenderResponseDto(calender), HttpStatus.CREATED);
    }

 

 

  • 트러블 슈팅으로 적기엔 애매한 내용들...
    • 맨 처음 프로젝트를 진행할 때 Interface와 impl 패키지들의 진행 순서와 상호 작용에 대해 이해하는데 많은 시간이 걸림.
    • 지금도 100% 완벽히 이해했다곤 자신없음.
    • 그로 인해 DB와 Calender을 연동하고 나서 일정 수정, 삭제 API 작성할 때 수정 날짜 데이터 넣기와 비밀번호 검증 부분에서 생각보다 오랜 시간이 걸렸다.
    • 처음 DB를 설정할 때 날짜 타입을 DATE로 하여 시간이 입력되지 않는 문제 발생하여 DATETIME으로 타입 변경.
    • 초기 설계 부분을 디테일하게 생각하지 못한 점 또한 아쉬웠다.

'TIL > Project' 카테고리의 다른 글

TIL 2024-11-19 (todo-log)  (1) 2024.11.19
Trouble Shooting ( Calender_JPA)  (0) 2024.11.15
TIL 2024-10-26 (숫자 야구 게임 FeedBack)  (1) 2024.10.26
Trouble Shooting (숫자 야구 게임)  (0) 2024.10.25
TIL 2024-10-22 (숫자 야구 게임 - 2)  (0) 2024.10.22