File tree Expand file tree Collapse file tree
src/main/java/com/taskmanagerapi Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11package com .taskmanagerapi .controller ;
22
33import com .taskmanagerapi .model .Task ;
4+ import com .taskmanagerapi .model .TaskStatus ;
45import com .taskmanagerapi .service .TaskService ;
56import org .springframework .http .ResponseEntity ;
67import 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 )
Original file line number Diff line number Diff line change 11package com .taskmanagerapi .repository ;
22
33import com .taskmanagerapi .model .Task ;
4+ import com .taskmanagerapi .model .TaskStatus ;
45
56import java .util .ArrayList ;
67import 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 }
Original file line number Diff line number Diff line change 11package com .taskmanagerapi .service ;
22
33import com .taskmanagerapi .model .Task ;
4+ import com .taskmanagerapi .model .TaskStatus ;
45import com .taskmanagerapi .repository .TaskRepository ;
56import org .slf4j .Logger ;
67import 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 );
You can’t perform that action at this time.
0 commit comments