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

채팅방 생성 api 추가 #234

Merged
merged 25 commits into from
Aug 10, 2023
Merged

채팅방 생성 api 추가 #234

merged 25 commits into from
Aug 10, 2023

Conversation

kwonyj1022
Copy link
Collaborator

@kwonyj1022 kwonyj1022 commented Aug 8, 2023

📄 작업 내용 요약

채팅방 생성 api 추가

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

채팅방 생성 시

  • 요청 시 auction은 closed 상태여야 한다. deleted여도 안 된다.
  • 요청 유저가 판매자이거나 낙찰자(lastBid의 bidder)여야 한다.
  • 요청 시 이미 채팅방이 존재하는지 여부 체크한다.

📎 Issue 번호

@kwonyj1022 kwonyj1022 added backend 백엔드와 관련된 이슈나 PR에 사용 feature 기능 추가 시 labels Aug 8, 2023
@kwonyj1022 kwonyj1022 added this to the 4차 데모데이 milestone Aug 8, 2023
@kwonyj1022 kwonyj1022 self-assigned this Aug 8, 2023
@ddang-sona-bot

This comment has been minimized.

@ddang-sona-bot

This comment has been minimized.

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.

고생하셨습니다 엔초
컨벤션이랑 건의사항 몇 개 남겼는데 건의사항은 제가 코드를 잘못이해한거일수도 있으니 굳이 고칠 필요 없이 설명만 해주셔도 충분할 것 같습니다
하지만 일단 엔초의 의도가 궁금하기 때문에 request changes를 드리도록 하겠습니다

Comment on lines 164 to 171
private void checkWinnerExist(final LocalDateTime targetTime) {
if (!isClosed(targetTime)) {
throw new WinnerNotFoundException("경매가 종료된 후에 낙찰자가 결정됩니다.");
}
if (auctioneerCount == 0) {
throw new WinnerNotFoundException("입찰자가 존재하지 않아 낙찰자가 없습니다.");
}
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

해당 메서드가 다른 메서드와 조금 다른 것 같아서 어색하게 느껴집니다

예시로 BidService.checkInvalidAuction()에서는 Auction.isClose()나 Auction.isDelete()를 호출하고 그 결과를 통해서 Service에서 예외를 던져주고 있는데 지금 코드는 도메인 내부에서 예외를 던져줘서 좀 어색하게 느껴지네요

상태에 따른 제어를 도메인에서 할지 서비스에서 할지도 좀 고민되기는 하네요
억지기는 하지만 만약 정책이 auctioneerCount가 0일 때 낙찰자는 판매자 자기자신으로 변경되었을 때 이러한 정책은 도메인에서 관리하는게 자연스러울지 서비스에서 관리하는게 자연스러울지...어렵습니다 정말

혹시 도메인에서 예외를 던지는 이유에 대해서 알려주실 수 있으실까요?

Copy link
Collaborator Author

@kwonyj1022 kwonyj1022 Aug 9, 2023

Choose a reason for hiding this comment

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

이 부분에 대해서 저도 뭔가 이상하긴 했습니다.
우선 낙찰자를 판단하는 것은 auction 도메인에 있는 것이 적절하다고 생각했습니다.

그런데 findWinner()를 호출했는데 낙찰자가 없어서 null이 들어가게 되는 경우를 만들지 않고 싶었고,
그러려면 findWinner() 전에 낙찰자가 존재하는지 확인해야 했고,
그 findWinner()를 호출했을 때 무조건 낙찰자 존재 여부를 확인하는 것을 강제하고 싶었습니다.
findWinner() 내부에서 boolean으로 낙찰자 존재 여부를 확인하고 false일 경우 반환할 User가 없기 때문에 낙찰자 존재 여부를 확인할 때 예외를 터뜨리게 되었습니다.

이 부분을 어떻게 하면 잘 해결할 수 있을까요? 저도 궁금합니다..ㅠㅠ

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

일단 findWinner() 내부에서 낙찰자가 있는지 확인하고 findWinner()는 Optional를 반환하도록 수정하였습니다!

Copy link
Collaborator

Choose a reason for hiding this comment

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

@kwonyj1022 확실히 좀 애매하기는 하네요
도메인에서 낙찰자가 존재하는지 확인하는 boolean 반환 메서드와 실제 낙찰자를 반환하는 User 반환 메서드로 분리하거나
엔초가 말씀해신대로 Optional로 반환하는 방식 두 가지로 할 것 같은데

전 엔초가 지금 작성해주신 방식이 더 좋은 것 같습니다

}

private void checkUserCanParticipate(final User findUser, final Auction findAuction) {
if (!findAuction.isOwner(findUser) && !findAuction.isWinner(findUser, LocalDateTime.now())) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

이거는 하나의 조건문으로 합쳐서 표현하는게 조금 더 가독성이 좋을 것 같습니다
isAuctionSuccess? 요런 식이면 어떨까 건의드려봅니다

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

좋은 생각입니다. 메서드가 너무 잘게 분리되어 있어서 불편하지 않을까 하는 생각에 그냥 두었는데 가독성이 안좋아졌군요..

Comment on lines 75 to 78
final Optional<ChatRoom> nullableChatRoom = chatRoomRepository.findByAuctionId(findAuction.getId());
if (nullableChatRoom.isPresent()) {
throw new ChatAlreadyExistException("해당 경매에 대한 채팅방이 이미 존재합니다.");
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

이러한 경우는 find를 통해 존재 여부를 확인하는 것보다는 chatRoomRepository에 existsByAuctionId() 메서드를 추가하고 이를 통해 존재 여부를 boolean으로 반환받아서 처리해주는것이 더 자연스러울 것 같습니다

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

맞네요 적용하겠습니다!

final List<ChatRoom> chatRooms = chatRoomRepository.findAllByUserId(findUser.getId());

return chatRooms.stream()
.map(chatRoom -> toDto(findUser, chatRoom))
Copy link
Collaborator

Choose a reason for hiding this comment

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

해당 PR에는 없어서 여기에다가 남깁니다...

toDto() 메서드에서 보면 ReadParticipatingChatRoomDto.of()를 통해서 dto로 변환하고 있는데
해당 메서드의 작업을 Dto.of() 메서드로 옮겨도 될 것 같습니다
toDto()에서 findUser, chatRoom이 어떠한 작업을 통해 결과를 반환받고 이를 dto로 생성하는지 굳이 서비스에서 알 필요는 없을 것 같습니다

그래서 ReadParticipatingChatRoomDto.of(findUser, chatRoom) 혹은 시간 테스트를 조금 더 편하게 하기 위해 ReadParticipatingChatRoomDto.of(findUser, chatRoom, targetTime)으로 하고 of() 내부에 chatRoom.calculateChatPartnerOf() 이런 메서드를 호출하는건 어떨까 건의드려봅니다

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

좋습니다. 반영하겠습니다!

Comment on lines +59 to +64
private void checkAuctionStatus(final Auction findAuction) {
if (!findAuction.isClosed(LocalDateTime.now())) {
throw new InvalidAuctionToChatException("경매가 아직 종료되지 않았습니다.");
}
if (findAuction.isDeleted()) {
throw new InvalidAuctionToChatException("삭제된 경매입니다.");
Copy link
Collaborator

Choose a reason for hiding this comment

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

여기에서는 서비스에서 예외를 처리해주고 있었네요

Auction.checkWinnerExist()랑 이거랑 통일성을 지켜주는 방향은 어떨까 건의드려봅니다

Comment on lines 206 to 207
User seller = new User("판매자", "profileImage.png", 5.0);
User winner = new User("낙찰자", "profileImage.png", 5.0);
Copy link
Collaborator

Choose a reason for hiding this comment

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

final이 빠진 것 같습니다

그리고 5.0보다는 double형임을 표현할 수 있게 5.0d가 좋을 것 같아요

Copy link
Collaborator

Choose a reason for hiding this comment

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

아래 테스트에도 User 변수에는 final이 빠져있습니다!!

// then
SoftAssertions.assertSoftly(softAssertions -> {
softAssertions.assertThat(actual).isPresent();
softAssertions.assertThat(actual.get().getId()).isEqualTo(chatRoom.getId());
Copy link
Collaborator

Choose a reason for hiding this comment

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

equals()를 항상 재정의하므로 getId()로 id를 꺼내서 비교할 필요 없이 바로 객체끼리 비교하면 될 것 같습니다

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하고 지토의 판단을 믿기로 하겠습니다.
이번에도 고생 많으셨습니다 엔초! 👍👍

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.

좀전에 채팅방 생성 API에 대해 변경된 사항이 있어서 request change합니다!
나머지 부분들은 간단한 리뷰입니당
고생많으셨어요 엔초!

.toList();
checkAuctionStatus(findAuction);
checkUserCanParticipate(findUser, findAuction);
checkAlreadyExist(findAuction);
Copy link
Collaborator

Choose a reason for hiding this comment

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

auction에서 auction의 상태를 확인하는 경우가 chatRoom 말고도 더 생길 수도 있을 것 같아요
auction상태 체크 메서드를 auction 내부로 옮기면 어떤지 건의드려봅니다!

auction에서 checkStatus(final LocalDateTime targetTime)을 만들고,
validateAuction()과 같은 메서드 내부에서 상태를 계산하고 enum 상태를 반환하면 어떤가 생각이 들었어요
그리고 반환받은 값이 경매가 종료된 상태라면 예외를 던지도록 수정하면 어떨까요?

종료된 경매인지, 삭제된 경매인지에 대한 예외 메시지는 enum value로 갖게 해서 다르게 하면 어떨까 생각해봤는데,
이 부분은 엔초의 판단에 맡기도록 하겠습니다!

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

맞아요 아마 이 부분 경매 목록 조회 시에도 필요한 기능입니다. 경매 목록 조회 같은 경우에도 저번에 임시로 하는 바람에 dto에서 변환하고 있는 것으로 알고 있어요. 다른 분들과 이야기하고 결정하겠습니다!

}
}

private void checkAlreadyExist(final Auction findAuction) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

변경된 부분 리마인드 차원에서 코멘트 남깁니다!

findOrCreateChatRoomByAuction(final Auction findAuction)이런식의 메서드로 바꾸고, 없으면 채팅방 생성해서 아이디 반환해주면 될 것 같습니다~!

지토가 말씀해주신 의견도 좋은데 boolean과 chatRoomId 조회를 위해 두 번 조회하게 될 것 같아 의견 남겨요!

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

친절하네요 메..리... 👍

Comment on lines 206 to 207
User seller = new User("판매자", "profileImage.png", 5.0);
User winner = new User("낙찰자", "profileImage.png", 5.0);
Copy link
Collaborator

Choose a reason for hiding this comment

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

아래 테스트에도 User 변수에는 final이 빠져있습니다!!

}

@Test
void 경매가_종료되지_않았다면_최종_낙찰자를_구할_떄_예외가_발생한다() {
Copy link
Collaborator

Choose a reason for hiding this comment

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

소소한 한글 오타..

Suggested change
void 경매가_종료되지_않았다면_최종_낙찰자를_구할__예외가_발생한다() {
void 경매가_종료되지_않았다면_최종_낙찰자를_구할__예외가_발생한다() {

구할_떄 → 구할_때 로 변경해주시면 될 것 같습니다

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

꼼꼼하시군요👍

}

@Test
void 해당_경매에_대한_채팅이_이미_존재할_경우_예외가_발생한다() {
Copy link
Collaborator

Choose a reason for hiding this comment

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

이것도 리마인드 차원에서 코멘트 달아둡니당

예외 발생 대신 생성된 채팅방 아이디를 반환하도록 하면 될 것 같아요!

}

@Test
void 해당_경매에_대한_채팅이_이미_존재할_경우_400을_반환한다() throws Exception {
Copy link
Collaborator

Choose a reason for hiding this comment

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

이것도 리마인드입니다!

채팅방 참여 가능한 유저 중
직접 채팅방을 생성하지 않은 유저가 채팅방을 조회했을 때 이미 생성된 아이디가 잘 넘어오는지에 대한 테스트도 추가되면 좋을 것 같아요!

@ddang-sona-bot

This comment has been minimized.

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.

정말 고생하셨습니다..
고생하셨지만...Optional 관련해서 수정을 부탁드리고 싶은 부분이 있어서 다시..request changes를..
고생하신게 느껴져서 좀 죄책감이 느껴지네요..

Comment on lines 153 to 156
final Optional<User> nullableWinner = findWinner(targetTime);

return nullableWinner.filter(user::equals)
.isPresent();
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
final Optional<User> nullableWinner = findWinner(targetTime);
return nullableWinner.filter(user::equals)
.isPresent();
return this.findWinner(targetTime)
.filter(user::equals)
.isPresent();

이거는 합치는 것이 더 자연스러울 것 같습니다

Comment on lines 84 to 86
private boolean isSellerOrBuyer(final User findUser, final Auction findAuction) {
return findAuction.isOwner(findUser) || findAuction.isWinner(findUser, LocalDateTime.now());
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

이름을 경매 참여자인지? 정도로 바꿔도 좋을 것 같습니다
isAuctionParticipants() 뭐 이런식으로..?
아니면 isSellerOrWinner()로 변경해도 괜찮을 것 같기도 하고요..?

근데 이건 단순 건의사항이라 지금도 괜찮습니다 판단은 엔초에게 맡기도록 하겠습니다

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

isSellerOrWinner()로 하겠습니다.
처음에 participants라는 단어도 고려하였는데 결과적으로 participants라는 단어를 쓰지 않은 이유는 낙찰자 말고도 이전에 다른 입찰자들도 경매의 참여자이기 때문에 혼동의 여지가 있을 것 같아서 participants는 사용하지 않았습니다.

Copy link
Collaborator

Choose a reason for hiding this comment

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

@kwonyj1022 아 그렇군요 이해했습니다 의견 공유해주셔서 감사합니다

Comment on lines 19 to 24
final Optional<User> nullableWinner = auction.findWinner(LocalDateTime.now());
if (nullableWinner.isEmpty()) {
throw new WinnerNotFoundException("낙찰자가 존재하지 않습니다");
}

return new ChatRoom(auction, nullableWinner.get());
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
final Optional<User> nullableWinner = auction.findWinner(LocalDateTime.now());
if (nullableWinner.isEmpty()) {
throw new WinnerNotFoundException("낙찰자가 존재하지 않습니다");
}
return new ChatRoom(auction, nullableWinner.get());
final User winner = auction.findWinner(LocalDateTime.now())
.orElseThrow(() -> new WinnerNotFoundException("낙찰자가 존재하지 않습니다"));
return new ChatRoom(auction, winner);

Optional이 null 체크를 수월하게 하기 위한거라서 위처럼 코드를 작성하신 것은

final User nullableWinner = auction.findWinner(LocalDateTime.now()); // null 반환 가능

if (nullableWinner == null) {
    throw new WinnerNotFoundException("낙찰자가 존재하지 않습니다");
}

return new ChatRoom(auction, nullableWinner);

위 코드처럼 그냥 null을 반환하는 것보다 비효율적인 코드인 것 같습니다

}

@Test
void 채팅방_생성을_요청한_사용자가_경매의_판매자_또는_최종_낙찰자가_아니라면_400을_반환한다() throws Exception {
Copy link
Collaborator

Choose a reason for hiding this comment

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

Forbidden은 403이라서 수정이 필요할 것 같습니다

Comment on lines 168 to 171
if (auctioneerCount == 0) {
return false;
}
return isClosed(targetTime);
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
if (auctioneerCount == 0) {
return false;
}
return isClosed(targetTime);
return auctioneerCount != 0 && isClosed(targetTime);

합칠 수 있을 것 같습니다 복잡하지는 않은 조건식이라 굳이 분기처리를 할 필요는 없을 것 같아서..

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하고 지토를 믿도록 하겠습니다 ㅎㅎ
고생하셨습니다!

@Test
void 주어진_사용자가_낙찰자가_아니라면_거짓을_반환한다() {
// given

Copy link
Member

Choose a reason for hiding this comment

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

개행 제거해 주세요!

Copy link
Collaborator

Choose a reason for hiding this comment

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

@JJ503 어케하면 이런 코드 컨벤션? 스타일을 잘 찾으실 수 있는거죠...전 안보이는데..

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.

정말로 고생하셨습니다...

@ddang-sona-bot

This comment has been minimized.

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.

어제 이야기했던 POST 요청 시 채팅방 아이디 반환 로직 추가된 부분과 다른 수정사항 확인했습니다!
고생 많으셨어요 엔쵸..🍫
approve합니당

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.

엔초 죄송해요...
갑자기 궁금해진 점이 있어 request change 해두었습니다 ㅎㅎ

Comment on lines 65 to 66
return auctionRepository.findById(chatRoomDto.auctionId())
.orElseThrow(() -> new AuctionNotFoundException("해당 경매를 찾을 수 없습니다."));
Copy link
Member

Choose a reason for hiding this comment

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

해당 부분과 관련해 궁금한 점이 있습니다.
find~()에 대해 예외 메시지가 바뀔 수 있으니 모두 분리하기로 하지 않았나요?
기억이 아니지 않아 확인차 여쭤봅니다.

.map(chatRoom -> ReadParticipatingChatRoomDto.of(findUser, chatRoom, LocalDateTime.now()))
.toList();
}

public ReadParticipatingChatRoomDto readByChatRoomId(final Long chatRoomId, final Long userId) {
final User findUser = findUser(userId);
final ChatRoom chatRoom = chatRoomRepository.findById(chatRoomId)
Copy link
Member

Choose a reason for hiding this comment

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

해당 부분과 관련해 갑자기 궁금해진 부분이 있어 여쭤봅니다.
채팅룸을 조회한 후 바로 판매자와 구매자인지에 대해 확인하는 메서드가 존재합니다.
이 경우 판매자는 auction에 존재하기에 auction을 조회하는 쿼리를 날려야 됩니다.
그래서 차라리 fetch join을 통해 채팅룸을 조회할 때 auction도 함께 가져오도록 하면 어떨지 의견을 묻고 싶습니다.

# Conflicts:
#	backend/ddang/src/main/java/com/ddang/ddang/exception/GlobalExceptionHandler.java
#	backend/ddang/src/test/java/com/ddang/ddang/chat/application/ChatRoomServiceTest.java
@ddang-sona-bot

This comment has been minimized.

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.

궁금한 점이 있어 코멘트 남겨두었습니다.
해당 부분만 확인해 주시면 감사하겠습니다!

Comment on lines +22 to +28
public List<ChatRoom> findAllByUserId(final Long userId) {
return queryFactory.selectFrom(chatRoom)
.leftJoin(chatRoom.auction, auction).fetchJoin()
.where(isSellerOrWinner(userId))
.orderBy(chatRoom.id.desc())
.fetch();
}
Copy link
Member

Choose a reason for hiding this comment

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

목록을 조회할 때도 auction관련 검증이나 필요한 정보가 있는지 궁금합니다.
api만 봤을 때는 필요가 없어 보이는데 fetch join한 이유가 궁금합니다.
제가 놓친 코드가 있는 걸까요?

Copy link
Member

Choose a reason for hiding this comment

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

아! 동일한 dto를 사용하기 위함일까요??

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

chatRoom에는 seller가 없고 buyer만 존재하기 때문에 auction에 있는 seller까지 함께 가져오기 위해 fetchJoin을 사용했습니다!

Copy link
Member

Choose a reason for hiding this comment

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

앗 제가 chatRoom에 seller가 없는 것을 잠시 간과했네요..!
확인했습니다. 답변 감사합니다!

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로 수정했습니다.
고생 많으셨습니다!! 👍👍👍

return new CreateChatRoomDto(chatRoomRequest.auctionId());
}

public ChatRoom toEntity(final Auction auction) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

해당 메서드는 테스트에서만 사용되는 메서드인 것 같아요!

그리고 dto에는 비즈니스 로직을 최대한 빼는 것이 좋을 것 같다고 생각하는데, 예외를 던지는 부분은 비즈니스 로직이라고 생각해서 dto가 아닌 다른 도메인이나 서비스에서 수행되는 것이 좋아보입니다.
만약 toEntity()가 다른 비즈니스 로직에서 사용된다고 한다면 winner가 없는 경우에는 null을 가지고 있던지 Optional.empty를 그대로 가지고 있게 하는 것이 좋을 것 같다는 의견입니다!

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

아 그렇네요! 제거하였습니다~

@ddang-sona-bot
Copy link

Passed

Analysis Details

15 Issues

  • Bug 0 Bugs
  • Vulnerability 0 Vulnerabilities
  • Code Smell 15 Code Smells

Coverage and Duplications

  • Coverage 15.10% Coverage (15.10% Estimated after merge)
  • Duplications 7.61% Duplicated Code (7.60% Estimated after merge)

Project ID: develop-be-project

View in SonarQube

@kwonyj1022 kwonyj1022 merged commit eb5523e into develop-be Aug 10, 2023
1 check passed
@kwonyj1022 kwonyj1022 deleted the feature/228 branch August 10, 2023 07:04
JJ503 added a commit that referenced this pull request Aug 31, 2023
* feat: 안드로이드 프로젝트 생성

* chore: #7 프로젝트 세팅 (#8)

* chore: gradle 설정

* chore: #7 프로젝트 기초 세팅 추가 (#10)

* feat: 전역 예외 처리 핸들러 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* refactor: 불필요한 어노테이션 제거

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* chore: jacoco 기초 설정 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* chore: rest docs 기초 설정 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* chore: log 기초 설정 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 에러로그 발생 시 슬랙에 메세지를 전송하는 기능 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

---------

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 권한 설정

* feat: 기본 리소스 설정

* feat: 데이터 모듈 분리

* feat: 패키지 구조 설계

* feat: 공통 feature 관련 코드 작성

* rename: 패키지 이동

* feat: 유틸 코드 작성

* feat: 바인딩 어댑터 코드 작성

* feat: Bottom Navigation 레이아웃 작성

* feat: 프래그먼트 이동 로직 추가

* feat: #11 카테고리 엔티티 및 레포지토리 추가 (#19)

* feat: 카테고리 엔티티 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* fix: DB 설정 문제 해결

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* refactor: 필요 없는 클래스 제거

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: Equals&HashCode 재정의 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 카테고리 레포지토리 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* refactor: 카테고리 연관관계 메서드 이름 변경

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* style: 컨벤션 적용

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* test: 유틸리티 어노테이션 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

---------

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: #12 카테고리 api 추가 (#23)

* feat: 카테고리 서비스 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 카테고리 api 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 카테고리 조회 예외 처리 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 카테고리 api 예외 처리 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* docs: 카테고리 api 문서화

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* style: final 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* style: final 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

---------

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: #13 지역 엔티티 및 레포지토리 추가 (#24)

* refactor: 외래키 제약조건 이름 수정

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 지역 엔티티 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 지역 레포지토리 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

---------

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: #14 지역 api 추가 (#32)

* style: 예외 메시지 수정

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 지역 서비스 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 지역 api 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

---------

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: #17 경매 상품 등록 페이지 그리고 MVVM 구조 설계 (#33)

* Feat: MVVM 구조 생성

* Feat: 레이아웃 작성

* refactor: 중복 함수 호출 삭제

* refactor: 런처 액티비티 수정

* refactor: 들여쓰기 추가

* refactor: string name 수정

* feat: #26 경매 엔티티 및 레포지토리(등록) 추가 (#37)

* feat: auditing 기능 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 가격 객체 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 경매 엔티티 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 경매 레포지토리 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* style: 불필요한 개행 제거

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

---------

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: #20 경매 상품 등록 페이지 날짜, 시간 Picker 추가 (#38)

* feat: 클릭 시 날짜, 시간 선택창 띄우기 구현

* feat: 함수 분리 및 정리, 뷰가 선택한 시간을 반영하도록 수정

* refactor: 함수명 수정

* feat: #27 경매 api(등록) 추가 (#41)

* rename: 패키지명 변경

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 읽기 전용 트랜젝션 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* style: 숫자 가독성 개선

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 입찰 단위 객체 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 경매 등록 Service 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 경매 등록 api 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* style: 코드 가독성 개선

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

---------

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: #28 경매 레포지토리(상세 조회) 테스트 추가 (#42)

* feat: equals & hashcode 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* test: 경매 단일 조회 테스트 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* test: import 와일드카드 제거

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

---------

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: #30 경매 api(상세 조회) 추가 (#43)

* feat: 경매 상세 조회 서비스 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 경매 상세 조회 api 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* style: 불필요한 개행 제거

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

---------

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: #29 경매 도메인 엔티티 삭제 비즈니스 로직 추가 (#45)

* refactor: 변수명 변경

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 경매 삭제 도메인 비즈니스 로직 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

---------

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: #31 경매 api(삭제) 추가 (#46)

* feat: 경매 삭제 서비스 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 경매 삭제 api 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* test: 불필요한 개행 제거

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

---------

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* 경매 상품 상세 페이지 UI 추가 (#39)

* feat: 상단 앱 바 UI 추가

* feat: 경매 입찰 버튼 UI 추가

* feat: 상품 이미지 뷰페이저 추가

* feat: 상품 정보 UI 추가

* feat: 판매자 정보 UI 추가

* refactor: 등록된 상품의 임시 이미지 url 데이터의 위치를 뷰모델로 수정

* refactor: 함수 분리

* rename: Event를 AuctionDetailEvent로 이름 변경

* refactor: root element를 shape로 수정

* refactor: 상세 화면에서만 사용하는 색상을 colors.xml에서 제거

* refactor: 스트링 리소스 정리

* chore: #47 queryDsl 설정 추가 (#52)

* chore: queryDsl 의존성 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: queryDsl 설정 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

---------

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* refactor: 이미지, 카테고리, 지역 필드 임시 추가 (#53)

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: #22 경매 상품 목록 레이아웃 작성 (#54)

* feat: 경매 상품 목록 페이지 레이아웃 작성

* feat: 경매 상품 목록 필터 아이템 레이아웃 작성

* rename: 파일명 및 속성명 변경

* feat: 경매 상품 목록 경매 아이템 레이아웃 작성

* refactor: selector 에서 true 조건 먼저 확인하도록 수정 및 디폴트 조건 제거

* refactor: 조건문 코드 한 줄로 수정

* refactor: 상태값을 string resource로 분리

* refactor: 불필요한 로그 삭제

* chore: #60 gradle 설정 변경 (#61)

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: #48 경매 api(목록) 추가 (#58)

* test: 필드 임시 추가로 인한 테스트 코드 수정

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 경매 목록 조회 레포지토리 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 경매 목록 조회 서비스 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* rename: 경매 상세 조회 dto 이름 변경

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 경매 상세 조회 api 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

---------

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: #18 경매 상품 등록 페이지 이미지 URL 업로드와 서버 전송 준비, Picker 스타일 변경 (#55)

* design: 이미지 업로드 url 입력으로 변경

* feat: 뒤로가기 작성

* feat: 서버 통신에 쓰일 클래스 생성

* feat: 제출 기능 틀 설계

* style: 시간 선택창 디자인

* refactor: 양방향 데이터 바인딩 추가

* style: 가이드라인 추가

* feat: 인텐트 넘기는 함수 추가

* rename: 함수명 변경

* rename: 클래스 이름 변경

* feat: #59 경매 상품 선택 시 경매 상세를 보여주는 기능 구현 (#62)

* refactor: 프로퍼티명 변경

* feat: 경매 상품 선택 시 경매 상세를 보여주는 기능 구현

* refactor: #65 API 명세 변경 (#67)

* rename: request, response 패키지 변경

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* refactor: 경매 등록, 상세 조회 api 명세 변경

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* refactor: 경매 상태 및 가격 로직 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

---------

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* chore: #35 git submodule 적용 (#64)

Co-authored-by: swonny <[email protected]>
Co-authored-by: jj503 <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* chore: #68 테스트 환경 설정 추가 (#69)

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: #63 경매 상품 목록에서 경매 등록 페이지로 이동하는 기능 구현 (#66)

* feat: 경매 상품 목록에서 경매 등록 페이지로 이동하는 기능 구현

* feat: 디폴트 필터 선택 적용

* rename: 패키지 이동

* chore: gradle 변경

* feat: retrofit service 및 DTO 작성

* feat: repository 작성

* chore: #35 build script 추가 (#71)

* ci: #35 jenkins pipeline script 추가 (#72)

* chore: build script 추가

* chore: jenkins pipeline script 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: jj503 <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

---------

Co-authored-by: swonny <[email protected]>
Co-authored-by: jj503 <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: #76 경매 dummy 데이터 추가 (#77)

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* chore: dev설정에 console-log 추가 (#78)

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* !hotfix: 젠킨스 권한 설정 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* !hotfix: 젠킨스 권한 설정 변경

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* fix: #79 API 명세 수정 (#80)

* fix: 경매 목록에서 삭제된 경매글까지 보이는 현상 수정

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* refactor: api 명세에 따른 필드명 변경

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* style: 와일드카드 제거

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

---------

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 경매 상품 목록 조회 api 연동

* !hotfix: 경매 상세 api 변경

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* !hotfix: 경매 상세 api 변경

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* !hotfix: log 설정 변경

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* !hotfix: 경매 api 변경

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* test: #83 경매 상품 목록 조회 테스트 추가 (#85)

* feat: #50 경매 상세 페이지 UI 모델 작성 및 데이터바인딩 연결 (#84)

* feat: 경매 상세 조회 Dto 추가

* feat: 경매 상세 조회 Ui 모델 추가

* feat: 직거래 가능 지역 리사이클러뷰 어댑터 추가

* feat: 뷰모델과 xml 데이터 바인딩 로직 작성

* remove: Dto클래스 파일 삭제

* ci: #73 jenkins slack notification 설정 추가 (#89)

* feat: #82 경매 상품 등록 서버 연동 (#86)

* feat: 서버 연동

* feat: 서버 연동

* refactor: 토스트를 스낵바로 수정

* refactor: Submit 이벤트 삭제 및 처리

* test: #57 AuctionService 예외 케이스 테스트 추가 (#90)

* chore: Logback Appender 테스트 커버리지 검사 대상 제외

* test: 경매 서비스 예외 테스트 케이스 추가

* test: #91 Repository 테스트 작성 - 경매 상품 등록, 상세 정보 (#93)

* test: 경매 등록 테스트 코드 작성

* test: 경매 상품 상세 정보 테스트 코드 작성

* refactor: 상수 수정

* test: #92 경매 상품 목록 페이지 ViewModel 테스트 추가 (#95)

* feat: #87 경매 상세 페이지 서버 연동 작업 추가 (#96)

* feat: Dto와 UiModel 매핑 로직 작성

* feat: 뷰모델에 레포지토리 추가

* feat: 경매 상세 페이지 서버 연동 로직 추가

* ci: #75 sonarqube와 github actions 설정 (#94)

* ci: pr 분석 기능 추가

* ci: pr 분석 github actions yml 수정

* ci: pr 분석 github actions yml 수정

* ci: pr 분석 github actions yml 수정

* ci: pr 분석 github actions yml 수정

* ci: pr 분석 github actions yml 수정

* ci: pr 분석 github actions yml 수정

* ci: pr 분석 github actions yml 수정

* test: 경매 조회 테스트 시 테스트 시간 변경

* ci: pr 분석 github actions yml 수정

* ci: pr 분석 github actions yml 수정

* ci: pr 분석 github actions yml 수정

* ci: pr 분석 github actions yml 수정

* ci: pr 분석 github actions yml 수정

* ci: #75 sonarqube 관련 pr decorator yml 변경 (#102)

* ci: sonarqube 관련 pr decorator yml 변경

* ci: sonarqube 검증 제외 옵션 추가

* ci: sonarqube 검증 제외 옵션 추가

* feat: #105 사용자 엔티티 생성 (#112)

* feat: 사용자 엔티티 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: 사용자 더미 데이터 추가

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

---------

Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>

* feat: #117 경매 데이터 캐싱 전략 적용 (#123)

* refactor: 레포지토리에 싱글톤 패턴 적용

* feat: 경매 데이터 캐싱 전략 적용

* refactor: 홈 뷰모델 테스트 수정

* feat: #124 CallAdapter 적용 (#125)

* feat: CallAdapter 구현

* feat: CallAdapter 적용

* test: #108 통합 테스트, 인수 테스트 격리 설정  (#110)

* test: 테스트 데이터베이스 격리 기능 추가

* test: 테스트 데이터베이스 격리 어노테이션 추가

* style: 메서드 개행 방식 통일

* feat: #111 지역 초기 데이터 저장 기능 추가 (#115)

* feat: 지역 API 요청 기능 추가

* feat: 대한민국 전국 지역 저장 기능 추가

* feat: 애플리케이션 실행 시 지역 초기화 기능 추가

* test: 가독성을 위한 개행 추가

* style: final 키워드 추가

* chore: 로컬 환경에서 지역 초기화 로직이 수행되지 않도록 설정 변경

* test: 불필요한 private 메서드 제거

* style: try-catch final 추가 및 변수명 통일

* style: for문 final 추가

* style: for문 final 추가

* feat: #113 입찰 엔티티 및 레포지토리 추가 (#119)

* feat: 입찰 엔티티 추가

* feat: 입찰 레포지토리 추가

* style: import 와일드카드 제거

* refactor: 변수명 및 테이블 컬럼 이름 수정

* chore: mysql 의존성 추가 (#132)

* feat: #101 경매 상품 등록 페이지 DatePicker month -1 버그 (#133)

* fix: 날짜 월이 안맞는 버그 수정

* refactor: 로그 삭제

* refactor: 주석 오타 수정

* feat: #126 경매 목록 무한 스크롤 구현 (#127)

* refactor: #130 BaseTimeEntity 생성, 수정 시간 분리 (#135)

* refactor: 생성 시간과 수정 시간에 대한 엔티티 분리

* refactor: 생성 시간에 대한 엔티티를 상속받도록 수정

* feat: #128 경매 등록 사진 업로드 레이아웃 작성 및 사진 삭제 기능 구현 (#138)

* feat: 경매 등록 이미지 레이아웃 작성

* feat: 경매 등록 이미지 삭제 기능 구현

* test: #99 경매 상세 ViewModel 테스트 코드 작성 (#129)

* feat: #118 채팅 기능 구현에 필요한 엔티티 생성 (#122)

* feat: 채팅 기능 구현에 필요한 엔티티 생성

Co-authored-by: swonny <[email protected]>

* refactor: 채팅 가능 여부 체크 메서드 파라미터 추가

Co-authored-by: swonny <[email protected]>

* feat: 채팅방 레포지토리 추가

Co-authored-by: swonny <[email protected]>

* feat: 메시지 레포지토리 추가

Co-authored-by: swonny <[email protected]>

* refactor: `@ToString` 메서드 옵션 추가

Co-authored-by: swonny <[email protected]>

* style: 마지막 줄 개행 추가

Co-authored-by: swonny <[email protected]>

* test: 불필요한 테스트 삭제

Co-authored-by: swonny <[email protected]>

* refactor: column 옵션 추가

Co-authored-by: swonny <[email protected]>

* refactor: Builder 추가

Co-authored-by: swonny <[email protected]>

* test: 테스트 어노테이션 변경

Co-authored-by: swonny <[email protected]>

* feat: 메시지 읽음 필드 추가

Co-authored-by: swonny <[email protected]>

* refactor: 메시지 읽음 필드 삭제

Co-authored-by: swonny <[email protected]>

* refactor: 수정 시간 미포함된 엔티티 상속으로 변경

Co-authored-by: swonny <[email protected]>

* refactor: 중복 필드 삭제

Co-authored-by: swonny <[email protected]>

* refactor: 불필요한 어노테이션 옵션 삭제

Co-authored-by: swonny <[email protected]>

---------

Co-authored-by: swonny <[email protected]>

* feat: #131 경매 입찰 요청 팝업창 UI 추가 (#141)

* feat: 스트링 리소스 추가

* feat: 입찰하기 버튼 클릭시 경매 입찰 팝업창을 띄우는 기능 추가

* feat: 경매 입찰 팝업창 UI 추가

* refactor: 경매 입찰 팝업창 가로 너비 동적 계산 로직 제거

* refactor: binding 객체 접근 제어자 수정

* rename: string 리소스 where절 수정

* feat: #116 지역 엔티티, 경매 엔티티 연동 (#137)

* feat: Auction 초기 데이터 제어 설정 추가

* feat: Auction과 AuctionRegion 연동

* feat: Auction과 AuctionRegion을 fetch join하는 기능 추가

* refactor: Auction과 AuctionRegion을 fetch join하는 기능 추가

* test: 경매 삭제 테스트 케이스 수정

* fix: 경매 등록 시 직거래 지역이 추가되지 않는 문제 수정

* feat: AuctionRegion의 테이블 명을 명시적으로 지정

* test: 경매 생성 시 존재하지 않는 지역을 선택한 경우의 테스트 케이스 추가

* style: @Table 위치 변경

* refactor: Auction에서 모든 AuctionRegions를 받아 연관 관계를 세팅하도록 변경

* remove: 불필요한 Response 삭제

* rename: 불필요한 복수형 이름 단수형으로 변경

* style: 개행 추가

* test: 통합 테스트 설정 변경

* feat: 세 번째 지역을 조회하는 기능 추가

* feat: 경매 등록 시 세 번째 지역이 아닌 경우에 대한 예외 처리 기능 추가

* feat: #142 경매 등록 시 갤러리에서 사진 선택하는 기능 구현 (#148)

* feat: #136 카테고리 선택 Activity UI, 구조 작성 (#153)

* feat: 레이아웃, 구조 틀 작성

* design: 배경색 흰색 추가

* feat: 카테고리 모델 추가

* feat: MVVM 구조 작성

* feat: ListAdapter, DiffUtil 적용하여 상태에 따른 Item 디자인 변경 구현

* feat: ListAdapter, DiffUtil 적용하여 상태에 따른 Item 디자인 변경 구현

* refactor: 카테고리 DiffUtil 분리

* feat: 서브 카테고리 UI 작성

* feat: mock 레포지토리 구현

* refactor: 카테고리 모델 구조 변경

* feat: mock 레포지토리 연결 및 메인-서브 카테고리 연결

* refactor: 로그 삭제

* refactor: strings 아이템들 순서 변경

* refactor: 뷰 홀더 바인딩 숨김

* refactor: 오버라이딩 안해도 되는 함수 삭제

* refactor: 함수 분리

* refactor: 서브 카테고리 variable로 변경

* refactor: selector item 순서 변경

* refactor: xmlns 속성 위치 변경

* refactor: event로 리스트 넘겨주도록 수정

* refactor: selector 이름 변경

* refactor: 메인 카테고리 LiveData로 변경

* feat : #140 경매 이미지 엔티티, 카테고리 엔티티, 경매 엔티티 연동 (#149)

* feat: 하위 카테고리 조회 기능 추가

* feat: 카테고리 엔티티와 경매 엔티티 연동 및 연동으로 인한 dto, 테스트 변경

* refactor: api 명세 변경으로 인한 dto와 테스트 변경

* feat: 경매 이미지 엔티티 추가

* feat: 로컬 이미지 저장 기능 추가

* feat: 경매 이미지 레포지토리 추가

* feat: 이미지 조회 기능 추가

* feat: 이미지 조회 api 추가

* feat: 경매 엔티티, 경매 이미지 엔티티 연동 및 연동으로 인한 dto, api, 테스트 변경

* feat: 경매 등록 시 이미지 업로드 기능 추가

* feat: 경매 등록 api 명세 변경에 의한 dto 및 로직 변경

* refactor: 경매 목록 조회 시 지정한 페이지 크기보다 하나 더 많은 목록을 조회하도록 변경

* feat: 경매 등록 시 경매 이미지 제약조건 추가

* feat: 경매 목록 조회 api 현재 페이지가 마지막 페이지인지 판단하는 기능 추가

* feat: 경매 등록 조회 api 응답 변경으로 인한 dto, 기능 추가

* test: mocking을 통해 불필요한 이미지 파일 저장 비활성화

* feat: No-Offset 조회 결과를 Slice로 변환하는 기능 추가

* refactor: 경매 목록 조회 시 List 대신 Slice를 반환하도록 변경

* remove: QuerydslSliceHelper 패키지 변경

* refactor: 경매 목록 조회 시 fetch join을 하도록 변경

* feat: MultipartFile 설정 추가

* refactor: 단일 이미지 파일 최대 용량과 요청 시 파일 전체 합계 용량 제한 값 변경

* refactor: Auction 단일 조회 메서드 이름 변경

* refactor: AuctionImage 변환 메서드 이름 수정 및 메서드 순서 변경

* refactor: 불필요한 @Table 삭제

* refactor: new 키워드를 통해 엔티티를 생성하지 않고 dto에 정의한 메서드를 호출해 생성하도록 변경

* refactor: 중복되는 코드를 별도의 메서드로 분리

* feat: #143 입찰 가격 입력 뷰 수정 및 비지니스 로직 뷰모델로 분리 (#154)

* feat: 가격 입력 뷰 작성

* feat: 뷰모델로 비지니스 로직 분리

* refactor: 경매 입찰 다이얼로그 함수 분리

* refactor: 스트링 리소스 네임스페이스 수정

* !hotfix: flyway mysql 의존성 추가 (#160)

* !hotfix: flyway 적용 (#163)

* !hotfix: 외래키 제약조건 설정 추가

* !hotfix: flyway V1 스크립트 작성

* !hotfix: auction DB 데이터타입 변경 (#165)

* !hotfix: 외래키 제약조건 설정 추가

* !hotfix: flyway V1 스크립트 작성

* !hotfix: 엔티티 옵션 변경

* ci: #166 운영 서버 빌드 스크립트 작성 (#167)

* feat: 운영 서버 profile 설정 추가

* rename: 개발 서버 스크립트명 변경

* ci: 운영 서버 스크립트 추가

* !hotfix: prod-pipeline.jenkinsfile 오타 수정 (#171)

* feat: #159 이미지 Uri를 MultipartBody로 변환 (#162)

* feat: 이미지 Uri를 MultipartBody로 변환

* feat: 이미지 uri에서 절대 경로를 가져오는 로직 구현

* feat: #176 경매 등록 api 변경 (#177)

* refactor: 경매 등록 api 변경

* style: 불필요한 주석 제거

* !hotfix: 개발 환경 jenkins pipeline script 수정 (#178)

* refactor: #173 카테고리 조회, 직거래 지역 조회 api 수정 (#174)

* refactor: 카테고리 조회 api 반환 타입 수정

* refactor: 직거래 지역 조회 api 반환 타입 수정

* feat: #120 입찰 api(등록) 추가 (#156)

* feat: 경매 아이디로 마지막 입찰 정보 조회 기능 추가

* feat: 입찰 등록 서비스 추가

* feat: 첫 입찰자의 입찰 규칙 기능 추가

* feat: 임시 argument resolver 추가

* feat: 입찰 등록 api 추가

* test: 입찰 서비스 테스트 추가

* feat: 요청에 대한 예외 처리 추가

* refactor: 특정 서비스 메서드를 도메인 메서드로 이동

* test: 필요 없는 코드 제거

* refactor: 요청 dto 검증 조건 추가

* refactor: 요청 dto 데이터 타입 변경

* refactor: 도메인 네이밍을 명확하게 수정

* refactor: 변수 분리

* refactor: 메서드 네이밍 변경

* refactor: 메서드 네이밍을 컨벤션에 맞도록 변경

* rename: 로그인 사용자에 해당하는 dto 클래스 네이밍 변경

* refactore: 메서드 접근 제어자 변경

* refactore: 완료한 todo 제거

* feat: 입찰 시 경매의 마지막 입찰액 업데이트 기능 추가

* refactor: toString에 대해 exclude 대신 of로 수정

* refactor: 모호한 메서드 네이밍 수정 및 위치 수정

* fix: 누락된 대괄호 추가

* refactor: auction 엔티티 수정

* test: 변수 네이밍을 명확하게 수정

* test: 부족한 테스트 추가

* refactor: 시간을 주입받도록 수정

* refactor: querydsl 형식을 jpql로 변환

* refactor: 입찰 생성 요청에 대한 검증 예외 메시지 추가

* test: 메서드명을 명확하게 수정

* feat: #175 경매 등록 시 갤러리에 있는 이미지를 서버로 전송하는 기능 구현 (#182)

* feat: 경매 등록 시 이미지 파일을 서버로 전송하는 기능 구현

* feat: 마지막 경매 아이템까지 로드한 경우 더 이상 로드하지 않는 코드 추가

* feat: #157 입찰 api(조회) 추가 (#183)

* feat: 경매 아이디로 마지막 입찰 정보 조회 기능 추가

* feat: 입찰 등록 서비스 추가

* feat: 임시 argument resolver 추가

* feat: 입찰 등록 api 추가

* refactor: 특정 서비스 메서드를 도메인 메서드로 이동

* feat: 입찰 조회 서비스 추가

* feat: 입찰 조회 컨트롤러 추가

* fix: cherry-pick 머지로 인한 오류 해결

* style: 개행 추가

* remove: 사용하지 않는 파일 삭제

* rename: 요청과 응답에 대한 패키지 분리

* remove: 사용하지 않는 파일 삭제

* refactor: 경매 존재 검증에 대한 사용 메서드 변경

* test: 특수한 값을 지역 변수로 추출

* test: 경매 존재 테스트 추가

* test: 값의 타입 수정

* !hotfix: 경매 이미지 설정 제거 (#184)

* feat: #151 채팅 전송 기능 추가 (#155)

* feat: 메시지 생성 서비스 추가

* style: 메소드 체이닝 정렬

* feat: 메시지 전송 api 추가

* refactor: 채팅방 id를 pathVariable로 받도록 수정

* style: 메소드 순서 재정렬

* feat: 채팅방, 사용자 글로벌 예외 핸들러 추가

* style: 와일드카드 제거

* style: 메소드 체이닝 개행 추가

* style: 개행 추가

* test: 채팅방, 수신자 또는 발신자가 없는 경우 예외 테스트 추가

* style: 필드 사이 개행 추가

* refactor: 테스트 내 private 메소드 삭제

* fix: 경매 엔티티 변경에 따른 코드 수정

* feat: #157 입찰 api(조회) 추가 (#183)

* feat: 경매 아이디로 마지막 입찰 정보 조회 기능 추가

* feat: 입찰 등록 서비스 추가

* feat: 임시 argument resolver 추가

* feat: 입찰 등록 api 추가

* refactor: 특정 서비스 메서드를 도메인 메서드로 이동

* feat: 입찰 조회 서비스 추가

* feat: 입찰 조회 컨트롤러 추가

* fix: cherry-pick 머지로 인한 오류 해결

* style: 개행 추가

* remove: 사용하지 않는 파일 삭제

* rename: 요청과 응답에 대한 패키지 분리

* remove: 사용하지 않는 파일 삭제

* refactor: 경매 존재 검증에 대한 사용 메서드 변경

* test: 특수한 값을 지역 변수로 추출

* test: 경매 존재 테스트 추가

* test: 값의 타입 수정

* !hotfix: 경매 이미지 설정 제거 (#184)

* fix: 충돌 해결

* fix: 충돌 해결

* fix: 충돌 해결

---------

Co-authored-by: 제이미 <[email protected]>
Co-authored-by: 지토 <[email protected]>

* feat: #161 지역 선택 페이지 UI 추가, 구조 설계 (#179)

* feat: 액티비티 추가

* feat: 페이지 레이아웃 작성

* feat: Mock Repository 작성

* feat: 첫번째 지역 리사이클러뷰 어댑터 생성

* feat: 뷰홀더 어댑터 액티비티 뷰모델 연결

* feat: 첫 지역 리사이클러뷰 구현

* feat: 두번째 지역 리사이클러뷰 구현

* feat: 세번째 지역 리사이클러뷰 구현

* feat: Chips 추가 구현

* refactor: Chips 부분 리팩터링

* refactor: 확장함수 선언

* refactor: 쓸데없는 괄호 삭제

* design: divider view 수정

* feat: 인텐트에 담아 종료하는 함수 틀 작성

* refactor: 변수명 변경

* refactor: ChipGroup을 RecyclerView로 리팩터링

* design: Decoration 추가

* feat: BindingAdapter를 활용한 onCloseClick 적용

* refactor: 필요없는 import 삭제

* refactor: 불필요한 함수 실행 삭제

* fix: 첫번째 지역 클릭 시 세번째 지역이 초기화되지 않는 버그 수정

* feat: #185 경매 엔티티에 판매자 필드 추가 (#187)

* feat: 경매 엔티티에 회원 엔티티 연관관계 추가

* feat: 경매 등록 시 판매자를 등록하는 로직 추가

* feat: 경매 조회 시 판매자 fetch join 기능 추가

* feat: 경매 등록 및 조회 api 판매자 연동

* feat: 경매 하위 카테고리 연관관계 세팅 기능 추가

* refactor: 하위 카테고리를 생성자로 초기화하지 않고 연관관계 세팅 메서드를 통해 초기화하도록 변경

* refactor: 판매자, 하위 카테고리 연관관계 세팅 로직 메서드 분리

* chore: 경매 엔티티 변경에 따른 flyway 스크립트 추가

* test: 경매 엔티티 관련 컴파일 에러 해결

* test: 테스트 어노테이션 변경

* feat: 특정 회원과 경매 판매자가 일치하는지 여부를 판단하는 기능 추가

* feat: 경매 삭제 시 판매자임을 검증하는 기능 추가

* !hotfix: 이미지 업로드 용량 설정 추가 (#190)

* refactor: #191 경매 엔티티에 카테고리 엔티티, 직거래 지역 엔티티 연관관계 세팅 방식 변경 (#192)

* refactor: 경매 엔티티에 카테고리 엔티티, 직거래 지역 엔티티 연관관계 세팅 방식 변경

* refactor: 정적 팩토리 메서드 이름 변경 및 초기화 대상 변경

* feat: #193 이미지를 압축하여 캐시에 저장하는 기능 구현 (#195)

* chore: 파이어베이스 analytics 추가

* design: 아이콘 변경

* feat: #180 카테고리 선택 페이지 서버 연동 (#188)

* feat: 레포지토리와 데이터소스 생성

* feat: 메인 카테고리 연결

* design: 텍스트 정렬 변경

* feat: 서브 카테고리 연결

* feat: 선택 완료 이벤트 연결

* refactor: 코드 리팩터링

* refactor: 필요없는 코드 삭제

* refactor: 함수 내부 리팩터링

* refactor: typealias 적용

* feat: #181 지역 선택 페이지 서버 연동 (#194)

* feat: Remote DataSource, Repository 구현

* feat: 변경된 Repository와 연결

* refactor: 캐싱 적용

* refactor: 함수 내부 리팩터링

* refactor: 함수 분리

* refactor: typealias 적용

* docs: #189 예외 핸들링, 테스트 케이스, 문서 추가 (#198)

* rename: 이미지 저장 실패 커스텀 예외 이름 변경

* feat: 경매 관련 예외 핸들러 추가

* test: AuctionController 예외 핸들링 테스트 추가

* refactor: GlobalExceptionHandler UserNotFoundException 종류에 따른 예외 핸들러 분리

* test: AuctionController api 명세 테스트 추가

* test: RegionController api 명세 테스트 추가

* test: 누락된 api 명세 테스트 추가

* test: 문서화 설정 변경

* docs: 경매, 직거래 지역 api 문서화

* feat: 이미지 조회 실패 예외 핸들러 추가

* test: 이미지 조회 실패 컨트롤러 단위 테스트 추가

* remove: 더 이상 사용하지 않는 이미지 조회 실패 커스텀 삭제

* feat: #186 입찰 시 판매자 검증 로직 추가 (#199)

* feat: 입찰 시 판매자 검증 로직 추가

* feat: 입찰액 값 객체 생성

* refactor: 중복된 코드 통합

* feat: 경매에 입찰자 수 필드 추가

입찰 시 마지막 입찰액과 함께 업데이트

* test: 와일드카드 제거

* feat: flyway 스크립트 추가

* feat: #144 채팅방 목록 조회 api 추가 (#197)

* rename: 채팅 api presentation 패키지의 request dto를 request 패키지로 이동 및 테스트 static import 추가

* feat: 채팅방 목록 조회 서비스 추가

* feat: 채팅방 조회 시 사용할 ArgumentResolver 추가

* feat: 채팅방 목록 조회 api 추가

* fix: merge로 인한 충돌 해결

* style: 불필요한 개행 제거

* refactor: 채팅방 목록 조회 시 최종 가격도 반환하도록 response dto에 필드 추가

* style: 120자 넘는 경우 개행 적용

* refactor: 파라미터에 final 키워드 추가

* refactor: 파라미터에 final 키워드 추가

* style: 클래스명과 메서드 사이에 개행 추가

* test: 도메인 테스트 시 영속성 부여

* style: 불필요한 패키지 명시 삭제

* rename: 참여하는 채팅방을 조회하는 데 사용하는 레포지토리 메서드와 서비스 메서드명 변경

* style: 개행 및 불필요한 패키지 경로 제거

* rename: 정적 팩토리 메서드 컨벤션에 맞지 않는 이름 변경

* test: 채팅 관련 서비스 테스트 시 테스트 격리 메서드 적용

* test: merge로 인한 오류 해결

* !hotfix: flyway로 인해 기존 데이터의 입찰자 수가 null이 되는 문제 해결 (#202)

* !hotfix: flyway 스크립트에서 기존 데이터 값을 업데이트하도록 수정

* !hotfix: flyway 업데이트 쿼리 where절 추가

* feat: #196 경매 입찰 기능 서버 연동 (#200)

* feat: 경매 입찰 서버 연동

* feat: 경매 입찰 응답 예외 클래스 설계 및 처리 로직 추가

* feat: 상세 경매 조회시 캐시 데이터 업데이트 하는 기능 추가

* refactor: 경매 입찰 최소 금액 계산 로직 AuctionDetailViewModel로 이동

* refactor: Toaster 추가 및 적용

* refactor: SubmitBidFailureResponse find 메소드 로직 수정

* refactor: AuctionResponse에서 AuctionPreviewResponse로 변환하는 메소드 추가

* rename: 입찰 성공 이벤트 클래스명 동사가 앞에 오도록 수정

* !hotfix: 두 가지 예외 통합 (#204)

* feat: Analytics Screen View 로그 이벤트 추가

* feat: #201 등록 페이지와 카테고리, 지역 선택 페이지 연결 (#203)

* feat: 카테고리 페이지 연결

* feat: 카테고리 페이지 연결

* feat: 지역 페이지 연결

* refactor: 코드 리팩터링

* design: 가격 0 디폴트값 수정

* refactor: 로그 삭제

* refactor: 함수 순서 변경

* refactor: 함수 순서 변경

* refactor: xml 닫는 태그 수정

* refactor: #205 경매 입찰 응답 메시지 수정 (#206)

* chore: 파이어베이스 crashlytics 추가

* fix: #208 상세 정보에서는 입찰자 수가 0으로 전달되는 문제 해결 (#209)

* fix: 상세 정보에서는 입찰자 수가 0으로 전달되는 문제 해결

* test: 개행 수정

* docs: #158 입찰 관련 테스트 추가 및 api 문서 (#213)

* test: 입찰 등록 및 조회에 대한 예외 테스트 추가

* docs: 입찰 등록 및 조회 api 문서화

* refactor: 컨트롤러 메서드 접근 제어자 수정

* feat: #145 채팅방 상세 정보 조회 api 추가 (#212)

* feat: 채팅방 상세 조회 서비스 추가

* feat: 채팅방 상세 조회 api 추가

* test: 테스트에서 객체 생성 시 필드가 무엇을 의미하는지 알 수 있도록 명시

* style: return문 앞에 개행 추가

* feat: 채팅방 접근 권한에 대한 커스텀 예외 추가

* refactor: 불필요한 static 키워드 제거 및 일부 메서드 객체지향적으로 수정

* refactor: 채팅 관련 컨트롤러의 메서드명을 명확하게 변경

* feat: 채팅 가능 여부를 응답하도록 추가

* feat: 채팅 패키지에 경매 정보를 나타내는 dto 추가

* fix: 잘못된 import로 인한 오류 해결

* feat: #227 카카오 소셜로그인 기능 구현 (#229)

* feat: kakao sdk 추가

* feat: 로그인 페이지 레이아웃 작성

* feat: 카카오 소셜로그인 코드 작성

* feat: #225 회원 가입, 로그인 기능 구현 (#231)

* rename: 초기 데이터 초기화 클래스 패키지 변경

* chore: jwt 의존성 추가

* chore: 스프링 부트 설정 처리 의존성 추가

* feat: jwt 관련 설정 추가

* test: 실패하는 경매 관련 테스트 수정

* feat: 토큰화 기능 추가

* feat: 토큰 분석 기능 추가

* feat: 소셜 로그인 지원 관리 기능 추가

* feat: 카카오 회원 정보 조회 기능 추가

* feat: 회원 엔티티 필드 추가

* feat: OauthId를 통해 회원을 조회하는 기능 추가

* feat: 소셜 로그인, acceeToken 갱신 기능 추가

* feat: 소셜 로그인, acceeToken 갱신 api 추가

* feat: 소셜 로그인, acceeToken 갱신 api 예외 핸들러 추가

* chore: 회원 엔티티 변경으로 인한 flyway 스크립트 추가

* refactor: 유효하지 않은 토큰 예외를 하나로 통일

* refactor: 회원 엔티티의 oauthId를 String으로 변경

* refactor: PrivateClaims의 타입을 Long으로 변경

* style: 정렬 변경, final 키워드 추가

* test: 불필요한 주석 제거

* test: 닉네임 검증 값 변경

* refactor: 회원 더미 데이터 닉네임 변경

* refactor: 토큰 발급시간 변수명 변경

* !hotfix: flyway script 오타 수정 (#243)

* feat: #230 카카오 소셜로그인 서버 연동 (#241)

* feat: 카카오 소셜로그인 Service api, data model 추가

* feat: AuthRepository, AuthDataSource 생성 및 뷰와 연결

* feat: 보안 SharedPreference에 서버로부터 전달받은 토큰 저장 및 가져오기

* flyway version 5 script 누락된 컬럼 변경 사항 추가 (#245)

* !hotfix: flyway script 누락된 컬럼 수정사항 추가

* feat: 회원 초기 더미 데이터 기능 추가

* test: 테스트 시 회원 oauthId 더미 데이터 변경

* test: 테스트 시 회원 oauthId 더미 데이터 변경

* feat: 회원 초기 더미 데이터 저장 로직 추가

* feat: #232 경매 상세 화면에서 쪽지방 생성 버튼 기능 추가 (#240)

* feat: AuctionDetailResponse에 chat 속성 추가

* feat: AuctionDetailBottomButtonStatus 추가

* feat: 하단 버튼에 뷰모델 핸들링 함수 연결

* feat: 쪽지 기능 관련 Dto 추가

* feat: 쪽지 기능 서비스 메소드 추가

* feat: ChatRemoteDataSource 추가

* feat: ChatRepository 및 구현체 추가

* refactor: 채팅방ID 얻어오는 api 수정

* refactor: AuctionDetailBottomButtonStatus enum 클래스로 수정

* rename: exitEvent에서 setExitEvent로 수정

* refactor: 경매 상세 하단 버튼 텍스트를 가져오는 formatter 함수 추가

* feat: #246 자동 로그인 기능 구현 (#248)

* feat: 스플래시 페이지 레이아웃 작성

* feat: 토큰 유효성 검사 기능 구현

* feat: 스플래시 액티비티에서 다음 액티비티로 이동하는 기능 구현

* feat: 로그인 액티비티에서 다음 액티비티로 넘어가는 기능 구현

* feat: 기본 스플래시 화면 투명하게 조정

* feat: 토큰 리프레시하는 api 추가

* feat: 헤더에 토큰 추가 및 토큰 갱신 인터셉터 구현

* feat: #233 api 인증 및 인가 기능 연동 (#249)

* feat: 인증 회원 정보 저장 기능 추가

* feat: 인증 인터셉터 기능 추가

* feat: 인증 ArgumentResolver 기능 추가

* rename: Oauth2 관련 설정 클래스 이름 변경

* feat: Oauth2 설정 추가

* fix: ArugmentResolver에서 Forbidden이 아닌 Unauthorized 예외가 발생하도록 변경

* rename: 예외 이름을 상황에 맞게 변경

* feat: api 요청 시 인증 및 인가 기능 추가

* chore: 인터셉터를 테스트 커버리지 검증 대상에서 제외

* fix: 경매 목록 조회 시 자신이 작성한 경매는 보이지 않도록 변경

* refactor: oauth2 관련 api의 경우 인터셉터가 적용되지 않도록 변경

* !hotfix: 노출된 api 키 제거

* test: 누락된 개행 추가

* rename: privateClaims 패키지 이동

* style: 개행 및 조건을 소괄호로 묶어서 표현

* fix: 경매 목록 조회 시 자신이 작성한 글도 조회가 가능하도록 변경

* feat: #226 경매 신고 등록 및 조회 api 추가 (#238)

* feat: 경매 신고 엔티티 추가

* feat: 경매 신고 레포지토리 추가

* feat: 경매 신고 등록 서비스 추가

* feat: 경매 신고 등록 api 추가

* feat: 경매 신고 중복 등록 검증 추가

* refactor: 메서드 호출 순서로 변경

* feat: 경매 신고 전체 조회 레포지토리 추가

* feat: 경매 신고 전체 조회 서비스 추가

* feat: 경매 신고 전체 조회 api 추가

* feat: 경매 신고 테이블 생성에 대한 flyway 스크립트 추가

* refator: toString 항목 추가

* rename: flyway 스크립트 네이밍 수정

* test: merge에 따른 테스트 코드 수정

* refactor: querydsl을 EntityGraph로 수정

* test: import 와일드카드 제거

* refactor: final 추가

* style: 개행 추가

* test: given-when-then 주석 수정

* refactor: 메서드명 수정

* refactor: transactional 어노테이션 추가

* rename: 동일 클래스가 존재해 헷갈리는 dto 네이밍 수정

* rename: dto 패키지 분리

* refactor: 머지에 따른 인증 관련 코드 수정

* feat: #252 토큰 유효성 검증 api 추가 (#255)

* feat: accessToken 검증 기능 추가

* feat: accessToken 검증 api 추가

* style: final 추가

* test: 변수 네이밍 변경

* refactor: 토큰 타입 상수 네이밍 변경

* refactor: try-catch 변수 네이밍 수정

* style: 메서드 순서 변경

* feat: #250 쪽지 목록 페이지 기능 구현 (#254)

* feat: 쪽지 프래그먼트 UI 작성

* feat: 쪽지 목록 아이템 UI 작성

* feat: 쪽지 목록 아이템 뷰홀더 작성

* feat: 쪽지 목록 리사이클러뷰 어댑터 작성

* feat: 쪽지 목록 페이지 서버 연동

* feat: 탭 이동으로 보여질 때 목록 다시 불러오도록 수정

* refactor: if문 중괄호 제거

* refactor: 클릭 리스너 이름 변경 및 id만 전달받도록 수정

* refactor: Iso8601 포맷을 LocalDateTime으로 변환하는데 사용하던 DateTimeFormatter 제거

* feat: #247 사용자 정보 조회 api 추가 (#256)

* feat: 사용자 정보 조회 서비스 추가

* refactor: 사용자 정보를 찾지 못했을 때 예외 통합

* feat: 사용자 정보 조회 api 추가

* refactor: 머지로 인한 수정 사항 반영

* refactor: resolver argument 수정 및 서비스 메서드 파라미터 수정

* test: 사용자 정보 조회 api 추가

* refactor: 파라미터에 final 추가

* test: 파일 끝 개행 추가

* test: 개행 수정

* test: 개행 수정

* refactor: #235 채팅방 목록 조회 api 명세 수정에 따른 변경 (#236)

* refactor: 채팅방 목록 조회 시 List를 그대로 반환하도록 변경

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

* feat: #228 채팅방 생성 api 추가 (#234)

* feat: 경매 아이디를 포함하는 채팅방 조회하는 레포지토리 메서드 추가

* feat: 낙찰자를 판단하는 메서드와 인자로 받은 사용자가 낙찰자인지 판단하는 메서드 추가

* feat: 채팅방 생성 서비스 추가

* feat: 채팅방 생성 컨트롤러 추가

* feat: 커스텀 예외 핸들러 추가

* feat: 서비스레이어에서 데이터 삽입 시 `@Transactional`의 readOnly 옵션을 false로 지정

* refactor: 낙찰자를 판단할 때 도메인에서 예외처리하지 않고 Optional로 반환하도록 변경

* refactor: if문 안에 여러개의 조건 메서드 분리

* refactor: db에 존재하는지 파악할 때 find 대신 exists 쓰도록 변경

* refactor: service에 있던 domain -> dto로 변환하는 메서드 대신 dto의 정적 팩토리 메서드를 사용하도록 변경

* test: 누락된 final 추가 및 double임을 표현할 수 있도록 소수 뒤에 d 추가

* test: id만 비교할 시 id를 통한 비교 대신 equals 사용하도록 수정

* feat: 채팅방 생성 요청시 채팅방이 이미 있는 경우 그 채팅방을 반환하도록 기능 추가

* test: 낙찰자를 찾을 수 없을 때 발생하는 예외 핸들링 테스트 추가

* refactor: 채팅방이 이미 존재하는 경우에 대한 불필요한 로직 및 예외 제거

* test: 누락된 테스트 추가

* refactor: 복잡하게 작성된 코드 간결하게 수정

* refactor: 메서드명 수정 및 불필요한 개행 삭제

* feat: querydsl을 사용해 채팅방 조회시 성능 개선 및 최신순 정렬 기능 추가

* feat: 사용자 조회와 동시에 예외처리하도록 변경

* fix: merge로 인한 충돌 해결

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

* feat: #253 마이페이지 추가 (#261)

* fix: 헤더로 보내는 토큰에 prefix 추가

* feat: 마이페이지 레이아웃 작성

* feat: 유저 정보 불러오는 api 연동

* feat: 로그아웃 api 연동

* refactor: 로그아웃 시 로그인 페이지로 이동하는 intent에 flag 추가하는 방식으로 수정

* refactor: string 리소스 name 수정

* 채팅방 신고 등록 및 조회 api 추가 (#262)

* feat: 채팅방 신고 엔티티 추가

* feat: 채팅방 신고 등록 레파지토리 추가

* style: 개행 추가

* feat: 채팅방 신고 등록 서비스 추가

* test: 채팅룸 신고 등록과 관련한 예외 테스트 추가

* feat: 채팅방 신고 권한 검증 로직 추가

* refactor: 메서드 네이밍을 명확하게 수정

* test: 잘못된 네이밍 수정

* style: 개행 추가

* feat: 채팅방 신고 등록 api 추가

* refactor: 신고 컨트롤러 클래스명 변경

* refactor: 경매 신고 조회 시 판매자 정보도 가져오도록 수정

* feat: 채팅방 신고 전체 목록 조회 서비스 추가

* feat: 채팅방 신고 전체 목록 조회 api 추가

* refactor: 메서드 명이 명확하도록 수정

* test: 채팅방 신고 전체 목록 조회 테스트 추가

* test: 경매 신과 관련 테스트 메서드명 명확하게 수정

* feat: 이미 신고한 채팅방을 신고하는 경우에 대한 검증 로직 추가

* feat: 채팅방 신고 엔티티 추가에 따른 flyway 스크립트 추가

* style: final 누락 추가

* style: 개행 추가

* feat: #242 신고 페이지 UI/구조 작성, 삭제 버튼 UI추가 (#267)

* feat: 신고 페이지 UI 작성

* refactor: BindingActivity 사용하는 것으로 수정

* feat: ViewModel 코드 작성

* feat: 경매 상세 페이지 신고버튼 영역 잡아두기

* refactor: 함수명 변경

* refactor: 충돌 해결

* refactor: #271 경매와 인증/인가 기능 연동 (#273)

* feat: #258 로그아웃 api 추가 (#269)

* feat: 블랙리스트 토큰 엔티티 기능 추가

* feat: 블랙리스트 토큰 등록 및 조회 레포지토리 기능 추가

* test: 테스트 이름 변경

* feat: 블랙리스트 토큰 등록 및 조회 기능 추가

* feat: 인터셉터에서 블랙리스트에 등록한 AccessToken인지 검증하는 기능 추가

* feat: 로그아웃 api 기능 추가

* chore: BlackListToken 엔티티 관련 flyway script 추가

* refactor: 메서드 이름을 명확하게 변경

* style: 개행 추가

* chore: flyway script 버전 변경

* test: 인터셉터 설정 추가

* test: 누락된 인터셉터 설정 추가

* feat: #263 경매 목록 새로고침 기능 추가 (#264)

* feat: #266 삭제된 경매 상세 조회 시 데이터를 삭제하고 경매 목록으로 돌아오는 기능 추가 (#268)

* feat: 삭제된 경매 상세 조회 시 데이터를 삭제하고 경매 목록으로 돌아오는 기능 추가

* refactor: 로컬에서 경매 데이터를 삭제하는 기능을 Repository 내부적으로 처리하도록 수정

* feat: #274 신고 기능 서버 연동 및 액티비티 연결 (#275)

* feat: 아이콘 추가

* feat: 레포지토리에 신고 API 추가

* feat: ViewModel 코드 작성

* feat: onClick 함수 연결

* feat: 경매 상세 페이지와 신고 페이지 연결

* feat: 액티비티 코드 작성

* feat: 통신에 필요한 기본 정보 세팅과 신고 접수, 예외 처리들 작성

* refactor: 빈 스트링 검사

* feat: 신고 접수 후 종료

* refactor: 값 중복 확인 삭제

* refactor: 코드 길이 줄이기

* fix: 잘못된 Service 코드 수정

* refactor: 상수 밖으로 빼기

* refactor: 예외 처리

---------

Co-authored-by: Mendel <[email protected]>

* feat: #257 쪽지방 페이지 기능 구현 (#270)

* feat: 쪽지방 페이지 UI 상단바 작성

* feat: 쪽지방 페이지 UI 하단 메시지 입력 부분 작성

* feat: 쪽지방 페이지 액티비티 추가

* feat: 쪽지방 페이지로 이동하는 로직을 다른 화면에 추가

* feat: 뷰모델 클릭 리스너 함수들을 데이터바인딩으로 연결

* feat: 메시지 UI 모델 추가

* feat: 메시지 로딩 함수 구현

* feat: 채팅 메시지 뷰타입 레이아웃 작성

* feat: 메시지 어댑터 작성

* feat: 쪽지방 생성 알림 어댑터 작성

* feat: 바인딩 어댑터 setTextOrEmpty 유틸 함수 추가

* feat: 메시지 전송 기능 추가

* refactor: 신고하기 아이콘 변경

* feat: 채팅 입력시 액티비티 따라 올라가는 기능 추가

* refactor: 빈 스트링 전송되지 않도록 수정

* refactor: MessageAdapter DiffUtil 수정

* refactor: 중복 리턴 수정

* refactor: loadMessageRoom으로 함수명 수정

* feat: #152 채팅 메시지 조회 API 추가 (#272)

* fix: 브랜치 최신화

* style: 메소드 체이닝 개행 추가

* style: 필드 사이 개행 추가

* fix: 브랜치 최신화

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

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

* refactor: 엔티티 조회 로직 메서드 분리

* refactor: null 아이디 검사 분기문 메서드 분리

* style: 메서드 체이닝 개행 추가

* style: 불필요한 주석 제거

* fix: 브랜치 최신화

* style: 불필요한 주석 제거

* style: 메소드 체이닝 개행 추가

* style: 필드 사이 개행 추가

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* refactor: 엔티티 조회 로직 메서드 분리

* refactor: null 아이디 검사 분기문 메서드 분리

* style: 메서드 체이닝 개행 추가

* fix: API 명세에 맞춰 API 수정

* feat: 채팅 가능한 시간이 초과한 경우 예외 처리 추가

* fix: 패키지 이동 반영 안되는 오류 수정

* !hotfix: 버그 리포팅을 위한 이슈 템플릿 추가

* !hotfix: 버그 리포팅용 이슈 템플릿의 설명을 조금 더 명확하게 변경

* !hotfix: 개발 도중 버그가 발생했을 때의 이슈 템플릿의 설명을 명확하게 변경

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* refactor: 엔티티 조회 로직 메서드 분리

* refactor: null 아이디 검사 분기문 메서드 분리

* style: 불필요한 주석 제거

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* refactor: 엔티티 조회 로직 메서드 분리

* refactor: null 아이디 검사 분기문 메서드 분리

* style: 메서드 체이닝 개행 추가

* style: 개행 추가

* refactor: 수신자가 메시지를 조회할 수 있도록 변경

* refactor: find 메서드 대신 repository 직접 조회하도록 변경

* refactor: 불변 리스트 반환하도록 수정

* 채팅방 신고 등록 및 조회 api 추가 (#262)

* feat: 채팅방 신고 엔티티 추가

* feat: 채팅방 신고 등록 레파지토리 추가

* style: 개행 추가

* feat: 채팅방 신고 등록 서비스 추가

* test: 채팅룸 신고 등록과 관련한 예외 테스트 추가

* feat: 채팅방 신고 권한 검증 로직 추가

* refactor: 메서드 네이밍을 명확하게 수정

* test: 잘못된 네이밍 수정

* style: 개행 추가

* feat: 채팅방 신고 등록 api 추가

* refactor: 신고 컨트롤러 클래스명 변경

* refactor: 경매 신고 조회 시 판매자 정보도 가져오도록 수정

* feat: 채팅방 신고 전체 목록 조회 서비스 추가

* feat: 채팅방 신고 전체 목록 조회 api 추가

* refactor: 메서드 명이 명확하도록 수정

* test: 채팅방 신고 전체 목록 조회 테스트 추가

* test: 경매 신과 관련 테스트 메서드명 명확하게 수정

* feat: 이미 신고한 채팅방을 신고하는 경우에 대한 검증 로직 추가

* feat: 채팅방 신고 엔티티 추가에 따른 flyway 스크립트 추가

* style: final 누락 추가

* style: 개행 추가

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* refactor: 엔티티 조회 로직 메서드 분리

* refactor: null 아이디 검사 분기문 메서드 분리

* style: 메서드 체이닝 개행 추가

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* refactor: 엔티티 조회 로직 메서드 분리

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* refactor: 엔티티 조회 로직 메서드 분리

* refactor: null 아이디 검사 분기문 메서드 분리

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* refactor: 엔티티 조회 로직 메서드 분리

* refactor: null 아이디 검사 분기문 메서드 분리

* style: 메서드 체이닝 개행 추가

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* refactor: 엔티티 조회 로직 메서드 분리

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* refactor: 엔티티 조회 로직 메서드 분리

* refactor: null 아이디 검사 분기문 메서드 분리

* refactor: lastMessageId 계산 로직 삭제

* style: 잘못된 개행 수정

* style: 잘못된 개행 수정

* feat: #258 로그아웃 api 추가 (#269)

* feat: 블랙리스트 토큰 엔티티 기능 추가

* feat: 블랙리스트 토큰 등록 및 조회 레포지토리 기능 추가

* test: 테스트 이름 변경

* feat: 블랙리스트 토큰 등록 및 조회 기능 추가

* feat: 인터셉터에서 블랙리스트에 등록한 AccessToken인지 검증하는 기능 추가

* feat: 로그아웃 api 기능 추가

* chore: BlackListToken 엔티티 관련 flyway script 추가

* refactor: 메서드 이름을 명확하게 변경

* style: 개행 추가

* chore: flyway script 버전 변경

* test: 인터셉터 설정 추가

* test: 누락된 인터셉터 설정 추가

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* refactor: 엔티티 조회 로직 메서드 분리

* refactor: null 아이디 검사 분기문 메서드 분리

* style: 메서드 체이닝 개행 추가

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* refactor: 엔티티 조회 로직 메서드 분리

* refactor: null 아이디 검사 분기문 메서드 분리

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* refactor: 엔티티 조회 로직 메서드 분리

* refactor: null 아이디 검사 분기문 메서드 분리

* style: 메서드 체이닝 개행 추가

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* refactor: 엔티티 조회 로직 메서드 분리

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* refactor: 엔티티 조회 로직 메서드 분리

* refactor: null 아이디 검사 분기문 메서드 분리

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* refactor: 엔티티 조회 로직 메서드 분리

* refactor: null 아이디 검사 분기문 메서드 분리

* style: 메서드 체이닝 개행 추가

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* refactor: 엔티티 조회 로직 메서드 분리

* feat: 특정 아이디 이후에 추가된 메시지 조회 기능 추가

* feat: 메시지 조회 API 추가

* style: 테스트 주석 추가

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

* test: 메시지 조회 시 잘못된 사용자에 대한 예외 테스트 추가

* refactor: 엔티티 조회 로직 메서드 분리

* refactor: null 아이디 검사 분기문 메서드 분리

* test: lastMessageId null인 경우 빈 배열이 담겨서 전달되는지 확인하는 코드 추가

* test: 적절한 변수를 사용하도록 수정

* fix: API 명세에 맞춰 예외 처리 추가

* fix: API 명세에 맞춰 응답값 변경

* refactor: 메서드 분리

* refactor: 빌더 삭제

* refactor: 메서드 분리 제거

* refactor: 메서드명 수정

* refactor: 메시지 조회 시 chatRoom fetch join하도록 수정

* style: 잘못된 개행 수정

* refactor: 인증/인가 연동

* test: 불필요한 주석 제거

* style: 개행 변경

---------

Co-authored-by: 지토 <[email protected]>
Co-authored-by: 제이미 <[email protected]>

* feat: #278 자동로그인 기능 서버 연동 (#279)

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

* feat: 자동로그인 기능 서버 연동

* refactor: #259 채팅방 목록 조회시 마지막 메세지 함께 반환 및 마지막 메시지가 최근인 순으로 정렬하도록 수정 (#276)

* rename: 중복된 dto 이름 변경

* refactor: 채팅방 dto에 담을 정보 수정

* perf: 채팅방 조회 시 querydsl 사용 및 쿼리 성능 개선

* feat: 채팅방 목록 조회시 마지막 메시지도 함께 보내는 기능 추가

* feat: 주어진 채팅방 아이디에 해당하는 채팅방에 있는 마지막 메시지를 조회하는 레포지토리 메서드에 queryDsl 적용

* feat: 채팅방 목록 조회 시 마지막 메시지가 최근인 순으로 정렬되도록 기능 추가

* refactor: 길이가 긴 메서드의 가독성 증진을 위한 메서드 분리

* style: 개행 수정

* fix: 충돌 해결 및 개행 추가

* refactor: #260 경매 상세 조회 시 채팅방 아이디와 채팅 가능 유저 여부 함께 전송하도록 수정 (#265)

* feat: 경매 상세 조회 시 채팅방 아이디와 채팅 가능 유저 여부 함께 전송하는 기능 추가

* refactor: 사용자와 경매 조회 시 예외를 한 번에 처리하도록 수정

* test: 경매 상세 조회 시 경매 정보와 사용자 정보를 찾을 수 없는 경우에 대한 누락된 테스트 추가

* style: 개행 추가 및 불필요한 개행 제거

* refactor: 메서드 파라미터에 Optional 사용하지 않도록 변경

* fix: merge로 인한 충돌 해결

* refactor: 판매자 또는 낙찰자인자 판단할 때 현재시간을 주입받도록 수정

* style: 개행 추가

* rename: dto 이름 명확하게 수정

* style: 개행 수정

* !hotfix: 채팅방 생성 시 채팅방 아이디 바디로 넘기도록 수정 (#283)

* fix: 앱에서 나갔다가 돌아왔을 때 경매 목록 캐시가 남아있는 문제 해결

* feat: #282 회원 탈퇴 api 추가 (#284)

* feat: 회원 엔티티에 회원탈퇴 기능 추가

* feat: 회원탈퇴하지 않은 회원을 조회하는 기능 추가

* feat: 회원 탈퇴 기능 추가

* feat: 회원 탈퇴 api 추가

* feat: 회원 탈퇴 여부 확인 기능 추가

* feat: 회원 탈퇴 여부 확인 기능 추가

* chore: 회원 탈퇴 관련 flyway script 추가

* feat: 인증 & 인가 작업 시 탈퇴된 회원인지 검증하는 로직 추가

* feat: #285 개인정보처리방침 추가 (#288)

* feat: 개인정보처리방침 버튼 레이아웃 추가

* feat: 개인정보처리방침 노션 링크 웹페이지로 이동하는 기능 추가

* feat: #286 신고하기 및 쪽지방 정보 Dto 서버랑 안맞는 버그 수정 (#289)

* fix: 신고하기 레트로핏 메소드에 바디 어노테이션 추가

* fix: 쪽지방 정보 dto 추가

* refactor: 쪽지방에서 경매id로 신고하기 기능 추가

* !hotfix: flyway script 수정 (#291)

* docs: #277 신고 api 문서화 (#281)

* test: restdocs 적용

* docs: 신고 관련 문서화 추가

* ci: 머지로 인한 충돌 해결

* feat: #292 모니터링 설정 (#292)

* chore: 모니터링 의존성 추가

* feat: 모니터링 설정 추가

* refactor: 개인정보처리방침 url 코드에서 숨김

* docs: #280 경매 api 문서 최신화, 인증 & 인가 api 문서화 (#295)

* docs: 인증 & 인가 관련 api 문서화

* docs: 경매 관련 api 문서 최신화

* docs: #298 경매 상세 조회 api 응답 필드 추가 (#299)

* feat: 경매 상세 조회 시 자신이 등록한 경매인지 판단하는 로직 추가

* docs: 경매 상세 조회 api 문서 최신화

* chore: #301 운영 서버 관련 script 변경 (#302)

* chore: 운영 서버 script 수정

* chore: flyway version 5 script 수정

* feat: #297 경매 상세 페이지 경매 삭제 기능 추가 (#300)

* feat: 삭제 버튼과 뷰모델 연결

* feat: 나의 경매인지 확인하는 변수 추가

* feat: 나의 경매 여부에 따른 visibility 조정

* feat: 경매 삭제 레포지토리 함수 작성

* feat: 뷰모델과 레포지토리 함수 연결

* refactor: 함수명 변경

* refactor: 삭제 확인 다이얼로그에 negative String Id 추가

* refactor: 글자가 길어졌을 때 아이콘과 겹치지 않도록 수정

* refactor: 글자가 길어졌을 때 아이콘과 겹치지 않도록 수정

* refactor: 글자가 길어졌을 때 아이콘과 겹치지 않도록 수정

* refactor: 로딩 실패 예외처리

* refactor: remove에서 delete로 네이밍 변경

* refactor: remove에서 delete로 네이밍 변경

* refactor: remove에서 delete로 네이밍 변경

* feat: #304 마지막 메시지 위치로 리사이클러뷰 위치 이동되는 기능 및 메시지 입력 소프트 키보드 올라올 때 툴바 보이도록 수정 (#306)

* refactor: 소프트 키보드 올라올 때, 리사이클러뷰 스크롤 상태 유지된 상태로 액티비티 조정되도록 수정

* refactor: 메시지 목록 업데이트 될 때, 스크롤 상태 마지막 위치로 이동하는 콜백 추가

* refactor: 툴바 적용

* deploy: 시맨틱 버저닝 적용

* refactor: 사용하지 않는 기능 버튼 숨김 처리

* deploy: 시맨틱 버저닝 적용

* docs: #293 채팅 api 문서화 (#296)

* 채팅 api 문서화

* docs: 채팅 api 문서화 request-headers 추가 및 항목 순서 변경

* docs: merge로 인한 충돌 해결

* fix: 빌드 후 변경사항 적용

* refactor: #303 경매가 종료되지 않았다면 판매자이더라도 채팅 가능한 유저인지 정보에 false를 반환하도록 수정 (#305)

* deploy: 난독화 적용

* feat: #309 서버로부터 가져온 프로필 정보 화면에 띄워주는 기능 추가 (#312)

* refactor: #325 입찰 예외처리 리팩토링 (#326)

* refactor: 판매자 입찰 불가 에러 처리 추가

* refactor: 첫 입찰자의 시작금액을 시작금액이상으로 가능하게 수정

* refactor: 내 경매면 경매 하단 버튼 상세 문구 수정

* fix: #327 토큰 자동 갱신 시 응답 안 닫고 다음 요청을 보내던 버그 수정 (#328)

* fix: 입찰 금액 입력 최댓값 수정

* fix: 경매 등록 여러번 되는 문제 방지

* feat: 경매 등록 실패 시 스낵바 메시지 노출

* feat: 경매 입찰 시 일정 단위를 벗어날 경우 서버에서 받는 메시지를 출력하는 기능 추가

* design: 마감기한 텍스트 뷰 위치를 시작 가격 옆으로 조정

* design: 프로필 이미지 뷰에 디폴트 이미지 적용

* fix: 경매 상세 페이지가 한 번에 여러개 생성되지 않도록 수정

* design: 경매 상세 화면 판매자 프로필 외곽을 둥글게 수정

* feat: 활성화된 쪽지방이 없으면 쪽지방 프래그먼트에 보여줄 문구 추가

* fix: 경매 상세와 쪽지방이 무한히 중첩되는 버그 수정

* refactor: 버전 수정

---------

Co-authored-by: mendel <[email protected]>
Co-authored-by: swonny <[email protected]>
Co-authored-by: apptie <[email protected]>
Co-authored-by: kwonyj1022 <[email protected]>
Co-authored-by: Gloria <[email protected]>
Co-authored-by: Song Hyemin <[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