diff --git a/todolist/src/main/java/com/scaler/todolist/controllers/TasksController.java b/todolist/src/main/java/com/scaler/todolist/controllers/TasksController.java index a39e36c..a5f28f0 100644 --- a/todolist/src/main/java/com/scaler/todolist/controllers/TasksController.java +++ b/todolist/src/main/java/com/scaler/todolist/controllers/TasksController.java @@ -1,28 +1,29 @@ package com.scaler.todolist.controllers; import com.scaler.todolist.models.Task; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.net.http.HttpResponse; -import java.util.ArrayList; -import java.util.List; +import java.util.Collection; +import java.util.TreeMap; @RequestMapping("/tasks") @RestController public class TasksController { - private ArrayList taskList = new ArrayList<>(); + private Integer idCounter = 0; + private TreeMap taskMap; @GetMapping("/") - ResponseEntity> getAllTasks() { - return ResponseEntity.ok(taskList); + ResponseEntity> getAllTasks() { + return ResponseEntity.ok(taskMap.values()); } @PostMapping("/") ResponseEntity addNewTask(@RequestBody Task task) { - Task taskToAdd = new Task(task.getName()); - taskList.add(taskToAdd); + Task taskToAdd = new Task(idCounter++, task.getName()); + taskMap.put(taskToAdd.getId(), taskToAdd); return ResponseEntity.status(201).body(taskToAdd); } @@ -38,6 +39,29 @@ ResponseEntity addNewTask(@RequestBody Task task) { * delete task no 5 (response with correct HTTP code) * if task 5 does not exist, send 404 */ + @GetMapping("/:id") + ResponseEntity getTask(@RequestBody Task task) { + if(taskMap.containsKey(task.getId())) { + return ResponseEntity.status(200).body(taskMap.get(task.getId())); + } + return ResponseEntity.status(404).body(new Task()); + } + @PatchMapping("/:id") + ResponseEntity updateTask(@RequestBody Task task) { + if(taskMap.containsKey(task.getId())) { + taskMap.get(task.getId()).setName(task.getName()); + return ResponseEntity.status(HttpStatus.ACCEPTED).body("Task successfully updated"); + } + return ResponseEntity.status(HttpStatus.NOT_FOUND).body("Task not found"); + } + @DeleteMapping("/:id") + ResponseEntity deleteTask(@RequestBody Task task) { + if(taskMap.containsKey(task.getId())) { + taskMap.remove(task.getId()); + return ResponseEntity.status(HttpStatus.ACCEPTED).body("Successfully deleted"); + } + return ResponseEntity.status(HttpStatus.NOT_FOUND).body("Task not found"); + } } diff --git a/todolist/src/main/java/com/scaler/todolist/models/Task.java b/todolist/src/main/java/com/scaler/todolist/models/Task.java index d572475..74924a4 100644 --- a/todolist/src/main/java/com/scaler/todolist/models/Task.java +++ b/todolist/src/main/java/com/scaler/todolist/models/Task.java @@ -13,6 +13,7 @@ @Getter(AccessLevel.PUBLIC) @Setter(AccessLevel.PUBLIC) public class Task { + private Integer id; private String name; private LocalDate due; private Boolean done;