StockService.java 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package com.danielbohry.stocks.service.stock;
  2. import com.danielbohry.stocks.domain.Stock;
  3. import com.danielbohry.stocks.repository.stock.StockRepository;
  4. import lombok.AllArgsConstructor;
  5. import lombok.extern.slf4j.Slf4j;
  6. import org.springframework.cache.annotation.Cacheable;
  7. import org.springframework.stereotype.Service;
  8. import java.util.Comparator;
  9. import java.util.List;
  10. import java.util.Objects;
  11. import static java.util.Collections.emptyList;
  12. @Slf4j
  13. @Service
  14. @AllArgsConstructor
  15. public class StockService {
  16. private StockRepository repository;
  17. @Cacheable("allStockQuotes")
  18. public List<Stock> getAll() {
  19. return repository.findAll()
  20. .stream()
  21. .sorted(Comparator.comparing(Stock::getName))
  22. .toList();
  23. }
  24. @Cacheable(value = "stockQuotesQuery", key = "#query")
  25. public List<Stock> get(String query) {
  26. if (Objects.equals(query, "")) {
  27. return emptyList();
  28. }
  29. log.debug("Querying stock with query [{}]", query);
  30. return repository.findLike(query);
  31. }
  32. @Cacheable(value = "stockQuotes", key = "#code")
  33. public Stock getByCode(String code) {
  34. log.debug("Getting stock by code [{}]", code);
  35. return repository.findByCode(code);
  36. }
  37. public List<Stock> update(List<Stock> quotes) {
  38. return repository.update(quotes);
  39. }
  40. public boolean isValid(String code) {
  41. return repository.isValid(code);
  42. }
  43. public Stock getStockQuote(String code) {
  44. return repository.getStockQuote(code);
  45. }
  46. }