Skip to content

Commit

Permalink
feat: add validation to request body and method renaming
Browse files Browse the repository at this point in the history
  • Loading branch information
UmaxCode committed Jan 17, 2025
1 parent 8ba24e9 commit 398fa64
Show file tree
Hide file tree
Showing 10 changed files with 61 additions and 12 deletions.
4 changes: 4 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,10 @@
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
</dependencies>

<dependencyManagement>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.umaxcode.controller;

import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.security.access.prepost.PreAuthorize;
Expand All @@ -23,10 +24,10 @@ public class TaskManagementController {
@PostMapping
@PreAuthorize(value = "hasRole('ADMIN')")
@ResponseStatus(HttpStatus.CREATED)
public SuccessResponse createTask(@RequestBody TasksCreationDto request, @AuthenticationPrincipal Jwt jwt) {
public SuccessResponse createTask(@Valid @RequestBody TasksCreationDto request, @AuthenticationPrincipal Jwt jwt) {

String adminEmail = jwt.getClaimAsString("email");
TaskDto createdTask = taskManagementService.createItem(request, adminEmail);
TaskDto createdTask = taskManagementService.createAndAssignTask(request, adminEmail);
return SuccessResponse.builder()
.message("Task created successfully")
.data(createdTask)
Expand All @@ -38,15 +39,15 @@ public SuccessResponse createTask(@RequestBody TasksCreationDto request, @Authen
@ResponseStatus(HttpStatus.OK)
public SuccessResponse retrieveTask(@PathVariable("id") String taskId) {

TaskDto taskDto = taskManagementService.readItem(taskId);
TaskDto taskDto = taskManagementService.fetchTask(taskId);
return SuccessResponse.builder()
.message("Task retrieved successfully")
.data(taskDto)
.build();
}

@GetMapping("/users/{email}")
@PreAuthorize(value= "hasAnyRole('ADMIN', 'USER')")
@PreAuthorize(value = "hasAnyRole('ADMIN', 'USER')")
@ResponseStatus(HttpStatus.OK)
public SuccessResponse retrieveUserTasks(@PathVariable String email) {

Expand All @@ -72,7 +73,7 @@ public SuccessResponse makeTaskAsCompleted(@PathVariable("id") String id, @Authe
@PatchMapping("/{id}/reopen")
@PreAuthorize(value = "hasRole('ADMIN')")
@ResponseStatus(HttpStatus.OK)
public SuccessResponse reopenTask(@PathVariable("id") String id, @RequestBody TaskReopenDto request) {
public SuccessResponse reopenTask(@PathVariable("id") String id, @Valid @RequestBody TaskReopenDto request) {

TaskDto updatedTask = taskManagementService.reopenTask(id, request);
return SuccessResponse.builder()
Expand All @@ -85,7 +86,7 @@ public SuccessResponse reopenTask(@PathVariable("id") String id, @RequestBody Ta
@PreAuthorize(value = "hasRole('USER')")
@ResponseStatus(HttpStatus.OK)
public SuccessResponse updateTaskComment(@PathVariable("id") String id,
@RequestBody TaskCommentUpdateDto request
@Valid @RequestBody TaskCommentUpdateDto request
) {

TaskDto updatedTask = taskManagementService.updateTaskComment(id, request);
Expand All @@ -98,7 +99,7 @@ public SuccessResponse updateTaskComment(@PathVariable("id") String id,
@PatchMapping("/{id}/reassign")
@PreAuthorize(value = "hasRole('ADMIN')")
@ResponseStatus(HttpStatus.OK)
public SuccessResponse reAssignTask(@PathVariable("id") String id, @RequestBody ReassignTaskDto request
public SuccessResponse reAssignTask(@PathVariable("id") String id, @Valid @RequestBody ReassignTaskDto request
) {

TaskDto updatedTask = taskManagementService.reAssignTask(id, request);
Expand All @@ -111,7 +112,7 @@ public SuccessResponse reAssignTask(@PathVariable("id") String id, @RequestBody
@PatchMapping("/{id}")
@PreAuthorize(value = "hasRole('ADMIN')")
@ResponseStatus(HttpStatus.OK)
public SuccessResponse updateTaskDetails(@PathVariable("id") String id, @RequestBody TaskDetailsUpdateDto request
public SuccessResponse updateTaskDetails(@PathVariable("id") String id, @Valid @RequestBody TaskDetailsUpdateDto request
) {

TaskDto updatedTask = taskManagementService.updateTaskDetails(id, request);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
package org.umaxcode.domain.dto.request;

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;

public record ReassignTaskDto(

@NotBlank(message = "User email is required")
@Email(message = "Invalid email")
String userEmail
) {
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package org.umaxcode.domain.dto.request;

import jakarta.validation.constraints.NotBlank;

public record TaskCommentUpdateDto(

@NotBlank(message = "Comment is required")
String comment
) {
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
package org.umaxcode.domain.dto.request;

import jakarta.validation.constraints.NotBlank;

public record TaskDetailsUpdateDto(

@NotBlank(message = "Name is required")
String name,

@NotBlank(message = "Description is required")
String description
) {
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
package org.umaxcode.domain.dto.request;

import jakarta.validation.constraints.Future;
import jakarta.validation.constraints.NotBlank;

import java.time.LocalDateTime;

public record TaskReopenDto(

@NotBlank(message = "Deadline is required")
@Future(message = "Deadline must be in the future")
LocalDateTime deadline
) {
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,25 @@
package org.umaxcode.domain.dto.request;

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.Future;
import jakarta.validation.constraints.NotBlank;

import java.time.LocalDateTime;

public record TasksCreationDto(

@NotBlank(message = "Name is required")
String name,

@NotBlank(message = "Description is required")
String description,

@NotBlank(message = "Deadline is required")
@Future(message = "Deadline must be in the future")
LocalDateTime deadline,

@NotBlank(message = "Deadline is required")
@Email(message = "Invalid email")
String responsibility
) {
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
package org.umaxcode.domain.dto.request;

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;

public record UserCreationDto(

@NotBlank(message = "Username is required")
String username,

@NotBlank(message = "Email is required")
@Email(message = "Invalid email")
String email
) {
}
4 changes: 2 additions & 2 deletions src/main/java/org/umaxcode/service/TaskManagementService.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@

public interface TaskManagementService {

TaskDto createItem(TasksCreationDto item, String email);
TaskDto createAndAssignTask(TasksCreationDto item, String email);

TaskDto readItem(String id);
TaskDto fetchTask(String id);

List<TaskDto> getAllTasks();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public TaskManagementServiceImpl(DynamoDbClient dynamoDbClient, CognitoIdentityP
}

@Override
public TaskDto createItem(TasksCreationDto request, String email) {
public TaskDto createAndAssignTask(TasksCreationDto request, String email) {

Map<String, AttributeValue> item = new HashMap<>();
item.put("taskId", AttributeValue.builder().s(UUID.randomUUID().toString()).build());
Expand Down Expand Up @@ -78,7 +78,7 @@ public TaskDto createItem(TasksCreationDto request, String email) {
}

@Override
public TaskDto readItem(String id) {
public TaskDto fetchTask(String id) {

Map<String, AttributeValue> key = new HashMap<>();
key.put("taskId", AttributeValue.builder().s(id).build());
Expand Down

0 comments on commit 398fa64

Please sign in to comment.