Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

상호 평가 반영 스케줄링 #602

Merged
merged 12 commits into from
Oct 13, 2023
Merged

상호 평가 반영 스케줄링 #602

merged 12 commits into from
Oct 13, 2023

Conversation

kwonyj1022
Copy link
Collaborator

📄 작업 내용 요약

상호 평가 반영 스케줄링

🙋🏻 리뷰 시 주의 깊게 확인해야 하는 코드

  • 스케줄링을 구현하는 것은 스프링에서 거의 다 해줘서 실질적으로는 어노테이션만 추가하면 됩니다. 어노테이션 속성 값에 사용하는 스케줄 시간 설정 문법(?)이 있는데 이건 그냥 어노테이션 검색하면 구글에 잘 나와있어요. 스케줄링 적용한 부분에 대해서는 스케줄링 설정 추가 커밋에서 확인하시면 됩니다.
  • 스케줄링을 하면서 한 번에 디비에 많은 데이터를 insert 하게 되고, 지금은 jpa 더티체킹으로 자동으로 되도록 했습니다. 즉, insert 성능은 고려하지 않았습니다. 대규모 insert 최적화는 이후 별도의 이슈로 진행하겠습니다.
  • 처음에는 이전에 말씀드린 대로 신뢰도가 없는 경우에 대한 기본값을 0.0으로 두고 반영된 리뷰 개수를 이용해서 신뢰도가 0.0인 사용자인지 평가를 한 번도 받지 않은 사용자인지 구별해주려고 했습니다. 그런데, 실질적으로 신뢰도 조회에 사용되는 엔티티인 user 엔티티에는 반영된 리뷰의 개수를 필드로 갖고 있지 않기 때문에 신뢰도를 파악하려면 항상 UserReliability를 참조하거나, user 엔티티에 필드를 추가해야 했습니다.
    User 조회 시마다 UserReliability를 참조하는 것은 비효율적일 것 같고, user 엔티티에 반영된 리뷰 개수를 추가하는 것도 구성 상 적합하지 않은 것 같아서 기본값을 음수로 두었습니다.
    이전에는 신뢰도가 음수인 경우에 신뢰도 계산에 오류가 생길지도 모른다는 걱정이 있었는데 어차피 신뢰도가 음수인 경우는 반영된 리뷰 개수가 0개인 상황이라 신뢰도 계산 내에서 둘을 곱하는 로직을 수행할 때 어차피 0이 되기 때문에 문제가 생기지 않을 거라 생각했고, 분기문도 사용하지 않았습니다.
    음수 중에 -1보다는 Double.minValue()가 좀 더 이상한 값(?) 의미 없는 값(?)이라는 의미를 잘 담는 것 같아서 Double.minValue()로 하였습니다. 신뢰도가 음수인 경우에 대한 응답 데이터 가공은 별도의 이슈로 진행하겠습니다.

📎 Issue 번호

@kwonyj1022 kwonyj1022 added backend 백엔드와 관련된 이슈나 PR에 사용 feature 기능 추가 시 labels Oct 10, 2023
@kwonyj1022 kwonyj1022 added this to the 최종 데모데이 milestone Oct 10, 2023
@kwonyj1022 kwonyj1022 requested review from apptie, JJ503 and swonny October 10, 2023 18:52
@kwonyj1022 kwonyj1022 self-assigned this Oct 10, 2023
Copy link
Collaborator

@apptie apptie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다

롬복 관련해서 소소한 필수질문이 있어서 RC로 하겠습니다

import org.springframework.scheduling.annotation.EnableScheduling;

@Configuration
@EnableScheduling
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

칭찬

칭찬해요!!!!!!!!!!!!!!!!!!!!!!!!!!
테스트 시 설정 파일을 exclude하는 것만으로도 깔끔하게 분리할 수 있겠네요

Comment on lines 16 to 17
@EqualsAndHashCode
@ToString
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

질문 & 필수

해당 도메인은 Review의 일급 컬렉션으로 보입니다
다른 도메인 엔티티와는 다르게 영속화되지 않을 것이라고 보이는데
이 경우 @EqualsAndHashCode@ToString이 필요한지 모르겠네요

@ToString은 디버깅 시 도움이 될 수 있겠지만, @EqualsAndHashCode의 경우 저는 정말 필요없을 것 같습니다
이러한 일급 컬렉션의 동일성 비교를 할 일이 있을까 싶기도 하고, 동일성 비교를 하는 로직이 유효한 로직인지도 모르겠네요
지금은 동일성 비교를 하는 로직은 불필요할 것 같습니다

그래서 해당 질문과 이 애노테이션을 추가한 특별한 이유가 없다면 @EqualsAndHashCode는 삭제했으면 좋겠습니다
@ToString은 괜찮을 것 같기도 하고 이건 잘 모르겠군요

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

칭찬

하지만 일급 컬렉션을 통해 관련 로직을 도메인 로직으로 분리하신 건 매우 개쩌는 것 같습니다
칭찬해요!!!!!!!!!!!!!!!!!!!!!!!!!@#!@#!@3

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그냥 별 생각 없이 습관적으로 추가했던 것 같습니다. @EqualsAndHashCode는 삭제하도록 하겠습니다. @ToString은 원래 목적이 디버깅에 쓰려고 한 것이기 때문에 남겨두도록 하겠습니다.

private final JpaUserReliabilityRepository userReliabilityRepository;

@Transactional
@Scheduled(cron = "0 0 4 ? * MON") // 매주 월요일 새벽 4시에 동작
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

질문

프로덕션 영역에서 주석을 사용해도 괜찮았었나요?
컨벤션 기억이 안나요

Copy link
Collaborator Author

@kwonyj1022 kwonyj1022 Oct 13, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

크론식이 익숙하지 않기 때문에 리뷰 시 이해를 위해 추가하였는데 어떻게 할지는 데일리에서 논의하면 좋을 것 같습니다.

}

final ReliabilityUpdateHistory newHistory = new ReliabilityUpdateHistory(newReviews.findLastReviewId());
updateHistoryRepository.save(newHistory);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

선택

개행..?

@NoArgsConstructor
@Getter
@EqualsAndHashCode(of = "id", callSuper = false)
@ToString(of = {"id", })
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

선택

이거 lastAppliedReviewId 까지 포함하려다가 안하신걸까요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

앗 들켜버렸다

Copy link
Collaborator

@swonny swonny left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

스케줄링 적용 고생 많으셨어요 엔초!!
바쁜 와중에 학습해서 구현해주셔서 감사합니다 !!
저는 질문과 간단한 컨벤션 위주라서 approve하겠습니다.


private Double value;
private double value;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

칭찬

원시타입으로 바꿔주셔서 마음이 굉장히 편안해졌어요 감사합니다@@

@@ -19,4 +19,6 @@ public interface JpaReviewRepository extends JpaRepository<Review, Long> {
List<Review> findAllByTargetId(final Long targetId);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

선택? 필수?

JOIN FETCH 부분은 개행을 일부러 안해주신 건가요?.?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아무 생각 없었어요 ㅠ 개행 추가했습니다.

softAssertions.assertThat(actual4.get().getAppliedReviewCount()).isEqualTo(구매자4_최종_신뢰도_반영_개수);
final Optional<UserReliability> actual5 = userReliabilityRepository.findByUserId(구매자5_기존_평가_없고_새로운_평가_3개.getId());
softAssertions.assertThat(actual5.get().getAppliedReviewCount()).isEqualTo(구매자5_최종_신뢰도_반영_개수);

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

필수

개행을 없애주시거나 구분하고자 하는 위치에 모두 추가해주시면 감사하겠습니다!

Copy link
Collaborator Author

@kwonyj1022 kwonyj1022 Oct 13, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

개행은 제거했고 제이미 가 선언과 assertion을 분리하는 건 어떠냐는 의견을 주어서 함께 적용했습니다.

private final JpaUserReliabilityRepository userReliabilityRepository;

@Transactional
@Scheduled(cron = "0 0 4 ? * MON") // 매주 월요일 새벽 4시에 동작
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

선택

프로덕션에서 사용하는건 최대한 지양하자고 이야기했던걸로 기억합니다.
그런데 이것처럼 String 값만으로 한 눈에 의미를 파악하기 어려운 경우에는 적는 것도 괜찮을 것이라고 생각합니다.
다른 분들의 의견도 궁금해요!

Copy link
Member

@JJ503 JJ503 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

엔초 고생 많으셨습니다!
저는 별다른 수정 사항은 보이지 않아 approve 합니다.
테스트 코드에서 간단한 제안 사항이 있는데, 이는 엔초의 선택에 따르겠습니다.
그리고 지토 코드에도 flyway가 있는데 두 분 버전 조심하세요...!!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

주의

지토 pr에도 flyway가 있었는데 두 분 버전 조심하세요..!

Comment on lines 54 to 64
SoftAssertions.assertSoftly(softAssertions -> {
final Optional<UserReliability> actual1 = userReliabilityRepository.findByUserId(구매자1_기존_평가_2개_새로운_평가_1개.getId());
softAssertions.assertThat(actual1.get().getAppliedReviewCount()).isEqualTo(구매자1_최종_신뢰도_반영_개수);
final Optional<UserReliability> actual2 = userReliabilityRepository.findByUserId(구매자2_기존_평가_3개_새로운_평가_2개.getId());
softAssertions.assertThat(actual2.get().getAppliedReviewCount()).isEqualTo(구매자2_최종_신뢰도_반영_개수);
final Optional<UserReliability> actual3 = userReliabilityRepository.findByUserId(구매자3_기존_평가_5개_새로운_평가_1개.getId());
softAssertions.assertThat(actual3.get().getAppliedReviewCount()).isEqualTo(구매자3_최종_신뢰도_반영_개수);
final Optional<UserReliability> actual4 = userReliabilityRepository.findByUserId(구매자4_기존_평가_없고_새로운_평가_1개.getId());
softAssertions.assertThat(actual4.get().getAppliedReviewCount()).isEqualTo(구매자4_최종_신뢰도_반영_개수);
final Optional<UserReliability> actual5 = userReliabilityRepository.findByUserId(구매자5_기존_평가_없고_새로운_평가_3개.getId());
softAssertions.assertThat(actual5.get().getAppliedReviewCount()).isEqualTo(구매자5_최종_신뢰도_반영_개수);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

선택

테스트가 잘 안 보이는데 선언 먼저 다 하고 assertThat으로 검증해주면 어떨까요?
조심스럽게 제안드려봅니다.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

반영하겠습니다.

Copy link
Collaborator

@apptie apptie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제가 남긴 리뷰에 대한 내용이 적용되어 Approve 하겠습니다

@kwonyj1022 kwonyj1022 merged commit 0d78095 into develop-be Oct 13, 2023
1 check passed
@kwonyj1022 kwonyj1022 deleted the feature/585 branch October 13, 2023 08:14
JJ503 added a commit that referenced this pull request Oct 18, 2023
* refactor: #605 경매 목록 조회 시 마감된 경매의 정렬 순서를 후순위로 변경 (#608)

* refactor: 경매 목록 조회 시 마감된 경매의 정렬 순서를 후순위로 변경

* test: 정렬 조건 변경으로 인한 테스트 케이스 변경

* refactor: 복잡하지 않은 쿼리를 querydsl로 표현하지 않고 JPQL로 표현

* refactor: left outer join이 필요하지 않은 경우를 inner join으로 변경

* refactor: 모든 관계를 fetch join하는 Auction 조회 메서드 네이밍 변경

* feat: Auction만을 조회하는 메서드 추가

* refactor: Auction의 정보만이 필요한 비즈니스 로직에서 fetch join을 하지 않도록 변경

* chore: 배포 스크립트 의미 없는 break 키워드 삭제

* refactor: #613 경매 등록 시 경매 마감 시간 제한 변경 (#620)

* refactor: 마감 시간을 미래만 적용할 수 있도록 제약조건 변경

* feat: 마감 시간 Custom Validator 추가

* refactor: 경매 등록 요청 시 마감 시간 검증을 Custom Validator으로 하도록 변경

* refactor: #609 소셜 로그인 시 최초 로그인(회원가입)한 회원인지 여부 반환 (#612)

* refactor: 소셜 로그인 시 사용자가 최초 로그인을 하는지 여부를 의미하는 필드 추가

* docs: 문서 최신화

* refactor: 신규 회원가입을 했는지에 대한 네이밍을 명확하게 변경

* test: 실패하는 테스트 케이스 수정

* style: 개행 및 누락된 final 키워드 추가

* feat: #585 상호 평가 반영 스케줄링 (#602)

* feat: 신뢰도 점수 타입을 Double -> double로 변경

* feat: 평가 저장 시 신뢰도를 갱신하지 않고 저장만 하도록 변경

* feat: 신뢰도 업데이트에 필요한 비즈니스 로직 추가

* feat: 신뢰도 업데이트 서비스 구현에 필요한 비즈니스 로직 보완 및 레포지토리 추가

* feat: 신뢰도 업데이트 서비스 추가

* feat: 스케줄링 설정 추가

* feat: flyway 스크립트 추가

* style: 개행 수정

* feat: 신뢰도 업데이트 이력을 관리하는 엔티티의 toString 대상 항목 추가

* refactor: 평가 관련 일급컬렉션에서 EqualsAndHashCode 재정의 제거

* test: 테스트코드에서 선언과 assertion 분리

* comment: 주석 제거

* refactor: #625 회원 탈퇴 시 소셜 로그인 방식을 DB에서 조회하도록 변경 (#626)

* chore: flyway 버전 17 추가

* feat: User 도메인에 사용한 소셜 로그인 방식 필드 추가

* refactor: 회원 탈퇴 시 소셜 로그인 방식을 DB에서 조회하도록 변경

* refactor: Oauth2와 관련된 필드를 별도의 클래스로 분리

* chore: flyway 스크립트 버전 변경

* test: 의미 없는 테스트 mocking 삭제

* refactor: access token 재발급 시 refresh token도 재발급되도록 변경

* feat: #587 Q&A 알림 기능 구현 (#614)

* feat: 답변 서비스에서 알림 이벤트 발행

* feat: 질문 서비스에서 알림 이벤트 발행

* feat: 질문, 답변 이벤트 리스너 추가

* chore: 수정 필요한 부분 주석 추가

* refactor: 이미지 절대 경로 컨트롤러에서 전송하도록 수정

* refactor: 이벤트 발행 시 별도의 DTO가 아닌 도메인 전달하도록 수정

* fix: 잘못 복제한 커밋 내역 복구

* refactor: 레포지토리 저장 엔티티를 이벤트 dto에 전달하도록 수정

* refactor: #649 Auction 관련 인프라 리펙토링 (#651)

* refactor: Querydsl 기반의 Auction 인터페이스 제거 및 구현체에서 일반 클래스로 변환

* refactor: Querydsl 기반의 Auction 조회 인터페이스를 domain 패키지로 이동

* refactor: 경매 목록 조회 메서드 파라미터 순서 변경

* feat: 도메인 영역의 Repository 추가

* feat: 도메인 영역의 Repository 구현체 추가

* test: 누락된 테스트 케이스 추가

* feat: 경매 id가 존재하는지 여부를 반환하는 기능 추가

* refactor: Service에서 도메인 영역의 Repository를 사용하도록 변경

* refactor: Service에서 도메인 영역의 Repository를 사용하도록 변경

* rename: 경매 목록 조회 관련 테스트 패키지 분리

* remove: 사용하지 않는 경매 더미 데이터 초기화 로직 삭제

* test: fixture에서 구체적인 DB 구현 기술에 의존적이지 않도록 변경

* refactor: #648 Category 관련 인프라 리펙토링 (#650)

* feat: 도메인 영역의 Repository 추가

* feat: 도메인 영역의 Repository 구현체 추가

* refactor: Service에서 도메인 영역의 Repository를 사용하도록 변경

* refactor: Service에서 도메인 영역의 Repository를 사용하도록 변경

* refactor: #645 Authentication 관련 인프라 리펙토링 (#647)

* test: 누락된 테스트 케이스 추가

* feat: 도메인 영역의 Repository 추가

* feat: 도메인 영역의 Repository 구현체 추가

* refactor: Service에서 도메인 영역의 Repository를 사용하도록 변경

* test: when & then 주석 추가

* test: BlackListToken의 도메인 인터페이스 Fixture에서 구체적인 인프라 구현 방식을 알지 못하도록 변경

* test: fixture 메서드 네이밍 변경

* refactor: #655 User 관련 인프라 리팩토링 (#661)

* feat: 도메인 영역의 사용자 Repository 추가

* feat: 도메인 영역의 사용자 Repository 구현체 추가

* test: 누락된 테스트 케이스 추가

* refactor: Service에서 도메인 영역의 사용자 Repository를 사용하도록 변경

* refactor: id로 사용자 조회 시 삭제된 값은 조회하지 않도록 수정

* feat: 도메인 영역의 사용자 신뢰도 Repository 추가

* feat: 도메인 영역의 사용자 신뢰도 Repository 구현체 추가

* test: 누락된 테스트 케이스 추가

* refactor: Service에서 도메인 영역의 사용자 신뢰도 Repository를 사용하도록 변경

* refactor: 사용자 신뢰도 조회 시 사용자도 함께 조회되도록 수정

* fix: 사용자 레포지토리 구현체에서 잘못된 메서드를 호출해서 테스트를 실패하는 현상 해결

* test: 테스트 실패 해결

* refactor: 사용자 신뢰도 엔티티에서 cascade 옵션 수정

* feat: 도메인 영역의 신뢰도 업데이트 기록 Repository 추가

* feat: 도메인 영역의 신뢰도 업데이트 기록 Repository 구현체 추가

* test: 누락된 테스트 케이스 추가

* refactor: Service에서 도메인 영역의 신뢰도 업데이트 기록 Repository를 사용하도록 변경

* refactor: 픽스처에서 Jpa 사용자 Repository 의존 제거

* refactor: 픽스처에서 Jpa 사용자 신뢰도 Repository 의존 제거

* refactor: 픽스처에서 Jpa 신뢰도 업데이트 기록 Repository 의존 제거

* style: 개행 추가

* refactor: 누락된 final 추가

* test: jpa 저장 테스트 시 불필요한 엔티티 매니저 호출 제거

* refactor: 누락된 final 추가

* refactor: RepositoryImpl 테스트에서 Jpa 의존 제거

* refactor: #656 ChatRoom 관련 인프라 리팩토링 (#663)

* feat: 도메인 영역의 채팅방 Repository 추가

* refactor: 불필요하게 Querydsl을 사용한 코드를 JPQL을 사용하도록 변경

* feat: 도메인 영역의 채팅방 Repository 구현체 추가

* refactor: Service에서 도메인 영역의 채팅방 Repository를 사용하도록 변경

* refactor: 픽스처에서 Jpa 채팅방 Repository 의존 제거

* feat: 도메인 영역의 채팅방 정보(채팅방, 이미지) dto를 반환하는 Repository 추가

* feat: 도메인 영역의 채팅방 정보(채팅방, 이미지) dto를 반환하는 Repository 구현체 추가

* refactor: Service에서 도메인 영역의 채팅방 정보(채팅방, 이미지) dto를 반환하는 Repository를 사용하도록 변경

* feat: 도메인 영역의 채팅방 정보(채팅방, 메시지, 이미지) dto를 반환하는 Repository 추가

* feat: 도메인 영역의 채팅방 정보(채팅방, 메시지, 이미지) dto를 반환하는 Repository 구현체 추가

* feat: Service에서 도메인 영역의 채팅방 정보(채팅방, 메시지, 이미지) dto를 반환하는 Repository를 사용하도록 변경

* style: 개행 추가

* refactor: 누락된 final 추가

* ci: 브랜치 최신화 과정에서 누락된 사항 추가 및 충돌 해결

* refactor: #658 Region 관련 인프라 리팩토링 (#665)

* feat: 도메인 영역의 지역 Repository 추가

* feat: 도메인 영역의 지역 Repository 구현체 추가

* test: 누락된 테스트 케이스 추가

* refactor: Service에서 도메인 영역의 지역 Repository를 사용하도록 변경

* test: 테스트에서 Jpa 의존 제거

* test: 테스트에서 Jpa 의존 제거

* style: 공백 추가

* refactor: 누락된 final 추가

* refactor: #657 Review 관련 인프라 리팩토링 (#664)

* feat: 도메인 영역의 평가 Repository 추가

* feat: 도메인 영역의 평가 Repository 구현체 추가

* refactor: Service에서 도메인 영역의 평가 Repository를 사용하도록 변경

* test: 픽스처에서 Jpa 의존 제거

* test: 테스트 실패 케이스 해결

* refactor: 누락된 final 추가

* ci: 브랜치 최신화 과정에서 누락된 사항 추가 및 충돌 해결

* refactor: #659 입찰 목록 조회 API 명세 변경에 따른 수정 (#667)

* refactor: 입찰 목록 조회 시 배열이 그대로 반환되도록 수정

* docs: 문서화 최신화

* refactor: 체이닝 개행 수정

* refactor: #660 Q&A 목록 조회 API 명세 변경에 따른 수정 (#669)

* refactor: 컨벤션에 따른 개행 수정

* feat: 질문과 답변 조회 시 질문 작성자인지 판단하는 값 추가

* refactor: 컨벤션에 따른 개행 수정

* refactor: 메서드 순서 변경

* fix: 충돌로 발생한 문제 해결

* refactor: import 와일드카드 제거

* fix: #680 신규 회원가입이 안되는 버그 수정 (#681)

* fix: 신규 회원 가입 시 null이 될 수 없는 필드를 초기화하지 않아 레코드 저장에 실패하던 문제 수정

* test: 테스트 케이스 검증 부분 추가 및 잘못된 테스트 케이스 수정

* test: Fixture 네이밍과 테스트 메서드 네이밍을 명확하게 변경

* refactor: 초기 신뢰도를 상수로 초기화

* refactor: 초기 신뢰도 상수 변경

* refactor: #670 Image 관련 인프라 리팩토링 (#678)

* refactor: 변수명을 명확하게 수정

* feat: 도메인 영역에 경매 이미지 repository 추가

* feat: 도메인 영역에 경매 이미지 repository의 구현체 추가

* refactor: service에서 도메인 영역의 repository를 사용하도록 변경

* feat: 도메인 영역에 프로필 이미지 repository 추가

* feat: 도메인 영역에 프로필 이미지 repository의 구현체 추가

* refactor: service에서 도메인 영역의 프로필 이미지 repository를 사용하도록 변경

* refactor: 변수명을 의도에 맞게 수정

* refactor: 레파지토리 어노테이션 누락 추가

* test: final 추가

* test: final 추가

* refactor: import 와일드카드 제거

* refactor: 쿼리문 명령어를 대문자로 수정

* refactor: 세팅 메서드명 수정

* refactor: 잘못된 클래스명 수정

* refactor: #671 Bid 관련 인프라 리팩토링 (#684)

* feat: 도메인 영역에 입찰 repository 추가

* refactor: 메서드 네이밍과 파라미터 변수명을 명확하게 수정

* feat: 도메인 영역에 입찰 repository의 구현체 추가

* refactor: service에서 도메인 영역의 입찰 repository를 사용하도록 변경

* refactor: 레파지토리 어노테이션 누락 추가

* test: 테스트 영역에서 도메인 영역의 입찰 repository를 사용하도록 변경

* refactor: 쿼리문 명령어를 대문자로 수정

* refactor: 레파지토리에서 null이 아닌 Optional을 통해 반환되도록 수정

* test: 도메인 영역에 입찰 repository의 구현체 테스트 추가

* test: 테스트 영역에서 도메인 영역의 repository를 사용하도록 변경

* refactor: #672 Report 관련 인프라 리팩토링 (#685)

* feat: 도메인 영역에 경매 신고 repository 추가

* refactor: EntityGraph를 jpql로 변경

* refactor: EntityGraph를 jpql로 변경

* feat: 도메인 영역에 경매 신고 repository 구현체 추가

* refactor: service에서 도메인 영역의 경매 신고 repository를 사용하도록 변경

* test: 테스트에서 도메인 영역의 경매 신고 repository를 사용하도록 변경

* feat: 도메인 영역에 채팅방 신고 repository 추가

* refactor: EntityGraph를 jpql로 변경

* feat: 도메인 영역에 쪽지방 신고 repository 구현체 추가

* test: 테스트 실패 해결

* test: 픽스처 클래스 네이밍 수정

* feat: 도메인 영역에 질문 신고 repository 추가

* refactor: EntityGraph를 jpql로 변경

* test: 테스트에서 도메인 영역의 질문 신고 repository를 사용하도록 변경

* refactor: service에서 도메인 영역의 쪽지방 신고 repository를 사용하도록 변경

* refactor: service에서 도메인 영역의 질문 신고 repository를 사용하도록 변경

* refactor: import 와일드카드 제거

* refactor: EntityGraph를 jpql로 변경

* feat: 도메인 영역에 답변 신고 repository 추가

* feat: 도메인 영역에 답변 신고 repository 구현체 추가

* refactor: service에서 도메인 영역의 답변 신고 repository를 사용하도록 변경

* test: 테스트에서 도메인 영역의 신고관련 repository를 사용하도록 변경

* refactor: import 와일드카드 제거

* test: 테스트 실패 문제 해결

* test: final 추가

* refactor: 쿼리문 명령어를 대문자로 수정

* refactor: 클래스명 수정

* refactor: 필드 순서 변경 및 불필효한 필드 제거

* test: 테스트 영역에서 도메인 영역의 repository를 사용하도록 변경

* refactor: #673 Q&A 관련 인프라 리팩토링 (#686)

* feat: 도메인 영역에 질문 repository 추가

* refactor: EntityGraph를 jpql로 변경

* refactor: 사용하지 않는 클래스 제거

* refactor: 잘못된 쿼리문 수정

* feat: 도메인 영역에 질문 repository 구현체 추가

* refactor: service에서 도메인 영역의 질문 repository를 사용하도록 변경

* test: 테스트에서 도메인 영역의 질문 repository를 사용하도록 변경

* refactor: 사용하지 않는 메서드 제거

* refactor: 쿼리문 명령는 대문자로 수정

* feat: 도메인 영역에 답변 repository 추가

* feat: 도메인 영역에 답변 repository 구현체 추가

* test: 테스트에서 도메인 영역의 답변 repository를 사용하도록 변경

* test: 테스트 실패 문제 해결

* fix: 잘못된 쿼리 조건 수정

* test: 불필요한 로직 제거

* refactor: final 누락 추가

* feat: #687 닉네임 수정 시 중복 예외 처리 추가 (#688)

* feat: 이름 수정시 이미 존재하는 이름에 대한 예외처리 추가

* feat: 예외 처리 추가

* refactor: #689 Message 인프라 리팩토링 (#694)

* feat: 도메인 영역에 메시지 레포지토리 추가

* refactor: 메서드명에서 레포지토리명과 중복되는 부분 제거

* fix: 불필요한 메서드 제거

* refactor: 도메인 메시지 레포지토의 구현체 추가

* refactor: 서비스에서 도메인 레포지토리 사용하도록 변경

* refactor: 클래스명 변경에 따른 테스트 네이밍 변경

* test: 도메인 메시지 레포지토리 구현체 테스트 추가

* refactor: 변수명 명확하게 변경

* refactor: 누락된 then절 추가

* test: 테스트에서 도메인 영역의 메시지 레포지토리 사용하도록 수정

* refactor: 테스트 픽스처에서 도메인 영역의 메시지 레포지토리를 사용하도록 변경

* refactor: 불필요한 주석 삭제

* refactor: 누락된 SuppressWarnings 어노테이션 추가

* refactor: 불필요한 import문 삭제 및 사용되지 않는 필드 지역변수로 변경

* style: 불필요한 개행 제거

* refactor: #692 경매 상세 조회 시 로그인한 사용자가 해당 경매의 최고 입찰자인지 여부를 반환하도록 응답 형식 변경 (#695)

* refactor: 경매 상세 조회 api 요청 시 로그인한 사용자가 해당 경매의 최종 입찰자인지 여부를 반환하도록 변경

* docs: 문서 최신화

* style: 개행 변경

* refactor: #690 Device 인프라 리팩토링  (#696)

* feat: 도메인 영역 기기토큰 레포지토리 추가

* feat: 도메인 기기토큰 레포지토리의 구현체 추가

* feat: 기기토큰 레포지토리 메서드 중 누락된 메서드 추가

* refactor: 서비스 레이어에서 도메인 영역 기기토큰 레포지토리 사용하도록 변경

* refactor: 누락된 final 추가

* test: 테스트에서 도메인 영역의 기기토큰 레포지토리 사용하도록 변경

* refactor: 레포지토리명에 맞춰 변수명 변경

* refactor: 테스트 픽스처에서 도메인 영역의 사용자 레포지토리 사용하도록 변경

* test: 기기토큰 레포지토리 구현체 테스트 추가

* chore: 질문에 대한 todo 주석 추가

* style: 개행 추가

* refactor: jpaQueryFactory 파라미터명 통일

* refactor: 필드 순서 변경

* refactor: given절 추가

* refactor: jpa 레포지토리 저장 테스트 메서드에서 엔티티 매니저 사용하는 코드 삭제

* refactor: 불필요한 필드 삭제

* refactor: 테스트에서 도메인 레포지토리 사용하도록 변경

* refactor: 불필요한 todo 삭제

* refactor: #697 질문과 답변 조회 시 삭제된 답변은 보이지 않도록 수정 (#698)

* test: 질문이 삭제된 경우 조회되지 않음을 나타내는 테스트 추가

* refactor: 답변이 삭제된 경우 null이 반환되도록 수정

* fix: 답변이 null인 경우에 대한 처리 추가 (#700)

* feat: #573 탈퇴 시 사용자 닉네임 랜덤 값으로 수정 (#606)

* feat: 탈퇴 시 닉네임을 랜덤 UUID로 변경하는 로직 추가

* feat: 탈퇴 시 프로필 이미지 삭제 기능 추가

* refactor: 가입 시 이미지를 기본 이미지가 아닌 null로 전달

* feat: 프로필 이미지 아이디가 null이라면 기본 이미지 url을 반환 기능 추가

* refactor: import 와일드카드 제거

* feat: 이미지가 null인 경우 기본 이미지를 반환하는 기능 추가

* test: 픽스처 네이밍을 명확하게 수정

* fix: 충돌 문제 해결

* fix: #701 답변 삭제 시 다시 답변을 달지 못하는 문제 해결 (#704)

* feat: 답변에 작성자 필드 추가

* feat: 필드 추가에 대한 flyway 스크립트 추가

* feat: 답변 삭제 시 질문과의 연관관계 끊기 기능 추가

* refactor: 문자열 상수 처리

* test: import 와일드카드 제거

* fix: 문제가 발생할 flyway 스크립트 수정

* fix: flyway 스크립트 문제 해결 (#706)

* feat: #705 경매 관련 탈퇴 로직 추가 (#710)

* refactor: 경매 상세 조회 시 탈퇴한 사용자라면 알 수 없음으로 출력되도록 수정

* refactor: ToString과 EqualsAndHashCode 설정 수정

* feat: 사용자가 등록한 경매, 마지막인 경매 중 현재 진행 중인 경매가 있는지 확인하는 기능 레파지토리에 추가

* feat: 사용자가 등록한 경매, 마지막인 경매 중 현재 진행 중인 경매가 있는지 확인하는 기능 서비스에 추가

* refactor: jpql에서 querydsl로 변경

* test: 컨트롤러 테스트 추가

* test: import 와일드카드 제거

* refactor: querydsl을 jpa 레파지토리로 이동

---------

Co-authored-by: apptie <[email protected]>
Co-authored-by: 권예진 <[email protected]>
Co-authored-by: 최승원 Merry <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend 백엔드와 관련된 이슈나 PR에 사용 feature 기능 추가 시
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

4 participants