package de.gedoplan.seminar.sbt.di.exercise.service; import de.gedoplan.seminar.sbt.di.exercise.domain.Cocktail; import de.gedoplan.seminar.sbt.di.exercise.repository.CocktailRepository; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Component; import java.util.List; import java.util.function.Predicate; @ConditionalOnProperty(name = "cocktailService.mock", havingValue = "false", matchIfMissing = true) @Component public class CocktailServiceImpl implements CocktailService { private final CocktailRepository cocktailRepository; private final List> filters; public CocktailServiceImpl(CocktailRepository cocktailRepository, List> filters) { this.cocktailRepository = cocktailRepository; this.filters = filters; } @Override public List findAll() { return cocktailRepository.findAll().stream() .filter(filters.stream().reduce(Predicate::and).orElse(x -> true)) .toList(); } }