diff --git a/src/main/java/com/solaria/persistence/domain/entity/User.java b/src/main/java/com/solaria/persistence/domain/entity/User.java index 3d716b5..26cdfa5 100644 --- a/src/main/java/com/solaria/persistence/domain/entity/User.java +++ b/src/main/java/com/solaria/persistence/domain/entity/User.java @@ -20,9 +20,15 @@ public class User { @Column(name = "auth_id", nullable = false, unique = true) private UUID auth_id; + @Column(name = "username", nullable = false, unique = true, length = 30) + private String username; + @Column(name = "avatar") private String avatar; + @Column(name = "banner") + private String banner; + @Column(name = "active", nullable = false) private Boolean active = true; } diff --git a/src/main/java/com/solaria/persistence/dto/request/UserRequestDTO.java b/src/main/java/com/solaria/persistence/dto/request/UserRequestDTO.java index 5bee4c6..5ecd6c1 100644 --- a/src/main/java/com/solaria/persistence/dto/request/UserRequestDTO.java +++ b/src/main/java/com/solaria/persistence/dto/request/UserRequestDTO.java @@ -16,7 +16,14 @@ public class UserRequestDTO { @NotNull(message = "ID de autenticação é obrigatório") private UUID authId; + @NotNull(message = "Username é obrigatório") + @Pattern(regexp = RegexValidator.USERNAME_REGEX, message = "Username inválido") + private String username; + @Pattern(regexp = RegexValidator.URL_REGEX, message = "Avatar inválido") private String avatar; + @Pattern(regexp = RegexValidator.URL_REGEX, message = "Banner inválido") + private String banner; + } diff --git a/src/main/java/com/solaria/persistence/dto/response/UserResponseDTO.java b/src/main/java/com/solaria/persistence/dto/response/UserResponseDTO.java index 398898c..bc7c2dd 100644 --- a/src/main/java/com/solaria/persistence/dto/response/UserResponseDTO.java +++ b/src/main/java/com/solaria/persistence/dto/response/UserResponseDTO.java @@ -11,7 +11,9 @@ public class UserResponseDTO { private UUID id; private UUID authId; + private String username; private String avatar; + private String banner; private Boolean active; } diff --git a/src/main/java/com/solaria/persistence/service/UserService.java b/src/main/java/com/solaria/persistence/service/UserService.java index d2dc99d..e5bd772 100644 --- a/src/main/java/com/solaria/persistence/service/UserService.java +++ b/src/main/java/com/solaria/persistence/service/UserService.java @@ -41,7 +41,9 @@ public UserService(UserRepository userRepository, public UserResponseDTO save(UserRequestDTO dto) { User user = new User(); user.setAuth_id(dto.getAuthId()); + user.setUsername(dto.getUsername()); user.setAvatar(dto.getAvatar()); + user.setBanner(dto.getBanner()); return toResponse(userRepository.save(user)); } @@ -54,7 +56,9 @@ public UserResponseDTO update(UUID id, UserRequestDTO dto) { throw new InvalidFieldException("ID de autenticação (authId) imutável: " + dto.getAuthId()); } + user.setUsername(dto.getUsername()); user.setAvatar(dto.getAvatar()); + user.setBanner(dto.getBanner()); return toResponse(userRepository.save(user)); } diff --git a/src/main/java/com/solaria/persistence/util/RegexValidator.java b/src/main/java/com/solaria/persistence/util/RegexValidator.java index d1b2fec..5d217ed 100644 --- a/src/main/java/com/solaria/persistence/util/RegexValidator.java +++ b/src/main/java/com/solaria/persistence/util/RegexValidator.java @@ -17,6 +17,8 @@ public final class RegexValidator { public static final String CPF_REGEX = "^\\d{11}$"; + public static final String USERNAME_REGEX = "^[a-z0-9_]{3,30}$"; + private RegexValidator() {} }