TIL173 Plmography 프로젝트 작업 로그 #41 - JPQL 에서 exists 문법 사용하기 (23.01.31 TIL) 오늘은 팔로우, 팔로우 취소 기능을 구현하면서 발생한 이슈에 대해 기록해보자. 일단 내가 원한 것은 팔로우 혹은 팔로우 취소를 누르면 만들어놓은 메서드를 통해 DB 에서 id 값을 조회해서 status 가 true 혹은 false 로 변경되는 플래그를 만드는 것이었다. 그래서 JPA 에서 지원하는 existsBy 메서드를 아래와 같이 만들고 어플리케이션을 실행시켜 보았는데 플래그에는 전혀 변경되는 사항이 없었다. boolean existsByUserIdAndFollowingId(UserId userId, FollowingId followingId); 그래서 조금 더 쿼리문을 정확히 해주기 위해 JPQL 을 사용했는데, 아래와 같은 오류가 떴다. 확인해보니 JPQL 에서는 select exists 문법은 .. 2023. 1. 31. Plmography 프로젝트 작업 로그 #40 - 탐색 페이지 필터링 구현 (23.01.30 TIL) 두려워하던 탐색 페이지 필터링 및 정렬 구현이 끝났다. (+검색 기능도 추가) 2기 분들과 우리 3기 동기들이 Specification 을 사용한 것을 보고 구현해봤는데 주말부터 오늘까지 매달려서 테스트 코드 작성까지 완료했다. 구현 중 살짝 어려움을 겪었던 카테고리 파트. 정확히 이해를 못하다가 sql 문법과 같은 like, and, between 이라는 것을 깨달았다. Specification spec = (root, query, criteriaBuilder) -> null; if (platform != null) { spec = spec.and(ContentSpecification.likePlatform(platform)); } if (type != null) { spec = spec.and(Con.. 2023. 1. 30. Plmography 프로젝트 작업 로그 #39 - 비즈니스 로직 테스트 코드는 확실하게! (23.01.20 TIL) 이번 주 월요일에 있었던 스프린트 점검에서 홀맨님께서 비즈니스 로직이 담긴 스토어나 모델의 테스트 코드는 먼저 짜고 넘어가라는 말씀을 주셨었다. UI 쪽이 있는 컴포넌트나 페이지 테스트는 화면이 어떻게 출력되는지만 봐도 되지만 비즈니스 로직은 꼭 먼저 작성하라고 하셨기 때문에 몇몇개의 스토어들의 테스트가 없었던 당시 조금 찔렸었던 기억이 있다. 구현에 급급해서 초반에만 테스트 코드를 작성하다가 나중에는 살짝 넘어갔던 부분들이 있었는데 상세 페이지의 구현이 끝난 만큼 그동안 미뤄왔던 테스트 코드의 빚을 갚기 위해 오늘은 프론트 테스트 코드를 다듬기로 했다. 전체 테스트를 돌리자마자 중간에 코드 구조를 몇 번 바꾼 만큼 테스트 몇개가 실패한 게 보였는데 대부분 구현에 조금 어려움을 겪었던 것들이라 다시 한번.. 2023. 1. 20. Plmography 프로젝트 작업 로그 #38 - 상세 페이지 구현 완료 (23.01.19 TIL) 오늘은 드!!!!!!디어 이번 주 목표였던 상세 페이지 구현을 완료했다. 컨텐츠 정보와 함께 리뷰 작성, 수정 및 삭제를 할 수 있고 다른 사람이 쓴 리뷰에 좋아요를 누르거나 댓글을 달 수 있다. 해당 컨텐츠에 관한 포스팅도 볼 수 있다. 처음에 헤더를 만들 때 스타일링에 너무 신경을 써서 진도를 못나갔기 때문에 이제 그런 부분에 대한 집착은 버렸다. 그래서 스타일링도 거의 하지 않아 조금은 조잡해보이긴 하지만~ 그건 최종 마지막에 신경쓰기로 하고! 이제 미흡한 테스트들을 다듬고 대망의 탐색 페이지로 들어가야겠다. 이게 뭐라고 이렇게 오래 걸렸나 싶기도 하지만 내 숙련도 문제였기 때문에 어쩔 수 없다고 생각한다(ㅎㅎ). 트레이너분 말씀처럼 시간이 해결해줄 문제에 매달리지 말고 내 속도에 맞춰서 계속 달려.. 2023. 1. 19. Plmography 프로젝트 작업 로그 #37 - 컴포넌트 분리 (23.01.18 TIL) 오늘의 작업은 리뷰 포스팅에 댓글 등록, 삭제 기능까지 프론트로 연결 후 한 컴포넌트에 작성했던 코드들을 분리하는 작업을 했다. 리액트의 꽃은 컴포넌트 분리라고 하던데, 한 컴포넌트에 300줄 가량 넘게 있던 코드들을 분리해서 나눠 작업하니 한 눈에 알아보기도 쉽고 코드가 더 깔끔해진 느낌이 들었다. 이제 이번 주 목표였던 상세 페이지 구현 끝내기에 한 발 더 다가섰다. 여기서 사진상 주석처리 되어있는 컴포넌트 내용만 구현하면 되고, 별로 중요한 부분이 아니라 하드코딩으로 구현해버리고 다음 MVP 작업으로 넘어갈 계획이다. 마무리 시간이 점점 다가오니 정신이 차려지는 기분..!!! 2023. 1. 18. Plmography 프로젝트 작업 로그 #36 - 콜백 함수에 매개변수 전달하기(23.01.17 TIL) 댓글 등록 버튼을 만들 때 onSubmit 함수 매개변수로 댓글이 달리는 post 의 아이디를 넘겨주고 싶었다. // onSubmit 함수 const handleSubmit = async (e, review) => { e.preventDefault(); commentFormStore.validate(); if (commentFormStore.isValidateSuccessful) { await commentStore.create(userId, review.id, commentFormStore.body); } }; // 버튼 태그 {commentButtonOpened && ( handleSubmit(e, review)} /> )} 이런 식으로 넘겨주었더니 preventDefault 가 작동하지 않고 계속 .. 2023. 1. 17. 이전 1 2 3 4 5 6 ··· 29 다음