Bläddra i källkod

add cleanup endpoint

Daniel Bohry 1 år sedan
förälder
incheckning
5a91b8e2d7

+ 6 - 0
src/main/java/com/danielbohry/stocks/controller/PortfolioController.java

@@ -41,4 +41,10 @@ public class PortfolioController {
         return ResponseEntity.ok().build();
     }
 
+    @DeleteMapping
+    public ResponseEntity<Void> cleanup() {
+        service.cleanup();
+        return ResponseEntity.ok().build();
+    }
+
 }

+ 7 - 0
src/main/java/com/danielbohry/stocks/repository/PortfolioRepository.java

@@ -2,8 +2,15 @@ package com.danielbohry.stocks.repository;
 
 import com.danielbohry.stocks.domain.Portfolio;
 import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.data.mongodb.repository.Query;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 @Repository
 public interface PortfolioRepository extends MongoRepository<Portfolio, String> {
+
+    @Query("{ 'stocks': { $size: 0 } }")
+    List<Portfolio> findAllByEmptyStocks();
+
 }

+ 9 - 0
src/main/java/com/danielbohry/stocks/service/PortfolioService.java

@@ -76,4 +76,13 @@ public class PortfolioService {
         repository.deleteById(id);
     }
 
+    public void cleanup() {
+        repository.findAllByEmptyStocks().forEach(portfolio -> {
+            if (portfolio.getStocks().isEmpty()) {
+                log.info("Removing empty portfolio [{}]", portfolio.getId());
+                repository.deleteById(portfolio.getId());
+            }
+        });
+    }
+
 }