From 6d78065624064eecff60e70f9cb098b7e00df847 Mon Sep 17 00:00:00 2001 From: Narotham Sai Date: Fri, 4 Mar 2022 11:09:23 +0530 Subject: [PATCH 1/4] Add Get Tasks API --- .../todolist/controllers/TasksController.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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..541fe46 100644 --- a/todolist/src/main/java/com/scaler/todolist/controllers/TasksController.java +++ b/todolist/src/main/java/com/scaler/todolist/controllers/TasksController.java @@ -1,12 +1,13 @@ 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.Optional; @RequestMapping("/tasks") @RestController @@ -26,6 +27,16 @@ ResponseEntity addNewTask(@RequestBody Task task) { return ResponseEntity.status(201).body(taskToAdd); } + @GetMapping("/{id}") + ResponseEntity> getTaskById(@PathVariable int id){ + // If Index out of Bounds, return Not found + if(taskList.size() < id){ + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(Optional.ofNullable(null)); + } + Optional task = Optional.ofNullable(taskList.get(id)); + return ResponseEntity.ok(task); + } + /* * ASSIGNMENT: * 1. GET -> /tasks/3 From 5ac849127d2ed15dd254156eaac1fa0101a80667 Mon Sep 17 00:00:00 2001 From: Narotham Sai Date: Fri, 4 Mar 2022 15:25:41 +0530 Subject: [PATCH 2/4] Add Response DTO --- .../scaler/todolist/DTO/BaseResponseDTO.java | 11 +++++++++++ .../scaler/todolist/DTO/TaskResponseDTO.java | 11 +++++++++++ .../todolist/controllers/TasksController.java | 18 +++++++++++++----- 3 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 todolist/src/main/java/com/scaler/todolist/DTO/BaseResponseDTO.java create mode 100644 todolist/src/main/java/com/scaler/todolist/DTO/TaskResponseDTO.java diff --git a/todolist/src/main/java/com/scaler/todolist/DTO/BaseResponseDTO.java b/todolist/src/main/java/com/scaler/todolist/DTO/BaseResponseDTO.java new file mode 100644 index 0000000..ee39859 --- /dev/null +++ b/todolist/src/main/java/com/scaler/todolist/DTO/BaseResponseDTO.java @@ -0,0 +1,11 @@ +package com.scaler.todolist.DTO; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class BaseResponseDTO { + private int status; + private String message; +} diff --git a/todolist/src/main/java/com/scaler/todolist/DTO/TaskResponseDTO.java b/todolist/src/main/java/com/scaler/todolist/DTO/TaskResponseDTO.java new file mode 100644 index 0000000..3aa6b14 --- /dev/null +++ b/todolist/src/main/java/com/scaler/todolist/DTO/TaskResponseDTO.java @@ -0,0 +1,11 @@ +package com.scaler.todolist.DTO; + +import com.scaler.todolist.models.Task; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class TaskResponseDTO extends BaseResponseDTO{ + private Task task; +} 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 541fe46..04fdd4e 100644 --- a/todolist/src/main/java/com/scaler/todolist/controllers/TasksController.java +++ b/todolist/src/main/java/com/scaler/todolist/controllers/TasksController.java @@ -1,5 +1,6 @@ package com.scaler.todolist.controllers; +import com.scaler.todolist.DTO.TaskResponseDTO; import com.scaler.todolist.models.Task; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -28,13 +29,20 @@ ResponseEntity addNewTask(@RequestBody Task task) { } @GetMapping("/{id}") - ResponseEntity> getTaskById(@PathVariable int id){ + ResponseEntity getTaskById(@PathVariable int id){ // If Index out of Bounds, return Not found - if(taskList.size() < id){ - return ResponseEntity.status(HttpStatus.NOT_FOUND).body(Optional.ofNullable(null)); + if(taskList.size() <= id){ + TaskResponseDTO body = new TaskResponseDTO(); + body.setStatus(404); + body.setMessage("Task Not found"); + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(body); } - Optional task = Optional.ofNullable(taskList.get(id)); - return ResponseEntity.ok(task); + Task task = taskList.get(id); + TaskResponseDTO body = new TaskResponseDTO(); + body.setStatus(200); + body.setMessage("Task updated."); + body.setTask(task); + return ResponseEntity.ok(body); } /* From a99ffa40d6c10c41739e620230fcaf347578ea52 Mon Sep 17 00:00:00 2001 From: Narotham Sai Date: Fri, 4 Mar 2022 15:39:13 +0530 Subject: [PATCH 3/4] Update Delete API --- .../todolist/controllers/TasksController.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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 04fdd4e..2ff427d 100644 --- a/todolist/src/main/java/com/scaler/todolist/controllers/TasksController.java +++ b/todolist/src/main/java/com/scaler/todolist/controllers/TasksController.java @@ -45,6 +45,22 @@ ResponseEntity getTaskById(@PathVariable int id){ return ResponseEntity.ok(body); } + @DeleteMapping("/{id}") + ResponseEntity updateTaskById(@PathVariable int id){ + // If Index out of Bounds, return Not found + if(taskList.size() <= id){ + TaskResponseDTO body = new TaskResponseDTO(); + body.setStatus(404); + body.setMessage("Task Not found"); + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(body); + } + Task task = taskList.remove(id); + TaskResponseDTO body = new TaskResponseDTO(); + body.setStatus(204); + body.setMessage("Task deleted."); + return ResponseEntity.status(HttpStatus.NO_CONTENT).body(body); + } + /* * ASSIGNMENT: * 1. GET -> /tasks/3 From 728708ac950fc840cb95ff5c2a04f7bc5396a25f Mon Sep 17 00:00:00 2001 From: Narotham Sai Date: Fri, 4 Mar 2022 15:50:44 +0530 Subject: [PATCH 4/4] Add patch tasks API --- .../scaler/todolist/DTO/UpdateRequestDTO.java | 13 +++++++++++ .../todolist/controllers/TasksController.java | 23 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 todolist/src/main/java/com/scaler/todolist/DTO/UpdateRequestDTO.java diff --git a/todolist/src/main/java/com/scaler/todolist/DTO/UpdateRequestDTO.java b/todolist/src/main/java/com/scaler/todolist/DTO/UpdateRequestDTO.java new file mode 100644 index 0000000..a157c68 --- /dev/null +++ b/todolist/src/main/java/com/scaler/todolist/DTO/UpdateRequestDTO.java @@ -0,0 +1,13 @@ +package com.scaler.todolist.DTO; + +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDate; + +@Getter +@Setter +public class UpdateRequestDTO { + private LocalDate due; + private Boolean done; +} 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 2ff427d..ecec24e 100644 --- a/todolist/src/main/java/com/scaler/todolist/controllers/TasksController.java +++ b/todolist/src/main/java/com/scaler/todolist/controllers/TasksController.java @@ -1,6 +1,7 @@ package com.scaler.todolist.controllers; import com.scaler.todolist.DTO.TaskResponseDTO; +import com.scaler.todolist.DTO.UpdateRequestDTO; import com.scaler.todolist.models.Task; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -45,6 +46,27 @@ ResponseEntity getTaskById(@PathVariable int id){ return ResponseEntity.ok(body); } + @PatchMapping("/{id}") + ResponseEntity updateTaskById(@PathVariable int id, @RequestBody UpdateRequestDTO updateRequestDTO){ + // If Index out of Bounds, return Not found + if(taskList.size() <= id){ + TaskResponseDTO body = new TaskResponseDTO(); + body.setStatus(404); + body.setMessage("Task Not found"); + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(body); + } + Task task = taskList.get(id); + if(updateRequestDTO.getDone() != null)task.setDone(updateRequestDTO.getDone()); + if(updateRequestDTO.getDue() != null)task.setDue(updateRequestDTO.getDue()); + taskList.add(id,task); + + TaskResponseDTO body = new TaskResponseDTO(); + body.setStatus(200); + body.setMessage("Task updated."); + body.setTask(task); + return ResponseEntity.ok(body); + } + @DeleteMapping("/{id}") ResponseEntity updateTaskById(@PathVariable int id){ // If Index out of Bounds, return Not found @@ -55,6 +77,7 @@ ResponseEntity updateTaskById(@PathVariable int id){ return ResponseEntity.status(HttpStatus.NOT_FOUND).body(body); } Task task = taskList.remove(id); + TaskResponseDTO body = new TaskResponseDTO(); body.setStatus(204); body.setMessage("Task deleted.");