feat : add API user registration
This commit is contained in:
@@ -19,6 +19,7 @@ dependencies {
|
||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-jdbc:2.7.3'
|
||||
implementation 'org.projectlombok:lombok:1.18.24'
|
||||
annotationProcessor 'org.projectlombok:lombok'
|
||||
|
||||
// https://mvnrepository.com/artifact/org.postgresql/postgresql
|
||||
//implementation group: 'org.postgresql', name: 'postgresql', version: '42.5.0'
|
||||
|
||||
@@ -1,7 +1,16 @@
|
||||
package com.io.realworld.DTO;
|
||||
|
||||
import javax.validation.constraints.Email;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
@Builder
|
||||
@Getter
|
||||
@JsonTypeName("user")
|
||||
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT)
|
||||
public class UserResponse {
|
||||
|
||||
private String email;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.io.realworld.DTO;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -8,6 +10,8 @@ import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
@JsonTypeName("user")
|
||||
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT)
|
||||
public class UserSignupRequest {
|
||||
|
||||
@NotBlank
|
||||
|
||||
@@ -5,21 +5,23 @@ import com.io.realworld.DTO.UserResponse;
|
||||
import com.io.realworld.repository.User;
|
||||
import com.io.realworld.service.UserService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(path = "/api")
|
||||
public class UserController {
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
|
||||
@PostMapping("/users")
|
||||
public User signup(@Valid @RequestBody UserSignupRequest userSignupRequest){
|
||||
return userService.signup(userSignupRequest);
|
||||
public UserResponse signup(@Valid @RequestBody UserSignupRequest userSignupRequest) {
|
||||
User user = userService.signup(userSignupRequest);
|
||||
return UserResponse.builder().username(user.getUsername())
|
||||
.email(user.getEmail())
|
||||
.bio(user.getBio())
|
||||
.image(user.getImage())
|
||||
.token(user.getToken()).build();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package com.io.realworld.repository;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Table(name = "users")
|
||||
@Entity
|
||||
@Getter
|
||||
public class User {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@@ -16,6 +18,10 @@ public class User {
|
||||
private String email;
|
||||
private String password;
|
||||
|
||||
private String bio;
|
||||
private String image;
|
||||
private String token;
|
||||
|
||||
@Builder
|
||||
public User(String username, String email, String password){
|
||||
this.username = username;
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.io.realworld.repository;
|
||||
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
|
||||
public interface UserRepository extends CrudRepository<User,Long> {
|
||||
public interface UserRepository extends CrudRepository<User, Long> {
|
||||
User save(User user);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
package com.io.realworld.service;
|
||||
|
||||
import com.io.realworld.DTO.UserSignupRequest;
|
||||
import com.io.realworld.DTO.UserResponse;
|
||||
import com.io.realworld.repository.User;
|
||||
import com.io.realworld.repository.UserRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class UserService {
|
||||
|
||||
@Autowired
|
||||
private UserRepository userRepository;
|
||||
|
||||
public User signup(UserSignupRequest userSignupRequest){
|
||||
System.out.println(userSignupRequest.getUsername());
|
||||
public User signup(UserSignupRequest userSignupRequest) {
|
||||
return userRepository.save(User.of(userSignupRequest.getUsername(),
|
||||
userSignupRequest.getEmail(),
|
||||
userSignupRequest.getPassword()));
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
server.servlet.contextPath=/api
|
||||
# H2
|
||||
spring.h2.console.enabled=true
|
||||
spring.h2.console.path=/h2-console
|
||||
|
||||
Reference in New Issue
Block a user