Skip to content

Commit

Permalink
Feat: 식재료 이름으로 검색하여 소비기한 여유순으로 조회 API 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
ParkJh38 committed Feb 12, 2025
1 parent 5800bc8 commit 50dac2b
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,9 @@ public interface IngredientRepository extends JpaRepository<Ingredient, Long> {
// 사용자가 식재료 검색어가 포함된 식재료 소비기한 임박순 조회
@Query("SELECT i FROM Ingredient i WHERE i.fridge.member.memberId = :memberId AND i.ingredientName LIKE %:search% ORDER BY i.dDay ASC")
List<Ingredient> findAllByFridge_Member_MemberIdAndIngredientNameContainingIgnoreCaseOrderByDDayAsc(Long memberId, String search);
// 사용자가 식재료 검색어가 포함된 식재료 소비기한 여유순 조회
@Query("SELECT i FROM Ingredient i WHERE i.fridge.member.memberId = :memberId AND i.ingredientName LIKE %:search% ORDER BY i.dDay DESC")
List<Ingredient> findAllByFridge_Member_MemberIdAndIngredientNameContainingIgnoreCaseOrderByDDayDesc(Long memberId, String search);


}
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@ public interface FridgeQueryService {

List<Ingredient> getIngredientsByNameRecent(Long memberId, Optional<String> optSearch);
List<Ingredient> getIngredientsByNameNearExpiry(Long memberId, Optional<String> optSearch);
List<Ingredient> getIngredientsByNameFarExpiry(Long memberId, Optional<String> optSearch);
}
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,20 @@ public List<Ingredient> getIngredientsByNameNearExpiry(Long memberId, Optional<S
return ingredients;
}

@Override
public List<Ingredient> getIngredientsByNameFarExpiry(Long memberId, Optional<String> optSearch) {
findMemberById(memberId);
List<Ingredient> ingredients;
if (optSearch.isPresent() && !optSearch.get().trim().isEmpty()) {
String search = optSearch.get();
ingredients = ingredientRepository.findAllByFridge_Member_MemberIdAndIngredientNameContainingIgnoreCaseOrderByDDayDesc(memberId, search);
} else {
ingredients = ingredientRepository.findAllByFridge_Member_MemberIdOrderByDDayDesc(memberId);
}
validateIngredientProperties(ingredients);
return ingredients;
}


// 식재료 필수 속성 미설정 예외처리 (카테고리, 보관방식, 구매날짜, 소비기한)
private void validateIngredientProperties(List<Ingredient> ingredients) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,8 @@ public ApiResponse<FridgeResponseDTO.IngredientDetailListDTO> findByNameNearExpi
@GetMapping("/name/far-expiry")
@Operation(summary = "식재료 이름으로 검색 (소비기한 여유순) API", description = "식재료 이름으로 검색하여 소비기한이 여유로운 순으로 조회하는 API 입니다.")
public ApiResponse<FridgeResponseDTO.IngredientDetailListDTO> findByNameFarExpiry(@RequestParam Long memberId, @RequestParam Optional<String> search) {
//List<Ingredient> ingredients = fridgeQueryService.getIngredientsByNameFarExpiry(memberId, search);
//return ApiResponse.onSuccess(SuccessStatus.FRIDGE_OK, FridgeConverter.toIngredientDetailListDTO(ingredients));
return null;
List<Ingredient> ingredients = fridgeQueryService.getIngredientsByNameFarExpiry(memberId, search);
return ApiResponse.onSuccess(SuccessStatus.FRIDGE_OK, FridgeConverter.toIngredientDetailListDTO(ingredients));
}


Expand Down

0 comments on commit 50dac2b

Please sign in to comment.