Skip to content

Commit 9b426fb

Browse files
committed
add feature to search tasks by status
1 parent f9db5c3 commit 9b426fb

3 files changed

Lines changed: 20 additions & 0 deletions

File tree

src/main/java/com/taskmanagerapi/controller/TaskController.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.taskmanagerapi.controller;
22

33
import com.taskmanagerapi.model.Task;
4+
import com.taskmanagerapi.model.TaskStatus;
45
import com.taskmanagerapi.service.TaskService;
56
import org.springframework.http.ResponseEntity;
67
import org.springframework.web.bind.annotation.*;
@@ -49,6 +50,12 @@ public ResponseEntity<Task> searchTaskByName(@PathVariable String name) {
4950
.orElse(ResponseEntity.notFound().build());
5051
}
5152

53+
@GetMapping("/tasks/search/status/{status}")
54+
public ResponseEntity<List<Task>> searchTaskByStatus(@PathVariable TaskStatus status){
55+
List<Task> tasks = taskService.searchTaskByStatus(status);
56+
return ResponseEntity.ok(tasks);
57+
}
58+
5259
@PatchMapping("/tasks/{id}/complete")
5360
public ResponseEntity<Task> completeTask(@PathVariable String id) {
5461
return taskService.completeTask(id)

src/main/java/com/taskmanagerapi/repository/TaskRepository.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.taskmanagerapi.repository;
22

33
import com.taskmanagerapi.model.Task;
4+
import com.taskmanagerapi.model.TaskStatus;
45

56
import java.util.ArrayList;
67
import java.util.HashMap;
@@ -30,6 +31,13 @@ public Optional<Task> findTaskByName(String name){
3031
.findFirst();
3132
}
3233

34+
public List<Task> findTasksByStatus(TaskStatus status) {
35+
return taskStore.values().stream()
36+
.filter(task -> status.equals(task.getStatus())) // "status" first to avoid NullPointer
37+
.toList();
38+
}
39+
40+
3341
public void delete(String id){
3442
taskStore.remove(id);
3543
}

src/main/java/com/taskmanagerapi/service/TaskService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.taskmanagerapi.service;
22

33
import com.taskmanagerapi.model.Task;
4+
import com.taskmanagerapi.model.TaskStatus;
45
import com.taskmanagerapi.repository.TaskRepository;
56
import org.slf4j.Logger;
67
import org.slf4j.LoggerFactory;
@@ -36,6 +37,10 @@ public Optional<Task> searchTaskByName(String name){
3637
return taskRepository.findTaskByName(name);
3738
}
3839

40+
public List<Task> searchTaskByStatus(TaskStatus status){
41+
return taskRepository.findTasksByStatus(status);
42+
}
43+
3944
public Optional<Task> completeTask(String id) {
4045
return taskRepository.findTaskById(id).map(task -> {
4146
task.setStatus(DONE);

0 commit comments

Comments
 (0)