Skip to content

Commit 44dc52d

Browse files
Ashish MishraAshish Mishra
authored andcommitted
adding /api/user/getEmailFromId api
1 parent bab50bf commit 44dc52d

10 files changed

Lines changed: 90 additions & 7 deletions

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
This project demonstrates how to containerize a **Spring Boot application** with **MySQL** and **Adminer** using **Docker Compose**.
44

5+
> Swagger Url: http://localhost:8080/swagger-ui/index.html#/
6+
57
## 📌 Project Structure
68

79
```

src/main/java/com/beneite/SpringWithDocker/controller/UserController.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.beneite.SpringWithDocker.controller;
22

3-
import com.beneite.SpringWithDocker.dto.UserDto;
3+
import com.beneite.SpringWithDocker.dto.requestDto.UserDto;
4+
import com.beneite.SpringWithDocker.dto.requestDto.UserIdRequestDto;
5+
import com.beneite.SpringWithDocker.dto.responseDto.UserIdResponseDto;
46
import com.beneite.SpringWithDocker.service.implementation.UserServiceImpl;
57
import io.swagger.v3.oas.annotations.Operation;
68
import io.swagger.v3.oas.annotations.responses.ApiResponse;
@@ -107,4 +109,18 @@ public ResponseEntity<String> deleteUserApi(@PathVariable("id") Long userId){
107109
return new ResponseEntity<>("User with id:"+userId+" Deleted", HttpStatus.OK);
108110
}
109111

112+
@Operation(
113+
summary = "Get User's Email from User id",
114+
description = "this Get User's Email from User id"
115+
)
116+
@ApiResponse(
117+
responseCode = "200",
118+
description = "200-success, display All email id of the user"
119+
)
120+
@PostMapping("getEmailFromId")
121+
public ResponseEntity<UserIdResponseDto> getUserEmailFromUserId(@Valid @RequestBody UserIdRequestDto userIdRequestDto){
122+
UserIdResponseDto userIdResponseDto = userServiceImpl.getUserEmailFromIdImplementation(userIdRequestDto);
123+
return new ResponseEntity<>(userIdResponseDto, HttpStatus.OK);
124+
}
125+
110126
}

src/main/java/com/beneite/SpringWithDocker/dto/UserDto.java renamed to src/main/java/com/beneite/SpringWithDocker/dto/requestDto/UserDto.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.beneite.SpringWithDocker.dto;
1+
package com.beneite.SpringWithDocker.dto.requestDto;
22

33
import io.swagger.v3.oas.annotations.media.Schema;
44
import jakarta.validation.constraints.Email;
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.beneite.SpringWithDocker.dto.requestDto;
2+
3+
4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
import jakarta.validation.constraints.NotEmpty;
6+
import jakarta.validation.constraints.NotNull;
7+
import lombok.AllArgsConstructor;
8+
import lombok.Getter;
9+
import lombok.NoArgsConstructor;
10+
import lombok.Setter;
11+
12+
@Schema(
13+
description = "User ID request DTO model information"
14+
)
15+
@Getter
16+
@Setter
17+
@NoArgsConstructor
18+
@AllArgsConstructor
19+
public class UserIdRequestDto {
20+
21+
@NotNull(message = "User ID cannot be null")
22+
@Schema(
23+
description = "User ID"
24+
)
25+
private Long userId;
26+
27+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.beneite.SpringWithDocker.dto.responseDto;
2+
3+
import io.swagger.v3.oas.annotations.media.Schema;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
import lombok.Setter;
8+
9+
@Schema(
10+
description = "User ID response DTO model information"
11+
)
12+
@Getter
13+
@Setter
14+
@NoArgsConstructor
15+
@AllArgsConstructor
16+
public class UserIdResponseDto {
17+
18+
@Schema(
19+
description = "User Email"
20+
)
21+
private String email;
22+
23+
}

src/main/java/com/beneite/SpringWithDocker/mapper/AutoUserMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.beneite.SpringWithDocker.mapper;
22

3-
import com.beneite.SpringWithDocker.dto.UserDto;
3+
import com.beneite.SpringWithDocker.dto.requestDto.UserDto;
44
import com.beneite.SpringWithDocker.entity.UserEntity;
55
import org.mapstruct.Mapper;
66
import org.mapstruct.factory.Mappers;

src/main/java/com/beneite/SpringWithDocker/mapper/UserMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.beneite.SpringWithDocker.mapper;
22

3-
import com.beneite.SpringWithDocker.dto.UserDto;
3+
import com.beneite.SpringWithDocker.dto.requestDto.UserDto;
44
import com.beneite.SpringWithDocker.entity.UserEntity;
55

66
public class UserMapper {

src/main/java/com/beneite/SpringWithDocker/service/UserService.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.beneite.SpringWithDocker.service;
22

33

4-
import com.beneite.SpringWithDocker.dto.UserDto;
4+
import com.beneite.SpringWithDocker.dto.requestDto.UserDto;
5+
import com.beneite.SpringWithDocker.dto.requestDto.UserIdRequestDto;
6+
import com.beneite.SpringWithDocker.dto.responseDto.UserIdResponseDto;
57

68
import java.util.List;
79

@@ -12,5 +14,6 @@ public interface UserService {
1214
List<UserDto> getAllUsersImplementation();
1315
UserDto updateUserImplementation(UserDto userDto);
1416
void deleteUserImplementation(Long userId);
17+
UserIdResponseDto getUserEmailFromIdImplementation(UserIdRequestDto userIdRequestDto);
1518

1619
}

src/main/java/com/beneite/SpringWithDocker/service/implementation/UserServiceImpl.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.beneite.SpringWithDocker.service.implementation;
22

33

4-
import com.beneite.SpringWithDocker.dto.UserDto;
4+
import com.beneite.SpringWithDocker.dto.requestDto.UserDto;
5+
import com.beneite.SpringWithDocker.dto.requestDto.UserIdRequestDto;
6+
import com.beneite.SpringWithDocker.dto.responseDto.UserIdResponseDto;
57
import com.beneite.SpringWithDocker.entity.UserEntity;
68
import com.beneite.SpringWithDocker.exception.DuplicateEmailException;
79
import com.beneite.SpringWithDocker.exception.ResourceNotFoundException;
@@ -79,5 +81,15 @@ public void deleteUserImplementation(Long userId) {
7981
userRepository.deleteById(userId);
8082
}
8183

84+
@Override
85+
public UserIdResponseDto getUserEmailFromIdImplementation(UserIdRequestDto userIdRequestDto) {
86+
String email = userRepository.findById(userIdRequestDto.getUserId())
87+
.map(user -> user.getEmail())
88+
.orElseThrow(
89+
() -> new ResourceNotFoundException("User", "id", userIdRequestDto.getUserId())
90+
);
91+
return new UserIdResponseDto(email);
92+
}
93+
8294

8395
}

src/test/java/com/beneite/SpringWithDocker/controllerTest/UserControllerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.beneite.SpringWithDocker.controllerTest;
22

33
import com.beneite.SpringWithDocker.controller.UserController;
4-
import com.beneite.SpringWithDocker.dto.UserDto;
4+
import com.beneite.SpringWithDocker.dto.requestDto.UserDto;
55
import com.beneite.SpringWithDocker.service.implementation.UserServiceImpl;
66
import org.junit.jupiter.api.Test;
77
import org.junit.jupiter.api.extension.ExtendWith;

0 commit comments

Comments
 (0)