Skip to content

Commit f5c5247

Browse files
committed
feat: 카테고리 상세조회 기능 구현
1 parent e2aa4d7 commit f5c5247

4 files changed

Lines changed: 41 additions & 1 deletion

File tree

api/src/main/java/com/pinback/api/category/controller/CategoryControllerV3.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.pinback.api.category.controller;
22

3+
import org.springframework.web.bind.annotation.GetMapping;
34
import org.springframework.web.bind.annotation.PatchMapping;
45
import org.springframework.web.bind.annotation.PathVariable;
56
import org.springframework.web.bind.annotation.PostMapping;
@@ -9,9 +10,11 @@
910

1011
import com.pinback.api.category.dto.request.CreateCategoryRequestV3;
1112
import com.pinback.api.category.dto.request.UpdateCategoryRequestV3;
13+
import com.pinback.application.category.dto.response.CategoryDetailResponseV3;
1214
import com.pinback.application.category.dto.response.CreateCategoryResponseV3;
1315
import com.pinback.application.category.dto.response.UpdateCategoryResponseV3;
1416
import com.pinback.application.category.port.in.CreateCategoryPort;
17+
import com.pinback.application.category.port.in.GetCategoryPort;
1518
import com.pinback.application.category.port.in.UpdateCategoryPort;
1619
import com.pinback.domain.user.entity.User;
1720
import com.pinback.shared.annotation.CurrentUser;
@@ -30,6 +33,7 @@
3033
public class CategoryControllerV3 {
3134
private final CreateCategoryPort createCategoryPort;
3235
private final UpdateCategoryPort updateCategoryPort;
36+
private final GetCategoryPort getCategoryPort;
3337

3438
@Operation(summary = "카테고리 생성 V3", description = "공개여부 설정을 추가하여 새로운 카테고리를 생성합니다")
3539
@PostMapping
@@ -51,4 +55,15 @@ public ResponseDto<UpdateCategoryResponseV3> updateCategoryV3(
5155
UpdateCategoryResponseV3 response = updateCategoryPort.updateCategoryV3(user, categoryId, request.toCommand());
5256
return ResponseDto.ok(response);
5357
}
58+
59+
@Operation(summary = "카테고리 상세 조회 V3", description = "공개여부를 포함하여 대시보드에서 사용할 카테고리 정보를 조회합니다")
60+
@GetMapping("/{categoryId}")
61+
public ResponseDto<CategoryDetailResponseV3> getCategoriesForDashboardV3(
62+
@Parameter(hidden = true) @CurrentUser User user,
63+
@Parameter(description = "카테고리 ID") @PathVariable Long categoryId
64+
) {
65+
CategoryDetailResponseV3 response = getCategoryPort.getCategoryDetail(user, categoryId);
66+
return ResponseDto.ok(response);
67+
68+
}
5469
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.pinback.application.category.dto.response;
2+
3+
import com.pinback.domain.category.entity.Category;
4+
5+
public record CategoryDetailResponseV3(
6+
long categoryId,
7+
String categoryName,
8+
boolean isPublic
9+
) {
10+
public static CategoryDetailResponseV3 from(Category category) {
11+
return new CategoryDetailResponseV3(category.getId(), category.getName(), category.getIsPublic());
12+
}
13+
}

application/src/main/java/com/pinback/application/category/port/in/GetCategoryPort.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22

33
import com.pinback.application.category.dto.response.CategoriesForDashboardResponse;
44
import com.pinback.application.category.dto.response.CategoriesForExtensionResponse;
5+
import com.pinback.application.category.dto.response.CategoryDetailResponseV3;
56
import com.pinback.domain.category.entity.Category;
67
import com.pinback.domain.user.entity.User;
78

89
public interface GetCategoryPort {
910
CategoriesForExtensionResponse getAllCategoriesForExtension(User user);
1011

1112
CategoriesForDashboardResponse getAllCategoriesForDashboard(User user);
12-
13+
1314
Category getCategoryAndUser(long categoryId, User user);
15+
16+
CategoryDetailResponseV3 getCategoryDetail(User user, Long categoryId);
1417
}

application/src/main/java/com/pinback/application/category/usecase/query/GetCategoryUsecase.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.pinback.application.category.dto.response.CategoriesForDashboardResponse;
1212
import com.pinback.application.category.dto.response.CategoriesForExtensionResponse;
1313
import com.pinback.application.category.dto.response.CategoryDashboardResponse;
14+
import com.pinback.application.category.dto.response.CategoryDetailResponseV3;
1415
import com.pinback.application.category.dto.response.CategoryResponse;
1516
import com.pinback.application.category.port.in.GetCategoryPort;
1617
import com.pinback.application.category.port.out.CategoryGetServicePort;
@@ -62,4 +63,12 @@ public CategoriesForDashboardResponse getAllCategoriesForDashboard(User user) {
6263
public Category getCategoryAndUser(long categoryId, User user) {
6364
return categoryGetServicePort.getCategoryAndUser(categoryId, user);
6465
}
66+
67+
@Override
68+
public CategoryDetailResponseV3 getCategoryDetail(User user, Long categoryId) {
69+
Category category = categoryGetServicePort.getCategoryAndUser(categoryId, user);
70+
71+
return CategoryDetailResponseV3.from(category);
72+
}
73+
6574
}

0 commit comments

Comments
 (0)