Skip to content

Commit b518206

Browse files
committed
update: 상품 조회 API 수정
**AS-IS** - 정렬 조회만 가능 **TO-BE** - 필터 및 정렬 조회 가능
1 parent 80e1d41 commit b518206

2 files changed

Lines changed: 15 additions & 2 deletions

File tree

apps/commerce-api/src/main/java/com/loopers/infrastructure/product/ProductRepositoryImpl.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public List<Product> findAll() {
4141

4242
@Override
4343
public List<Product> searchProductsByCondition(ProductV1Dto.SearchProductRequest request) {
44-
System.out.println("sortBy = " + request.sortCondition().sortBy());
44+
4545
boolean isAsc = request.sortCondition().order().equals("asc");
4646

4747
JPAQuery<Product> query = queryFactory
@@ -50,6 +50,10 @@ public List<Product> searchProductsByCondition(ProductV1Dto.SearchProductRequest
5050
.on(product.id.eq(like.productId))
5151
.groupBy(product.id);
5252

53+
switch (request.filterCondition().filterBy()) {
54+
case "brandId" -> query.where(product.brandId.eq(request.filterCondition().filterValue()));
55+
}
56+
5357

5458
switch (request.sortCondition().sortBy()) {
5559
case "price" -> query.orderBy(isAsc ? product.price.asc() : product.price.desc());

apps/commerce-api/src/main/java/com/loopers/interfaces/api/product/ProductV1Dto.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,16 @@ public Product toEntity() {
3232
}
3333
}
3434

35-
public record SearchProductRequest(SortCondition sortCondition) {
35+
public record SearchProductRequest(FilterCondition filterCondition, SortCondition sortCondition) {
36+
public record FilterCondition(String filterBy, Long filterValue) {
37+
public void conditionValidate() {
38+
if (!filterBy.equals("brandId")) {
39+
throw new CoreException(ErrorType.BAD_REQUEST, "유효하지 않은 필터 조건입니다.");
40+
}
41+
}
42+
43+
}
44+
3645
public record SortCondition(String sortBy, String order) {
3746
public void conditionValidate() {
3847
if (!sortBy.equals("price") && !sortBy.equals("likeCount") && !sortBy.equals("createdAt")) {

0 commit comments

Comments
 (0)