Skip to content

Commit 8447539

Browse files
committed
feat: add UserResponseDTO and ShoppingList DTOs for improved data handling and validation
1 parent 0f816d8 commit 8447539

File tree

4 files changed

+74
-0
lines changed

4 files changed

+74
-0
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.omatheusmesmo.shoppmate.list.dtos;
2+
3+
import jakarta.validation.constraints.NotBlank;
4+
import jakarta.validation.constraints.NotNull;
5+
6+
public record ShoppingListRequestDTO(
7+
@NotBlank(message = "List name cannot be blank")
8+
String name,
9+
@NotNull(message = "User ID cannot be null")
10+
Long idUser
11+
) {
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.omatheusmesmo.shoppmate.list.dtos;
2+
3+
import com.omatheusmesmo.shoppmate.user.dtos.UserResponseDTO;
4+
import jakarta.validation.constraints.NotBlank;
5+
import jakarta.validation.constraints.NotNull;
6+
7+
public record ShoppingListResponseDTO(
8+
Long idList,
9+
String listName,
10+
UserResponseDTO owner
11+
) {
12+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.omatheusmesmo.shoppmate.list.mapper;
2+
3+
import com.omatheusmesmo.shoppmate.list.dtos.ShoppingListRequestDTO;
4+
import com.omatheusmesmo.shoppmate.list.dtos.ShoppingListResponseDTO;
5+
import com.omatheusmesmo.shoppmate.list.entity.ShoppingList;
6+
import com.omatheusmesmo.shoppmate.user.dtos.UserResponseDTO;
7+
import com.omatheusmesmo.shoppmate.user.entity.User;
8+
import com.omatheusmesmo.shoppmate.user.repository.UserRepository;
9+
import org.springframework.beans.factory.annotation.Autowired;
10+
import org.springframework.stereotype.Component;
11+
12+
import java.util.NoSuchElementException;
13+
14+
@Component
15+
public class ListMapper {
16+
17+
@Autowired
18+
private UserRepository userRepository;
19+
20+
public ShoppingList toEntity(ShoppingListRequestDTO dto){
21+
User owner = userRepository.findById(dto.idUser())
22+
.orElseThrow(()-> new NoSuchElementException("User not found with ID:" + dto.idUser()));
23+
24+
ShoppingList list = new ShoppingList(owner);
25+
list.setName(dto.name());
26+
return list;
27+
}
28+
29+
public ShoppingListResponseDTO toResponseDTO(ShoppingList shoppingList){
30+
UserResponseDTO ownerDTO = new UserResponseDTO(
31+
shoppingList.getOwner().getId(),
32+
shoppingList.getOwner().getFullName(),
33+
shoppingList.getOwner().getEmail());
34+
35+
return new ShoppingListResponseDTO(
36+
shoppingList.getId(),
37+
shoppingList.getName(),
38+
ownerDTO
39+
);
40+
}
41+
42+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.omatheusmesmo.shoppmate.user.dtos;
2+
3+
public record UserResponseDTO(
4+
Long id,
5+
String fullName,
6+
String email
7+
) {
8+
}

0 commit comments

Comments
 (0)