Skip to content

Commit

Permalink
feat: 요청으로 받은 문자열이 포함된 태그를 가진 멤버 찾는 API 구현 (#51)
Browse files Browse the repository at this point in the history
  • Loading branch information
soyesenna authored Nov 12, 2024
1 parent 72f102c commit a6c5943
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import com.leets.team2.xclone.common.ApiData;
import com.leets.team2.xclone.domain.member.dto.requests.CheckTagDuplicationGetRequest;
import com.leets.team2.xclone.domain.member.dto.requests.MemberFindGetRequest;
import com.leets.team2.xclone.domain.member.dto.responses.CheckTagDuplicationGetResponse;
import com.leets.team2.xclone.domain.member.dto.responses.MemberFindGetResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
Expand All @@ -15,4 +17,8 @@ public interface MemberController {
@ApiResponse(responseCode = "200", description = "태그 중복확인 성공", content = @Content(schema = @Schema(implementation = CheckTagDuplicationGetResponse.class)))
ResponseEntity<ApiData<CheckTagDuplicationGetResponse>> getCheckTagDuplication(
CheckTagDuplicationGetRequest request);

@Operation(summary = "멤버 정보 가져오기 API", description = "Tag로 멤버 정보를 가져옵니다.")
@ApiResponse(responseCode = "200", description = "멤버 정보 가져오기 성공", content = @Content(schema = @Schema(implementation = MemberFindGetResponse.class)))
ResponseEntity<ApiData<MemberFindGetResponse>> getMember(MemberFindGetRequest request);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import com.leets.team2.xclone.common.ApiData;
import com.leets.team2.xclone.domain.member.dto.requests.CheckTagDuplicationGetRequest;
import com.leets.team2.xclone.domain.member.dto.requests.MemberFindGetRequest;
import com.leets.team2.xclone.domain.member.dto.responses.CheckTagDuplicationGetResponse;
import com.leets.team2.xclone.domain.member.dto.responses.MemberFindGetResponse;
import com.leets.team2.xclone.domain.member.service.MemberService;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
Expand All @@ -27,4 +29,13 @@ public ResponseEntity<ApiData<CheckTagDuplicationGetResponse>> getCheckTagDuplic
CheckTagDuplicationGetResponse.of(this.memberService.checkMemberExistsBy(request.tag()))
);
}

@Override
@GetMapping
public ResponseEntity<ApiData<MemberFindGetResponse>> getMember(
@ModelAttribute MemberFindGetRequest request) {
return ApiData.ok(
this.memberService.findMembersByTag(request.tag())
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.leets.team2.xclone.domain.member.dto.requests;

import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;

public record MemberFindGetRequest(
@NotNull(message = "tag는 필수입니다.")
@NotEmpty(message = "tag는 필수입니다.")
String tag
) {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.leets.team2.xclone.domain.member.dto.responses;

import com.leets.team2.xclone.domain.member.entities.Member;
import java.util.ArrayList;
import java.util.List;

public record MemberFindGetResponse(
List<MemberInfo> memberInfo
) {

public static MemberFindGetResponse empty() {
return new MemberFindGetResponse(new ArrayList<>());
}

record MemberInfo(
String tag,
String birthDate,
String nickname,
String introduction
) {
public static MemberInfo of(Member member) {
return new MemberInfo(
member.getTag(),
member.getBirthDate().toString(),
member.getNickname(),
member.getIntroduction()
);
}
}

public void add(Member member) {
this.memberInfo.add(MemberInfo.of(member));
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.leets.team2.xclone.domain.member.repository;

import com.leets.team2.xclone.domain.member.entities.Member;
import java.util.List;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
Expand All @@ -15,4 +16,6 @@ public interface MemberRepository extends JpaRepository<Member, Long> {

boolean existsByKakaoId(Long kakaoId);
Optional<Member> findByKakaoId(Long kakaoId);

List<Member> findByTagContaining(String tag);
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package com.leets.team2.xclone.domain.member.service;

import com.leets.team2.xclone.domain.member.dto.responses.MemberFindGetResponse;
import com.leets.team2.xclone.domain.member.entities.Member;
import com.leets.team2.xclone.domain.member.repository.MemberRepository;
import com.leets.team2.xclone.exception.NoSuchMemberException;
import java.util.List;
import java.util.Optional;
import lombok.RequiredArgsConstructor;
import org.apache.commons.logging.Log;
Expand Down Expand Up @@ -47,4 +49,11 @@ public Member findMemberByTag(String tag){
return this.memberRepository.findByTag(tag).orElseThrow(
NoSuchMemberException::new);
}

public MemberFindGetResponse findMembersByTag(String tag) {
MemberFindGetResponse memberFindGetResponse = MemberFindGetResponse.empty();

this.memberRepository.findByTagContaining(tag).forEach(memberFindGetResponse::add);
return memberFindGetResponse;
}
}

0 comments on commit a6c5943

Please sign in to comment.