Selaa lähdekoodia

update find by code method

Daniel Bohry 1 vuosi sitten
vanhempi
sitoutus
04917304c3

+ 4 - 4
src/main/java/com/danielbohry/stocks/repository/StockRepository.java

@@ -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());