Browse Source

enable get all available stocks

Daniel Bohry 1 year ago
parent
commit
806c1d82f3

+ 6 - 5
src/main/java/com/danielbohry/stocks/controller/stock/StockController.java

@@ -14,11 +14,10 @@ import java.math.BigDecimal;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
 import java.util.Objects;
-import java.util.Set;
 import java.util.regex.Pattern;
 
 import static java.time.LocalDateTime.now;
-import static java.util.Collections.emptySet;
+import static java.util.Collections.emptyList;
 
 @Slf4j
 @RestController
@@ -32,12 +31,14 @@ public class StockController {
     private static final String ACCEPT = "^[a-zA-Z]+$";
 
     @GetMapping
-    public ResponseEntity<Set<Quote>> find(@RequestParam(value = "q") String query) {
+    public ResponseEntity<List<Quote>> find(@RequestParam(value = "q", required = false) String query) {
         if (query != null && !Pattern.matches(ACCEPT, query)) {
-            return ResponseEntity.ok(emptySet());
+            return ResponseEntity.ok(emptyList());
         }
 
-        Set<Quote> response = service.get(query);
+        List<Quote> response = query == null
+                ? service.getAll()
+                : service.get(query);
         return ResponseEntity.ok(response);
     }
 

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

@@ -35,12 +35,12 @@ public class StockRepository {
         this.key = key;
     }
 
-    public Set<Quote> findLike(String query) {
-        List<Quote> quotes = repository.findByNameOrCode(query);
-        Set<String> addedCodes = new HashSet<>();
-        return quotes.stream()
-                .filter(quote -> addedCodes.add(quote.getCode()))
-                .collect(Collectors.toSet());
+    public List<Quote> findAll() {
+        return repository.findAll();
+    }
+
+    public List<Quote> findLike(String query) {
+        return repository.findByNameOrCode(query);
     }
 
     public Quote findByCode(String code) {

+ 7 - 2
src/main/java/com/danielbohry/stocks/service/StockService.java

@@ -10,6 +10,7 @@ import java.util.List;
 import java.util.Objects;
 import java.util.Set;
 
+import static java.util.Collections.emptyList;
 import static java.util.Collections.emptySet;
 
 @Slf4j
@@ -19,9 +20,13 @@ public class StockService {
 
     private StockRepository repository;
 
-    public Set<Quote> get(String query) {
+    public List<Quote> getAll() {
+        return repository.findAll();
+    }
+
+    public List<Quote> get(String query) {
         if (Objects.equals(query, "")) {
-            return emptySet();
+            return emptyList();
         }
 
         return repository.findLike(query);

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

@@ -50,7 +50,7 @@ public class StockServiceTest {
         String name = "West";
 
         //when
-        Set<Quote> result = service.get(name);
+        List<Quote> result = service.get(name);
 
         //then
         assertEquals(6, result.size());