Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Soddong #21

Merged
merged 5 commits into from
Sep 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,30 @@
package kr.megaptera.assignment.application;

import kr.megaptera.assignment.dto.PostCreateDto;
import kr.megaptera.assignment.dto.PostDto;
import kr.megaptera.assignment.model.MultiLineText;
import kr.megaptera.assignment.model.Post;
import kr.megaptera.assignment.model.SingleLineText;
import kr.megaptera.assignment.repository.PostRepository;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class CreatePostService {
private final PostRepository postRepository;

public CreatePostService(PostRepository postRepository) {
this.postRepository = postRepository;
}

public PostDto createPost(PostCreateDto postCreateDto) {
Post post = new Post(
new SingleLineText(postCreateDto.getTitle()),
new SingleLineText(postCreateDto.getAuthor()),
new MultiLineText(postCreateDto.getContent()));
postRepository.save(post);

return new PostDto(post);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,21 @@
package kr.megaptera.assignment.application;

import kr.megaptera.assignment.dto.PostDto;
import kr.megaptera.assignment.model.Post;
import kr.megaptera.assignment.model.PostId;
import kr.megaptera.assignment.repository.PostRepository;
import org.springframework.stereotype.Service;

@Service
public class DeletePostService {
private final PostRepository postRepository;

public DeletePostService(PostRepository postRepository) {
this.postRepository = postRepository;
}

public PostDto deletePost(String id) {
Post post = postRepository.remove(PostId.of(id));
return new PostDto(post);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,21 @@
package kr.megaptera.assignment.application;

import kr.megaptera.assignment.dto.PostDto;
import kr.megaptera.assignment.model.Post;
import kr.megaptera.assignment.model.PostId;
import kr.megaptera.assignment.repository.PostRepository;
import org.springframework.stereotype.Service;

@Service
public class GetPostService {
private final PostRepository postRepository;

public GetPostService(PostRepository postRepository) {
this.postRepository = postRepository;
}

public PostDto getPostDto(String id) {
Post post = postRepository.findOne(PostId.of(id));
return new PostDto(post);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,23 @@
package kr.megaptera.assignment.application;

import kr.megaptera.assignment.dto.PostDto;
import kr.megaptera.assignment.model.Post;
import kr.megaptera.assignment.repository.PostRepository;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class GetPostsService {
private final PostRepository postRepository;

public GetPostsService(PostRepository postRepository) {
this.postRepository = postRepository;
}

public List<PostDto> getPostDtos() {
List<Post> posts = postRepository.findAll();

return posts.stream().map(PostDto::new).toList();
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,30 @@
package kr.megaptera.assignment.application;

import kr.megaptera.assignment.dto.PostDto;
import kr.megaptera.assignment.dto.PostUpdateDto;
import kr.megaptera.assignment.model.MultiLineText;
import kr.megaptera.assignment.model.Post;
import kr.megaptera.assignment.model.PostId;
import kr.megaptera.assignment.model.SingleLineText;
import kr.megaptera.assignment.repository.PostRepository;
import org.springframework.stereotype.Service;

@Service
public class UpdatePostService {
private final PostRepository postRepository;


public UpdatePostService(PostRepository postRepository) {
this.postRepository = postRepository;
}

public PostDto updatePost(PostUpdateDto postUpdateDto, String id) {
Post post = postRepository.findOne(PostId.of(id));
post.update(
new SingleLineText(postUpdateDto.getTitle()),
new MultiLineText(postUpdateDto.getContent())
);

return new PostDto(post);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,84 @@
package kr.megaptera.assignment.controllers;

import jakarta.websocket.server.PathParam;
import kr.megaptera.assignment.application.CreatePostService;
import kr.megaptera.assignment.application.DeletePostService;
import kr.megaptera.assignment.application.GetPostService;
import kr.megaptera.assignment.application.GetPostsService;
import kr.megaptera.assignment.application.UpdatePostService;
import kr.megaptera.assignment.dto.PostCreateDto;
import kr.megaptera.assignment.dto.PostDto;
import kr.megaptera.assignment.dto.PostUpdateDto;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@CrossOrigin
@RestController
@RequestMapping("/posts")
public class PostController {
private CreatePostService createPostService;
private GetPostsService getPostsService;
private GetPostService getPostService;
private UpdatePostService updatePostService;
private DeletePostService deletePostService;

public PostController(CreatePostService createPostService,
GetPostsService getPostsService,
GetPostService getPostService,
UpdatePostService updatePostService,
DeletePostService deletePostService
) {
this.createPostService = createPostService;
this.getPostsService = getPostsService;
this.getPostService = getPostService;
this.updatePostService = updatePostService;
this.deletePostService = deletePostService;
}

@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public PostDto create(@RequestBody PostCreateDto postCreateDto){
PostDto created = createPostService.createPost(postCreateDto);
return created;
}

@GetMapping
public List<PostDto> getLists(){
List<PostDto> postDtos = getPostsService.getPostDtos();
return postDtos;
}

@GetMapping("/{id}")
public PostDto getDetail(@PathVariable String id){
PostDto postDto = getPostService.getPostDto(id);
return postDto;
}

@PatchMapping("/{id}")
public PostDto update(@PathVariable String id,
@RequestBody PostUpdateDto postUpdateDto){
PostDto updated = updatePostService.updatePost(postUpdateDto, id);

return updated;
}

@DeleteMapping("/{id}")
public PostDto delete(@PathVariable String id){
PostDto postDto = deletePostService.deletePost(id);

return postDto;
}

}
4 changes: 4 additions & 0 deletions src/main/java/kr/megaptera/assignment/dto/CommentDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package kr.megaptera.assignment.dto;

public class CommentDto {
}
31 changes: 31 additions & 0 deletions src/main/java/kr/megaptera/assignment/dto/PostCreateDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package kr.megaptera.assignment.dto;

public class PostCreateDto {
private String title;
private String author;
private String content;

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getAuthor() {
return author;
}

public void setAuthor(String author) {
this.author = author;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}
}
59 changes: 59 additions & 0 deletions src/main/java/kr/megaptera/assignment/dto/PostDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package kr.megaptera.assignment.dto;

import kr.megaptera.assignment.model.Post;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

public class PostDto {
private String id;
private String title;
private String author;
private String content;

public PostDto(Post post) {
this.id = post.id().toString();
this.title = post.title().toString();
this.author = post.author().toString();
this.content = post.content().toString();
}

public PostDto(String id, String title, String author, String content) {
this.id = id;
this.title = title;
this.author = author;
this.content = content;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getAuthor() {
return author;
}

public void setAuthor(String author) {
this.author = author;
}

public String getContent() {
return content;
}

public void setContent(String comment) {
this.content = content;
}

}
22 changes: 22 additions & 0 deletions src/main/java/kr/megaptera/assignment/dto/PostUpdateDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package kr.megaptera.assignment.dto;

public class PostUpdateDto {
private String title;
private String content;

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package kr.megaptera.assignment.exception;

public class PostNotFound extends RuntimeException {
}
4 changes: 4 additions & 0 deletions src/main/java/kr/megaptera/assignment/model/Comment.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package kr.megaptera.assignment.model;

public class Comment {
}
17 changes: 17 additions & 0 deletions src/main/java/kr/megaptera/assignment/model/MultiLineText.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package kr.megaptera.assignment.model;

import java.util.Arrays;
import java.util.List;

public class MultiLineText {
private List<String> lines;

public MultiLineText(String text) {
this.lines = Arrays.asList(text.split("\n"));
}

@Override
public String toString(){
return String.join("\n", lines);
}
}
Loading
Loading