create post api
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
package com.example.restfulwebservice.user;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class Post {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
private Integer id;
|
||||
private String description;
|
||||
|
||||
// User : Post -> 1 : (0~N)
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JsonIgnore
|
||||
private User user;
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.example.restfulwebservice.user;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface PostRepository extends JpaRepository<Post, Integer> {
|
||||
}
|
||||
@@ -12,9 +12,11 @@ import lombok.NoArgsConstructor;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.validation.constraints.Past;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@@ -39,4 +41,15 @@ public class User {
|
||||
|
||||
@ApiModelProperty(notes = "사용자의 주민번호을 입력해 주세요")
|
||||
private String ssn;
|
||||
|
||||
@OneToMany(mappedBy = "user")
|
||||
private List<Post> posts;
|
||||
|
||||
public User(Integer id, String name, Date joinDate, String password, String ssn) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.joinDate = joinDate;
|
||||
this.password = password;
|
||||
this.ssn = ssn;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn;
|
||||
@RequestMapping("/jpa")
|
||||
public class UserJpaController {
|
||||
private final UserRepository userRepository;
|
||||
private final PostRepository postRepository;
|
||||
|
||||
@GetMapping("/users")
|
||||
public List<User> retrieveAllUsers() {
|
||||
@@ -56,4 +57,32 @@ public class UserJpaController {
|
||||
|
||||
return ResponseEntity.created(location).build();
|
||||
}
|
||||
|
||||
@GetMapping("/users/{id}/posts")
|
||||
public List<Post> retrieveAllPostByUser(@PathVariable int id) {
|
||||
Optional<User> user = userRepository.findById(id);
|
||||
if(user.isEmpty()){
|
||||
throw new UserNotFoundException(String.format("ID[%s] not found", id));
|
||||
}
|
||||
|
||||
return user.get().getPosts();
|
||||
}
|
||||
|
||||
@PostMapping("/users/{id}/posts")
|
||||
public ResponseEntity<Post> createPost(@PathVariable int id, @RequestBody Post post) {
|
||||
Optional<User> user = userRepository.findById(id);
|
||||
if(user.isEmpty()){
|
||||
throw new UserNotFoundException(String.format("ID[%s] not found", id));
|
||||
}
|
||||
|
||||
post.setUser(user.get());
|
||||
Post savedPost = postRepository.save(post);
|
||||
|
||||
URI location = ServletUriComponentsBuilder.fromCurrentRequest()
|
||||
.path("/{id}")
|
||||
.buildAndExpand(savedPost.getId())
|
||||
.toUri();
|
||||
|
||||
return ResponseEntity.created(location).build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
insert into user values(100000, sysdate(), 'user1', 'test1', '700101-1111111');
|
||||
insert into user values(100001, sysdate(), 'user2', 'test2', '800101-1231234');
|
||||
insert into user values(100002, sysdate(), 'user3', 'test3', '900101-1121123');
|
||||
insert into user values(10000, sysdate(), 'user1', 'test1', '700101-1111111');
|
||||
insert into user values(10001, sysdate(), 'user2', 'test2', '800101-1231234');
|
||||
insert into user values(10002, sysdate(), 'user3', 'test3', '900101-1121123');
|
||||
|
||||
insert into post values(10000, 'first post', 10000);
|
||||
insert into post values(10001, 'second post', 10001);
|
||||
insert into post values(10002, 'third post' , 10002);
|
||||
Reference in New Issue
Block a user