Fix imports in project

This commit is contained in:
rayankonecny 2025-12-03 19:11:09 +00:00
parent 1302a98766
commit 4afbe40da5
36 changed files with 89 additions and 44 deletions

View file

@ -1,3 +1,4 @@
{ {
"java.compile.nullAnalysis.mode": "disabled" "java.compile.nullAnalysis.mode": "disabled",
"editor.fontFamily": "FiraCode Nerd Font Mono"
} }

View file

@ -1,4 +1,4 @@
package main.java.models.enums; package models.enums;
import java.util.Arrays; import java.util.Arrays;

View file

@ -1,4 +1,4 @@
package main.java.models.exceptions; package models.exceptions;
public class ResourceNotFoundException extends RuntimeException { public class ResourceNotFoundException extends RuntimeException {

View file

@ -1,8 +1,7 @@
package main.java.models.exceptions; package models.exceptions;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Getter; import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
@Getter @Getter

View file

@ -1,6 +1,5 @@
package main.java.models.exceptions; package models.exceptions;
import java.lang.reflect.Field;
import java.util.List; import java.util.List;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;

View file

@ -1,22 +1,21 @@
package main.java.models.requests; package models.requests;
import java.util.Set; import java.util.Set;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.Email; import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size; import jakarta.validation.constraints.Size;
import main.java.models.enums.ProfileEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.With; import lombok.With;
import io.swagger.v3.oas.annotations.media.Schema;
import models.enums.ProfileEnum;
@With @With
public record CreateUserRequest( public record CreateUserRequest(
@Schema(description = "Name of the user", example = "John Doe", required = true) @NotEmpty(message = "Name cannot be empty") @Size(min = 3, max = 50, message = "Name must contain between 3 and 50 characters") String name, @Schema(description = "Name of the user", example = "John Doe", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "Name cannot be empty") @Size(min = 3, max = 50, message = "Name must contain between 3 and 50 characters") String name,
@Schema(description = "Email of the user", example = "rayanvix@gmail.com") @Email(message = "Invalid email format") @NotBlank(message = "Email cannot be blank") @Size(min = 6, max = 50, message = "Email must contain between 6 and 50 characters") String email, @Schema(description = "Email of the user", example = "rayanvix@gmail.com") @Email(message = "Invalid email format") @NotBlank(message = "Email cannot be blank") @Size(min = 6, max = 50, message = "Email must contain between 6 and 50 characters") String email,
@Schema(description = "Password of the user", example = "P@ssw0rd!", required = true) @NotEmpty(message = "Password cannot be empty") @Size(min = 6, max = 20, message = "Password must contain between 6 and 20 characters") @NotBlank(message = "Password cannot be blank") String password, @Schema(description = "Password of the user", example = "P@ssw0rd!", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "Password cannot be empty") @Size(min = 6, max = 20, message = "Password must contain between 6 and 20 characters") @NotBlank(message = "Password cannot be blank") String password,
@Schema(description = "Profiles assigned to the user", example = "[\" ROLE_ADMIN \", \"ROLE_CUSTOMER \" ]", required = true) Set<ProfileEnum> profiles) { @Schema(description = "Profiles assigned to the user", example = "[\" ROLE_ADMIN \", \"ROLE_CUSTOMER \" ]", requiredMode = Schema.RequiredMode.REQUIRED) Set<ProfileEnum> profiles) {
} }

View file

@ -1,9 +1,9 @@
package main.java.models.responses; package models.responses;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Set; import java.util.Set;
import main.java.models.enums.*; import models.enums.ProfileEnum;
public record UserResponse( public record UserResponse(
String id, String id,

View file

@ -1,11 +1,11 @@
main/java/models/exceptions/ResourceNotFoundException.class models/exceptions/ValidationException$ValidationExceptionBuilder.class
main/java/models/exceptions/ValidationException$ValidationExceptionBuilderImpl.class models/exceptions/ValidationException$ValidationExceptionBuilderImpl.class
main/java/models/exceptions/ValidationException$FieldError.class models/exceptions/ResourceNotFoundException.class
main/java/models/exceptions/ValidationException.class models/exceptions/StandardError$StandardErrorBuilderImpl.class
main/java/models/exceptions/StandardError$StandardErrorBuilder.class models/responses/UserResponse.class
main/java/models/exceptions/StandardError$StandardErrorBuilderImpl.class models/requests/CreateUserRequest.class
main/java/models/responses/UserResponse.class models/exceptions/ValidationException$FieldError.class
main/java/models/enums/ProfileEnum.class models/exceptions/ValidationException.class
main/java/models/exceptions/StandardError.class models/exceptions/StandardError$StandardErrorBuilder.class
main/java/models/exceptions/ValidationException$ValidationExceptionBuilder.class models/enums/ProfileEnum.class
main/java/models/requests/CreateUserRequest.class models/exceptions/StandardError.class

22
rest.http Normal file
View file

@ -0,0 +1,22 @@
### Get user by id (replace {{id}} or use a concrete id like 1)
GET http://175.15.15.91:8080/api/users/692cca264e957945b99f731a
Accept: application/json
# Authorization: Bearer {{token}}
### Find all users
GET http://175.15.15.91:8080/api/users
Accept: application/json
# Authorization: Bearer {{token}}
### Create a new user
POST http://175.15.15.91:8080/api/users
Content-Type: application/json
Accept: application/json
# Authorization: Bearer {{token}}
{
"name": "John Doe",
"email": "john.doe@example.com",
"password": "Pa$$w0rd",
"role": "user"
}

View file

@ -1,5 +1,7 @@
package br.com.rayankonecny.userserviceapi.controller; package br.com.rayankonecny.userserviceapi.controller;
import java.util.List;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -10,15 +12,16 @@ import org.springframework.web.bind.annotation.RequestBody;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.ArraySchema;
import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import main.java.models.exceptions.StandardError; import models.exceptions.StandardError;
import main.java.models.requests.CreateUserRequest; import models.requests.CreateUserRequest;
import main.java.models.responses.UserResponse; import models.responses.UserResponse;
@Tag(name = "User Controller", description = "Controller responsible for user operations") @Tag(name = "User Controller", description = "Controller responsible for user operations")
@RequestMapping("/api/users") @RequestMapping("/api/users")
@ -42,4 +45,12 @@ public interface UserController {
}) })
@PostMapping @PostMapping
ResponseEntity<Void> save(@Valid @RequestBody final CreateUserRequest createUserRequest); ResponseEntity<Void> save(@Valid @RequestBody final CreateUserRequest createUserRequest);
@Operation(summary = "Find all users", description = "Retrieve a list of all users")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Users retrieved successfully", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, array = @ArraySchema(schema = @Schema(implementation = UserResponse.class)))),
@ApiResponse(responseCode = "500", description = "Internal server error", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, schema = @Schema(implementation = StandardError.class))),
})
@GetMapping
ResponseEntity<List<UserResponse>> findAll();
} }

View file

@ -9,12 +9,11 @@ import org.springframework.web.bind.annotation.ExceptionHandler;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import main.java.models.exceptions.ValidationException; import models.exceptions.ValidationException;
import main.java.models.exceptions.ResourceNotFoundException; import models.exceptions.ResourceNotFoundException;
import main.java.models.exceptions.StandardError; import models.exceptions.StandardError;
import static java.time.LocalDateTime.now; import static java.time.LocalDateTime.now;
import static org.springframework.http.HttpStatus.BAD_REQUEST;
import static org.springframework.http.HttpStatus.CONFLICT; import static org.springframework.http.HttpStatus.CONFLICT;
import static org.springframework.http.HttpStatus.NOT_FOUND; import static org.springframework.http.HttpStatus.NOT_FOUND;

View file

@ -6,11 +6,13 @@ import br.com.rayankonecny.userserviceapi.controller.UserController;
import br.com.rayankonecny.userserviceapi.service.UserService; import br.com.rayankonecny.userserviceapi.service.UserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import main.java.models.requests.CreateUserRequest; import models.requests.CreateUserRequest;
import main.java.models.responses.UserResponse; import models.responses.UserResponse;
import static org.springframework.http.HttpStatus.CREATED; import static org.springframework.http.HttpStatus.CREATED;
import java.util.List;
@RestController @RestController
@RequiredArgsConstructor @RequiredArgsConstructor
public class UserControllerImpl implements UserController { public class UserControllerImpl implements UserController {
@ -28,4 +30,9 @@ public class UserControllerImpl implements UserController {
return ResponseEntity.status(CREATED.value()).build(); return ResponseEntity.status(CREATED.value()).build();
} }
@Override
public ResponseEntity<List<UserResponse>> findAll() {
return ResponseEntity.ok().body(userService.findAll());
}
} }

View file

@ -9,7 +9,7 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.With; import lombok.With;
import main.java.models.enums.ProfileEnum; import models.enums.ProfileEnum;
@With @With
@Data @Data

View file

@ -4,8 +4,8 @@ import org.mapstruct.Mapper;
import org.mapstruct.Mapping; import org.mapstruct.Mapping;
import br.com.rayankonecny.userserviceapi.entity.User; import br.com.rayankonecny.userserviceapi.entity.User;
import main.java.models.requests.CreateUserRequest; import models.requests.CreateUserRequest;
import main.java.models.responses.UserResponse; import models.responses.UserResponse;
import static org.mapstruct.NullValuePropertyMappingStrategy.IGNORE; import static org.mapstruct.NullValuePropertyMappingStrategy.IGNORE;
import static org.mapstruct.NullValueCheckStrategy.ALWAYS; import static org.mapstruct.NullValueCheckStrategy.ALWAYS;

View file

@ -1,14 +1,16 @@
package br.com.rayankonecny.userserviceapi.service; package br.com.rayankonecny.userserviceapi.service;
import java.util.List;
import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import br.com.rayankonecny.userserviceapi.mapper.UserMapper; import br.com.rayankonecny.userserviceapi.mapper.UserMapper;
import br.com.rayankonecny.userserviceapi.repository.UserRepository; import br.com.rayankonecny.userserviceapi.repository.UserRepository;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import main.java.models.responses.UserResponse; import models.responses.UserResponse;
import main.java.models.exceptions.ResourceNotFoundException; import models.exceptions.ResourceNotFoundException;
import main.java.models.requests.CreateUserRequest; import models.requests.CreateUserRequest;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@ -36,4 +38,10 @@ public class UserService {
}); });
} }
public List<UserResponse> findAll() {
return userRepository.findAll()
.stream()
.map(user -> userMapper.fromEntity(user))
.toList();
}
} }