-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[OING-62] feat: 가족 구성원 Profile 조회 API 설계 (#29)
* feat: add FamilyMemberProfileResponse DTO * feat: add getFamilyMemberProfile API * test: add FamilyMemberProfileResponseTest * refactor: move getFamilyMemberProfile to member module * refactor: move FamilyMemberProfileResponse to member module * style: delete unused file * feat: add Pagination Response and DTO * refactor: cherry-pick PaginationDTO --------- Co-authored-by: ChuYong <[email protected]>
- Loading branch information
Showing
4 changed files
with
94 additions
and
20 deletions.
There are no files selected for viewing
36 changes: 28 additions & 8 deletions
36
member/src/main/java/com/oing/controller/MemberController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,34 @@ | ||
package com.oing.controller; | ||
|
||
import com.oing.service.MemberService; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
import com.oing.dto.response.FamilyMemberProfileResponse; | ||
import com.oing.dto.response.PaginationResponse; | ||
import com.oing.restapi.MemberApi; | ||
import org.springframework.stereotype.Controller; | ||
|
||
@RestController | ||
@RequiredArgsConstructor | ||
public class MemberController { | ||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
private final MemberService memberService; | ||
@Controller | ||
public class MemberController implements MemberApi { | ||
|
||
@Override | ||
public PaginationResponse<FamilyMemberProfileResponse> getFamilyMemberProfile(Integer page, Integer size) { | ||
String memberIdBase = "01HGW2N7EHJVJ4CJ999RRS2E"; | ||
String memberNameBase = "디프만"; | ||
|
||
List<FamilyMemberProfileResponse> mockResponses = new ArrayList<>(); | ||
for(int i = 0; i < size; i++) { | ||
int currentIndex = i + ((page - 1) * size); | ||
String suffix = String.format("%02d", currentIndex); | ||
mockResponses.add( | ||
new FamilyMemberProfileResponse( | ||
memberIdBase + suffix, | ||
memberNameBase + suffix, | ||
"https://picsum.photos/200/300?random=" + currentIndex | ||
) | ||
); | ||
} | ||
|
||
return new PaginationResponse<>(page, 3, size, mockResponses); | ||
} | ||
} |
16 changes: 16 additions & 0 deletions
16
member/src/main/java/com/oing/dto/response/FamilyMemberProfileResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package com.oing.dto.response; | ||
|
||
import io.swagger.v3.oas.annotations.media.Schema; | ||
|
||
@Schema(description = "가족 구성원 프로필 응답") | ||
public record FamilyMemberProfileResponse( | ||
@Schema(description = "구성원 ID", example = "1") | ||
String memberId, | ||
|
||
@Schema(description = "구성원 이름", example = "디프만") | ||
String name, | ||
|
||
@Schema(description = "구성원 프로필 이미지 주소", example = "https://asset.no5ing.kr/post/01HGW2N7EHJVJ4CJ999RRS2E97") | ||
String imageUrl | ||
) { | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,34 @@ | ||
package com.oing.restapi; | ||
|
||
import com.oing.dto.response.MemberResponse; | ||
import com.oing.dto.response.FamilyMemberProfileResponse; | ||
import com.oing.dto.response.PaginationResponse; | ||
import io.swagger.v3.oas.annotations.Operation; | ||
import io.swagger.v3.oas.annotations.Parameter; | ||
import io.swagger.v3.oas.annotations.tags.Tag; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.PathVariable; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
import jakarta.validation.Valid; | ||
import jakarta.validation.constraints.Min; | ||
import org.springframework.web.bind.annotation.*; | ||
import com.oing.dto.response.MemberResponse; | ||
|
||
/** | ||
* no5ing-server | ||
* User: CChuYong | ||
* Date: 12/7/23 | ||
* Time: 6:01 PM | ||
*/ | ||
@Tag(name = "멤버 API", description = "멤버(사용자) 관련 API") | ||
@Tag(name = "회원 API", description = "회원 관련 API") | ||
@RestController | ||
@Valid | ||
@RequestMapping("/v1/members") | ||
public interface MemberApi { | ||
@Operation(summary = "가족 구성원 프로필 조회", description = "가족 구성원 프로필을 조회합니다.") | ||
@GetMapping(value = "/profile", params = {"type=FAMILY"}) | ||
PaginationResponse<FamilyMemberProfileResponse> getFamilyMemberProfile( | ||
@RequestParam(required = false, defaultValue = "1") | ||
@Parameter(description = "가져올 현재 페이지", example = "1") | ||
@Min(value = 1) | ||
Integer page, | ||
|
||
@RequestParam(required = false, defaultValue = "10") | ||
@Parameter(description = "가져올 페이지당 크기", example = "10") | ||
@Min(value = 1) | ||
Integer size | ||
); | ||
|
||
@GetMapping("/{memberId}") | ||
MemberResponse getMember(@PathVariable String memberId); | ||
} |
26 changes: 26 additions & 0 deletions
26
member/src/test/java/com/oing/dto/response/FamilyMemberProfileResponseTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
package com.oing.dto.response; | ||
|
||
import org.junit.jupiter.api.DisplayName; | ||
import org.junit.jupiter.api.Test; | ||
|
||
import static org.junit.jupiter.api.Assertions.assertEquals; | ||
|
||
public class FamilyMemberProfileResponseTest { | ||
@DisplayName("FamilyMemberProfileResponse 생성 테스트") | ||
@Test | ||
void testFamilyMemberProfileResponse() { | ||
// given | ||
String memberId = "1"; | ||
String name = "디프만"; | ||
String imageUrl = "https://asset.no5ing.kr/post/01HGW2N7EHJVJ4CJ999RRS2E97"; | ||
|
||
// when | ||
FamilyMemberProfileResponse response = new FamilyMemberProfileResponse(memberId, name, imageUrl); | ||
|
||
// then | ||
assertEquals(response.memberId(), memberId); | ||
assertEquals(response.name(), name); | ||
assertEquals(response.imageUrl(), imageUrl); | ||
} | ||
|
||
} |