-
Notifications
You must be signed in to change notification settings - Fork 6
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
참여자 닉네임 생성, 모임의 참여자 조회 기능 생성 #96
Changes from 4 commits
e82cd1e
84d8ec7
6b6c535
85c400e
7911373
2ad4b4d
1f8655d
60666b2
3984e66
122178b
2968d2a
1e54ed8
6de6293
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
package mouda.backend.member.domain; | ||
|
||
import jakarta.persistence.Entity; | ||
import jakarta.persistence.FetchType; | ||
import jakarta.persistence.GeneratedValue; | ||
import jakarta.persistence.GenerationType; | ||
import jakarta.persistence.Id; | ||
import jakarta.persistence.ManyToOne; | ||
import lombok.Builder; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import mouda.backend.moim.domain.Moim; | ||
|
||
@Entity | ||
@Getter | ||
@NoArgsConstructor | ||
public class Member { | ||
|
||
@Id | ||
@GeneratedValue(strategy = GenerationType.IDENTITY) | ||
private Long id; | ||
|
||
private String nickName; | ||
|
||
@ManyToOne(fetch = FetchType.LAZY) | ||
private Moim moim; | ||
Comment on lines
+25
to
+26
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 한 명의 사람이 하나의 모임에만 참여할 수 있는 구조인데, There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 아, 현재 로그인 기능이 구현되어있지 않아서 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 지금 멤버가 계속 생성되는 상황에서 아니네요 핫핫 |
||
|
||
@Builder | ||
public Member(String nickName) { | ||
this.nickName = nickName; | ||
} | ||
|
||
public void joinMoim(Moim moim) { | ||
this.moim = moim; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package mouda.backend.member.repository; | ||
|
||
import java.util.List; | ||
|
||
import org.springframework.data.jpa.repository.JpaRepository; | ||
import org.springframework.data.jpa.repository.Query; | ||
|
||
import mouda.backend.member.domain.Member; | ||
|
||
public interface MemberRepository extends JpaRepository<Member, Long> { | ||
|
||
@Query("SELECT m.nickName FROM Member m WHERE m.moim.id = :moimId") | ||
List<String> findNickNamesByMoimId(long moimId); | ||
} |
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -1,6 +1,7 @@ | ||||||
package mouda.backend.moim.dto.request; | ||||||
|
||||||
public record MoimJoinRequest( | ||||||
Long moimId | ||||||
Long moimId, | ||||||
String nickName | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 눈썰미 미쳐버렸다 |
||||||
) { | ||||||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,6 +2,7 @@ | |
|
||
import java.time.LocalDate; | ||
import java.time.LocalTime; | ||
import java.util.List; | ||
|
||
import lombok.Builder; | ||
import mouda.backend.moim.domain.Moim; | ||
|
@@ -15,10 +16,11 @@ public record MoimDetailsFindResponse( | |
int currentPeople, | ||
int maxPeople, | ||
String authorNickname, | ||
String description | ||
String description, | ||
List<String> participants | ||
) { | ||
|
||
public static MoimDetailsFindResponse toResponse(Moim moim) { | ||
public static MoimDetailsFindResponse toResponse(Moim moim, List<String> participants) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 모임 객체에 |
||
return MoimDetailsFindResponse.builder() | ||
.title(moim.getTitle()) | ||
.date(moim.getDate()) | ||
|
@@ -28,6 +30,7 @@ public static MoimDetailsFindResponse toResponse(Moim moim) { | |
.maxPeople(moim.getMaxPeople()) | ||
.authorNickname(moim.getAuthorNickname()) | ||
.description(moim.getDescription()) | ||
.participants(participants) | ||
.build(); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,6 +7,8 @@ | |
import org.springframework.transaction.annotation.Transactional; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import mouda.backend.member.domain.Member; | ||
import mouda.backend.member.repository.MemberRepository; | ||
import mouda.backend.moim.domain.Moim; | ||
import mouda.backend.moim.dto.request.MoimCreateRequest; | ||
import mouda.backend.moim.dto.request.MoimJoinRequest; | ||
|
@@ -24,6 +26,8 @@ public class MoimService { | |
|
||
private final MoimRepository moimRepository; | ||
|
||
private final MemberRepository memberRepository; | ||
|
||
public Moim createMoim(MoimCreateRequest moimCreateRequest) { | ||
return moimRepository.save(moimCreateRequest.toEntity()); | ||
} | ||
|
@@ -43,12 +47,18 @@ public MoimDetailsFindResponse findMoimDetails(long id) { | |
Moim moim = moimRepository.findById(id) | ||
.orElseThrow(() -> new MoimException(HttpStatus.NOT_FOUND, MoimErrorMessage.NOT_FOUND)); | ||
|
||
return MoimDetailsFindResponse.toResponse(moim); | ||
List<String> participants = memberRepository.findNickNamesByMoimId(id); | ||
|
||
return MoimDetailsFindResponse.toResponse(moim, participants); | ||
} | ||
|
||
public void joinMoim(MoimJoinRequest moimJoinRequest) { | ||
Member member = new Member(moimJoinRequest.nickName()); | ||
|
||
Moim moim = moimRepository.findById(moimJoinRequest.moimId()) | ||
.orElseThrow(() -> new MoimException(HttpStatus.NOT_FOUND, MoimErrorMessage.NOT_FOUND)); | ||
member.joinMoim(moim); | ||
memberRepository.save(member); | ||
moim.join(); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
이건 이전 작업이니 여유가 되면 같이 논의해봐용😊 |
||
} | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
package mouda.backend.member.repository; | ||
|
||
import java.util.List; | ||
|
||
import org.assertj.core.api.Assertions; | ||
import org.junit.jupiter.api.DisplayName; | ||
import org.junit.jupiter.api.Test; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.boot.test.context.SpringBootTest; | ||
|
||
import mouda.backend.member.domain.Member; | ||
import mouda.backend.moim.domain.Moim; | ||
import mouda.backend.moim.repository.MoimRepository; | ||
|
||
@SpringBootTest | ||
class MemberRepositoryTest { | ||
|
||
@Autowired | ||
private MemberRepository memberRepository; | ||
|
||
@Autowired | ||
private MoimRepository moimRepository; | ||
|
||
@DisplayName("모임에 가입된 맴버의 이름을 반환한다.") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. DisplayName이 참여자 수 검증하는 부분(Assertions)과 어울리지 않는 것 같아요! 저는 참여자의 수를 확인한다는 느낌을 받았습니당 어떻게 생각하세요? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. DisplayName을 수정해 보겠씁니다! |
||
@Test | ||
void findNickNamesByMoimId() { | ||
Member member = new Member("tehah"); | ||
Moim moim = new Moim().builder() | ||
.build(); | ||
Moim saveMoim = moimRepository.save(moim); | ||
member.joinMoim(moim); | ||
memberRepository.save(member); | ||
|
||
List<String> participants = memberRepository.findNickNamesByMoimId(saveMoim.getId()); | ||
|
||
Assertions.assertThat(participants.size()).isEqualTo(1); | ||
} | ||
|
||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nickname이 하나의 단어지 않나요? 카멜 케이스 적용하는 게 맞는 가 궁금하네요!