diff --git a/src/main/java/com/ku/covigator/controller/TravelStyleController.java b/src/main/java/com/ku/covigator/controller/TravelStyleController.java index 11986f5..a9f6bd7 100644 --- a/src/main/java/com/ku/covigator/controller/TravelStyleController.java +++ b/src/main/java/com/ku/covigator/controller/TravelStyleController.java @@ -23,7 +23,7 @@ public class TravelStyleController { @PostMapping public ResponseEntity saveTravelStyle(@Parameter(hidden = true) @LoggedInMemberId Long memberId, @RequestBody PostTravelStyleRequest request) { - travelStyleService.saveTravelStyle(memberId, request.toEntity()); + travelStyleService.saveTravelStyle(memberId, request.toEntity(), request.gender()); return ResponseEntity.ok().build(); } diff --git a/src/main/java/com/ku/covigator/domain/member/Gender.java b/src/main/java/com/ku/covigator/domain/member/Gender.java new file mode 100644 index 0000000..047cbee --- /dev/null +++ b/src/main/java/com/ku/covigator/domain/member/Gender.java @@ -0,0 +1,8 @@ +package com.ku.covigator.domain.member; + +import lombok.Getter; + +@Getter +public enum Gender { + MALE, FEMALE +} diff --git a/src/main/java/com/ku/covigator/domain/member/Member.java b/src/main/java/com/ku/covigator/domain/member/Member.java index 7f4eb98..419ff98 100644 --- a/src/main/java/com/ku/covigator/domain/member/Member.java +++ b/src/main/java/com/ku/covigator/domain/member/Member.java @@ -31,6 +31,10 @@ public class Member extends BaseTime { @Column(name = "phone_number") private String phoneNumber; + @Column(name = "gender") + @Enumerated(value = EnumType.STRING) + private Gender gender; + @Column(name = "password") private String password; @@ -88,4 +92,8 @@ public void updateNickname(String nickname) { this.nickname = nickname; } + public void updateGender(Gender gender) { + this.gender = gender; + } + } diff --git a/src/main/java/com/ku/covigator/dto/request/PostTravelStyleRequest.java b/src/main/java/com/ku/covigator/dto/request/PostTravelStyleRequest.java index 959abc2..fd6e3e5 100644 --- a/src/main/java/com/ku/covigator/dto/request/PostTravelStyleRequest.java +++ b/src/main/java/com/ku/covigator/dto/request/PostTravelStyleRequest.java @@ -2,13 +2,14 @@ import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.databind.annotation.JsonNaming; +import com.ku.covigator.domain.member.Gender; import com.ku.covigator.domain.travelstyle.*; import lombok.Builder; @Builder @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) public record PostTravelStyleRequest(AreaType areaType, Familiarity familiarity, ActivityType activityType, - PlanningType planningType, PhotoPriority photoPriority, Popularity popularity) { + PlanningType planningType, PhotoPriority photoPriority, Popularity popularity, Gender gender) { public TravelStyle toEntity() { return TravelStyle.builder() diff --git a/src/main/java/com/ku/covigator/service/TravelStyleService.java b/src/main/java/com/ku/covigator/service/TravelStyleService.java index c5ef8c1..a3c5e8f 100644 --- a/src/main/java/com/ku/covigator/service/TravelStyleService.java +++ b/src/main/java/com/ku/covigator/service/TravelStyleService.java @@ -1,5 +1,6 @@ package com.ku.covigator.service; +import com.ku.covigator.domain.member.Gender; import com.ku.covigator.domain.member.Member; import com.ku.covigator.domain.travelstyle.TravelStyle; import com.ku.covigator.exception.notfound.NotFoundMemberException; @@ -17,17 +18,18 @@ public class TravelStyleService { private final TravelStyleRepository travelStyleRepository; private final MemberRepository memberRepository; - public void saveTravelStyle(Long memberId, TravelStyle travelStyle) { + public void saveTravelStyle(Long memberId, TravelStyle travelStyle, Gender gender) { TravelStyle savedTravelStyle = travelStyleRepository.save(travelStyle); Member savedMember = memberRepository.findById(memberId).orElseThrow(NotFoundMemberException::new); savedMember.putTravelStyle(savedTravelStyle); + savedMember.updateGender(gender); } public void updateTravelStyle(Long memberId, TravelStyle travelStyle) { Member savedMember = memberRepository.findById(memberId).orElseThrow(NotFoundMemberException::new); // 여행 스타일 정보가 없으면 새로 저장한다. if(savedMember.getTravelStyle() == null) { - saveTravelStyle(memberId, travelStyle); + saveTravelStyle(memberId, travelStyle, null); } // 여행 스타일 정보가 저장되어 있으면 수정한다. savedMember.updateTravelStyle(travelStyle); diff --git a/src/test/java/com/ku/covigator/service/TravelStyleServiceTest.java b/src/test/java/com/ku/covigator/service/TravelStyleServiceTest.java index 4510fbb..c8bc44f 100644 --- a/src/test/java/com/ku/covigator/service/TravelStyleServiceTest.java +++ b/src/test/java/com/ku/covigator/service/TravelStyleServiceTest.java @@ -1,5 +1,6 @@ package com.ku.covigator.service; +import com.ku.covigator.domain.member.Gender; import com.ku.covigator.domain.member.Member; import com.ku.covigator.domain.member.Platform; import com.ku.covigator.domain.travelstyle.*; @@ -43,7 +44,7 @@ void saveTravelStyle() { memberRepository.save(member); //when - travelStyleService.saveTravelStyle(member.getId(), travelStyle); + travelStyleService.saveTravelStyle(member.getId(), travelStyle, Gender.MALE); List travelStyles = travelStyleRepository.findAll(); TravelStyle savedTravelStyle = travelStyles.get(0); Member savedMember = memberRepository.findById(member.getId()).get(); @@ -51,6 +52,7 @@ void saveTravelStyle() { //then assertAll( () -> assertThat(savedTravelStyle.getId()).isEqualTo(travelStyle.getId()), + () -> assertThat(savedMember.getGender()).isEqualTo(Gender.MALE), () -> assertThat(savedMember.getTravelStyle()).usingRecursiveComparison().isEqualTo(travelStyle) ); } @@ -62,7 +64,7 @@ void saveTravelStyleFailsWhenNoMemberExists() { TravelStyle travelStyle = createTravelStyle(); //when //then - assertThatThrownBy(() -> travelStyleService.saveTravelStyle(1L, travelStyle)) + assertThatThrownBy(() -> travelStyleService.saveTravelStyle(1L, travelStyle, null)) .isInstanceOf(NotFoundMemberException.class); }