Fix imports in project
This commit is contained in:
parent
1302a98766
commit
4afbe40da5
36 changed files with 89 additions and 44 deletions
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
|
|
@ -1,3 +1,4 @@
|
||||||
{
|
{
|
||||||
"java.compile.nullAnalysis.mode": "disabled"
|
"java.compile.nullAnalysis.mode": "disabled",
|
||||||
|
"editor.fontFamily": "FiraCode Nerd Font Mono"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package main.java.models.enums;
|
package models.enums;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package main.java.models.exceptions;
|
package models.exceptions;
|
||||||
|
|
||||||
public class ResourceNotFoundException extends RuntimeException {
|
public class ResourceNotFoundException extends RuntimeException {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -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
22
rest.http
Normal 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"
|
||||||
|
}
|
||||||
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Add table
Reference in a new issue