Browse Source

add cache to stock history

Daniel Bohry 7 tháng trước cách đây
mục cha
commit
cd2d3ff10b

+ 1 - 1
src/main/java/com/danielbohry/stocks/api/portfolio/PortfolioController.java

@@ -2,7 +2,7 @@ package com.danielbohry.stocks.api.portfolio;
 
 import com.danielbohry.stocks.context.UserContextHolder;
 import com.danielbohry.stocks.domain.Portfolio;
-import com.danielbohry.stocks.service.PortfolioService;
+import com.danielbohry.stocks.service.portfolio.PortfolioService;
 import io.swagger.v3.oas.annotations.Hidden;
 import lombok.AllArgsConstructor;
 import org.springframework.http.HttpStatus;

+ 1 - 1
src/main/java/com/danielbohry/stocks/api/portfolio/PortfolioHistoryController.java

@@ -1,7 +1,7 @@
 package com.danielbohry.stocks.api.portfolio;
 
 import com.danielbohry.stocks.domain.PortfolioHistory;
-import com.danielbohry.stocks.service.PortfolioHistoryService;
+import com.danielbohry.stocks.service.portfolio.PortfolioHistoryService;
 import lombok.AllArgsConstructor;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;

+ 3 - 3
src/main/java/com/danielbohry/stocks/api/stock/StockController.java

@@ -4,9 +4,9 @@ import com.danielbohry.stocks.context.UserContextHolder;
 import com.danielbohry.stocks.domain.Stock;
 import com.danielbohry.stocks.domain.StockHistory;
 import com.danielbohry.stocks.domain.StockInfo;
-import com.danielbohry.stocks.service.StockHistoryService;
-import com.danielbohry.stocks.service.StockInfoService;
-import com.danielbohry.stocks.service.StockService;
+import com.danielbohry.stocks.service.stock.StockHistoryService;
+import com.danielbohry.stocks.service.stock.StockInfoService;
+import com.danielbohry.stocks.service.stock.StockService;
 import io.swagger.v3.oas.annotations.Hidden;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;

+ 4 - 1
src/main/java/com/danielbohry/stocks/config/CacheConfig.java

@@ -34,8 +34,11 @@ public class CacheConfig {
         CaffeineCache stockInfo = new CaffeineCache("stockInfo",
             Caffeine.newBuilder().expireAfterWrite(5, MINUTES).build());
 
+        CaffeineCache stockHistory = new CaffeineCache("stockHistory",
+            Caffeine.newBuilder().expireAfterWrite(5, MINUTES).build());
+
         SimpleCacheManager manager = new SimpleCacheManager();
-        manager.setCaches(List.of(exchangeRates, allStockQuotes, stockQuotesQuery, stockQuotes, stockInfo));
+        manager.setCaches(List.of(exchangeRates, allStockQuotes, stockQuotesQuery, stockQuotes, stockInfo, stockHistory));
         return manager;
     }
 

+ 0 - 20
src/main/java/com/danielbohry/stocks/service/StockHistoryService.java

@@ -1,20 +0,0 @@
-package com.danielbohry.stocks.service;
-
-import com.danielbohry.stocks.domain.StockHistory;
-import com.danielbohry.stocks.repository.stock.StockHistoryRepository;
-import lombok.AllArgsConstructor;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Service
-@AllArgsConstructor
-public class StockHistoryService {
-
-    private final StockHistoryRepository repository;
-
-    public List<StockHistory> get(String code) {
-        return repository.findAllByCode(code);
-    }
-
-}

+ 2 - 1
src/main/java/com/danielbohry/stocks/service/PortfolioEncryptService.java → src/main/java/com/danielbohry/stocks/service/portfolio/PortfolioEncryptService.java

@@ -1,6 +1,7 @@
-package com.danielbohry.stocks.service;
+package com.danielbohry.stocks.service.portfolio;
 
 import com.danielbohry.stocks.repository.portfolio.PortfolioEntity.PortfolioStock;
+import com.danielbohry.stocks.service.EncryptService;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.AllArgsConstructor;

+ 2 - 1
src/main/java/com/danielbohry/stocks/service/PortfolioHistoryService.java → src/main/java/com/danielbohry/stocks/service/portfolio/PortfolioHistoryService.java

@@ -1,9 +1,10 @@
-package com.danielbohry.stocks.service;
+package com.danielbohry.stocks.service.portfolio;
 
 import com.danielbohry.stocks.domain.Portfolio;
 import com.danielbohry.stocks.domain.PortfolioHistory;
 import com.danielbohry.stocks.repository.portfolio.PortfolioHistoryEntity;
 import com.danielbohry.stocks.repository.portfolio.PortfolioHistoryRepository;
+import com.danielbohry.stocks.service.stock.StockEncryptService;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;

+ 3 - 1
src/main/java/com/danielbohry/stocks/service/PortfolioService.java → src/main/java/com/danielbohry/stocks/service/portfolio/PortfolioService.java

@@ -1,4 +1,4 @@
-package com.danielbohry.stocks.service;
+package com.danielbohry.stocks.service.portfolio;
 
 import com.danielbohry.stocks.context.UserContextHolder;
 import com.danielbohry.stocks.domain.Portfolio;
@@ -9,7 +9,9 @@ import com.danielbohry.stocks.exception.NotFoundException;
 import com.danielbohry.stocks.exception.UnauthorizedException;
 import com.danielbohry.stocks.repository.portfolio.PortfolioEntity;
 import com.danielbohry.stocks.repository.portfolio.PortfolioRepository;
+import com.danielbohry.stocks.service.ExchangeService;
 import com.danielbohry.stocks.service.ExchangeService.ExchangeRateResponse;
+import com.danielbohry.stocks.service.stock.StockService;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;

+ 2 - 1
src/main/java/com/danielbohry/stocks/service/StockEncryptService.java → src/main/java/com/danielbohry/stocks/service/stock/StockEncryptService.java

@@ -1,6 +1,7 @@
-package com.danielbohry.stocks.service;
+package com.danielbohry.stocks.service.stock;
 
 import com.danielbohry.stocks.domain.PortfolioStock;
+import com.danielbohry.stocks.service.EncryptService;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.AllArgsConstructor;

+ 8 - 2
src/main/java/com/danielbohry/stocks/service/StockQuoteService.java → src/main/java/com/danielbohry/stocks/service/stock/StockHistoryService.java

@@ -1,9 +1,10 @@
-package com.danielbohry.stocks.service;
+package com.danielbohry.stocks.service.stock;
 
 import com.danielbohry.stocks.domain.StockHistory;
 import com.danielbohry.stocks.repository.stock.StockHistoryRepository;
 import lombok.AllArgsConstructor;
 import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 
@@ -13,7 +14,7 @@ import static java.time.Instant.now;
 
 @Service
 @AllArgsConstructor
-public class StockQuoteService {
+public class StockHistoryService {
 
     private final StockService service;
     private final StockHistoryRepository repository;
@@ -30,4 +31,9 @@ public class StockQuoteService {
         repository.saveAll(stocks);
     }
 
+    @Cacheable(value = "stockHistory", key = "#code")
+    public List<StockHistory> get(String code) {
+        return repository.findAllByCode(code);
+    }
+
 }

+ 1 - 1
src/main/java/com/danielbohry/stocks/service/StockInfoService.java → src/main/java/com/danielbohry/stocks/service/stock/StockInfoService.java

@@ -1,4 +1,4 @@
-package com.danielbohry.stocks.service;
+package com.danielbohry.stocks.service.stock;
 
 import com.danielbohry.stocks.client.FinanceClient;
 import com.danielbohry.stocks.domain.Stock;

+ 1 - 1
src/main/java/com/danielbohry/stocks/service/StockService.java → src/main/java/com/danielbohry/stocks/service/stock/StockService.java

@@ -1,4 +1,4 @@
-package com.danielbohry.stocks.service;
+package com.danielbohry.stocks.service.stock;
 
 import com.danielbohry.stocks.domain.Stock;
 import com.danielbohry.stocks.repository.stock.StockRepository;

+ 3 - 3
src/test/java/service/PortfolioServiceTest.java

@@ -6,9 +6,9 @@ import com.danielbohry.stocks.domain.PortfolioStock;
 import com.danielbohry.stocks.repository.portfolio.PortfolioRepository;
 import com.danielbohry.stocks.repository.stock.StockRepository;
 import com.danielbohry.stocks.service.ExchangeService;
-import com.danielbohry.stocks.service.PortfolioEncryptService;
-import com.danielbohry.stocks.service.PortfolioService;
-import com.danielbohry.stocks.service.StockService;
+import com.danielbohry.stocks.service.portfolio.PortfolioEncryptService;
+import com.danielbohry.stocks.service.portfolio.PortfolioService;
+import com.danielbohry.stocks.service.stock.StockService;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;

+ 1 - 1
src/test/java/service/StockServiceTest.java

@@ -3,7 +3,7 @@ package service;
 import com.danielbohry.stocks.App;
 import com.danielbohry.stocks.domain.Stock;
 import com.danielbohry.stocks.repository.stock.StockRepository;
-import com.danielbohry.stocks.service.StockService;
+import com.danielbohry.stocks.service.stock.StockService;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;