|
|
@@ -2,7 +2,6 @@ package com.danielbohry.stocks.repository;
|
|
|
|
|
|
import com.danielbohry.stocks.client.StockClient;
|
|
|
import com.danielbohry.stocks.domain.Quote;
|
|
|
-import com.danielbohry.stocks.exception.NotFoundException;
|
|
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
|
import feign.FeignException;
|
|
|
@@ -15,6 +14,7 @@ import org.springframework.stereotype.Repository;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.List;
|
|
|
+import java.util.Optional;
|
|
|
|
|
|
import static java.time.LocalDateTime.now;
|
|
|
|
|
|
@@ -37,7 +37,8 @@ public class StockRepository {
|
|
|
}
|
|
|
|
|
|
public Quote findByCode(String code) {
|
|
|
- return repository.findByCode(code).orElseThrow(() -> new NotFoundException("Couldn't find any stock with: " + code));
|
|
|
+ Optional<Quote> quote = repository.findByCode(code);
|
|
|
+ return quote.orElseGet(() -> repository.save(getStockQuote(code)));
|
|
|
}
|
|
|
|
|
|
public List<Quote> update(List<Quote> quote) {
|
|
|
@@ -58,9 +59,8 @@ public class StockRepository {
|
|
|
}
|
|
|
|
|
|
public Quote getStockQuote(String code) {
|
|
|
- Quote quote = repository.findByCode(code).orElse(new Quote(code, null, null, null));
|
|
|
+ Quote quote = repository.findByCode(code).orElse(new Quote(code, null, null, now()));
|
|
|
quote.setPrice(getLastPrice(quote));
|
|
|
- quote.setUpdatedAt(now());
|
|
|
|
|
|
if (quote.getName() == null) {
|
|
|
StockInfoResponse info = updateStockInformation(quote.getCode());
|