💡 ToDoList 입력은 선택사항 (없어도 일정등록 가능해야 함)
💡 하나의 일정에 여러 ToDoList 입력 가능 → 테이블 따로 생성
ERD
투두리스트가 일정ID를 FK로 갖고 있고, 일정은 투두리스트에 대한 정보를 가지고 있지 않는다.
Spring
ToDoList에서 @JoinColumn으로 Event의 Id를 가지고 있다.
EventRequest는 MultipartFile을 포함하고 있으므로 form-data로 데이터를 전달해줘야 한다.
그렇다면 ToDoList는 어떻게 입력 받을까?
보통 일정 등록을 할 때 ToDoList에 대한 내용도 함께 입력을 하기 때문에 동일 API에서 데이터를 받아줘야 한다.
EventController에서 일정 등록 API를 보면 EventRequest 외에도 @RequestPart를 사용하여 List로 ToDoListRequest를 함께 받아주고 있다.
추가로 ToDoList를 입력하지 않고도 일정 등록이 가능해야 하기 때문에, required = false로 값이 존재하지 않을 경우는 null 값을 할당하도록 한다.
→ EventService로 전달
@RequestPart는 multipart/form-data로 파일과 JSON 데이터를 하나의 API 에서 한 번에 처리할 수 있게 한다.
더 자세하게 보고 싶으면 위 내용을 참고하면 좋을 듯
이제 EventService에서 EventRequest로 받은 일정 테이블 관련 데이터로 Event 객체를 조립해주고,
해당 Id를 ToDoList가 가져가야 하므로 우선 save해준다.
그 후, List<ToDoListRequest>가 null이 아닐 경우 for문으로 하나씩 가져와서 ToDoList 객체로 조립해하고 save한다.
→ 위에서 save한 event를 가져와 Id값을 갖고 있도록 한다.
테스트
postman으로 form-data에 toDoListRequests로 JSON 데이터를 입력
→ 이때, Content-Type을 꼭 application/json으로 해줘야 한다.
안하면 이런 에러가 뜬다. (Content-Type이 맞지 않음)
성공⭐
'Spring' 카테고리의 다른 글
[Spring] JPQL로 일정 조회하기 (0) | 2024.04.02 |
---|---|
[Spring] SSE + Scheduler로 실시간 알림 기능 구현(2) (0) | 2024.03.27 |
[Spring] SSE + Scheduler로 실시간 알림 기능 구현(1) (3) | 2024.03.26 |