Skip to content

Commit f9db5c3

Browse files
committed
add feature to search tasks by name
1 parent 356bffa commit f9db5c3

4 files changed

Lines changed: 27 additions & 0 deletions

File tree

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,16 @@ curl -s http://localhost:8080/tasks/{id}
8282

8383
---
8484

85+
### GET /tasks/search/{name} — Fetch a task by name
86+
87+
```bash
88+
curl -s http://localhost:8080/tasks/search/{name}
89+
```
90+
91+
**Expected:** `200 OK` with the matching task, or `404` if not found.
92+
93+
---
94+
8595
### PATCH /tasks/{id}/complete — Mark a task as completed
8696

8797
```bash

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@ public ResponseEntity<Task> getTask(@PathVariable String id) {
4242
.orElse(ResponseEntity.notFound().build());
4343
}
4444

45+
@GetMapping("/tasks/search/{name}")
46+
public ResponseEntity<Task> searchTaskByName(@PathVariable String name) {
47+
return taskService.searchTaskByName(name)
48+
.map(ResponseEntity::ok)
49+
.orElse(ResponseEntity.notFound().build());
50+
}
51+
4552
@PatchMapping("/tasks/{id}/complete")
4653
public ResponseEntity<Task> completeTask(@PathVariable String id) {
4754
return taskService.completeTask(id)

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ public Optional<Task> findTaskById(String id) {
2424
return Optional.ofNullable(taskStore.get(id));
2525
}
2626

27+
public Optional<Task> findTaskByName(String name){
28+
return taskStore.values().stream()
29+
.filter(task -> task.getName().equals(name))
30+
.findFirst();
31+
}
32+
2733
public void delete(String id){
2834
taskStore.remove(id);
2935
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ public Optional<Task> getTask(String id) {
3232
return taskRepository.findTaskById(id);
3333
}
3434

35+
public Optional<Task> searchTaskByName(String name){
36+
return taskRepository.findTaskByName(name);
37+
}
38+
3539
public Optional<Task> completeTask(String id) {
3640
return taskRepository.findTaskById(id).map(task -> {
3741
task.setStatus(DONE);

0 commit comments

Comments
 (0)