푸로젝트/TheFit

[디버깅] 운동 피드백 조회

눕는게최고야 2024. 3. 3. 17:14

피드백관련 테이블에서 문제가 발견됐다.

 

 

운동 피드백과 운동리스트의 연결관계를 제거 했었는데, 이렇게 되니 특정 운동 피드백을 조회함에 있어서 정보가 부족해졌다. 

 

트레이너는 같은날 다른 트레이니들에게 피드백을 작성이 가능함으로, 운동 리스트와의 연결이 필요해 보였다. 

 

 

그래서 연결을 해줬는데.. 현재 운동리스트의 수행날짜가 유니크가 아님으로, 같은 날 여러 리스트가 존재 할 수 있었다. 

 

이러면 운동 피드백이 다수의 FK를 갖게 된다. 같은 날 같은 멤버에게 운동을 할당 할때, 새로운 List 를 추가하는 것이 아니라 현재 리스트에 운동을 추가하도록 코드를 수정하였다. 

 

 

여기서 자꾸 if 조건이 제대로 작동하지 않았는데.. 그 원인이

 

findByMemberIdAndWorkOutDate의 리턴 타입이 Optional<List<WorkOutList>>로 값이 없어도 빈 리스트를 리턴하기 때문에  isEmpty()가 항상 false 값을 가졌다. 

 

이제 운동 피드백을 만들때, 운동 리스트를 id를 저장하도록 코드를 수정해 주었다.

 

운동 피드백 req에 해당 멤버의 이메일을 같이 보내서 멤버를 조회 후, 멤버의 id와 날짜를 통해서 운동 리스트를 찾아서 그리스트를 피드백에 저장해주었다. 

 

그리고 피드백 생성시 운동리스트 id와 피드백 업로드 날짜로 DB를 조회하여, 값이 존재하면 피드백을 수정학고, 존재하지 않으면 값을 새로 만들어 주었다. 

 

이런 식의 데이터가 잘 저장되는 것을 확인 할 수 있다. 

(수정시 새로운 데이터가 생기는 것이 아니고 그 내용이 수정된다.) 

 

 

이제 트레이니가 해당 해당 트레이너의 적절한 운동 피드백을 확인하도록 코드를 수정해줘야한다. 

현재 코드는 

 

날짜로만 피드백을 조회하기 때문에 적절하게 피드백을 조회하지 못하고, 모든 트레이니들이 같은 날에는 같은 피드백을 조회한다. 조회시 Authentication에 저장된 자신의 이메일을 사용하여 자신에게 할당된 피드백만 확인 하도록 코드를 수정했다.

 

피드백 조회 메서드는 "트레이니"와 "트레이너'" 가 공유함으로 이 둘에 대한 분기 처리가 필요하다.

 

백엔드 코드를 보면

 

운동리스트 id와 수행날짜(date)를 통해서 해당 날, 해당 멤버에 대한 피드백을 조회한다.