From 577edf2cc49027ccc775d09e206b319a18916590 Mon Sep 17 00:00:00 2001 From: Gunseung Jin Date: Sun, 16 Apr 2023 00:41:28 +0900 Subject: [PATCH 1/3] homework --- .../controller/PostController.java | 40 ++++++++++++++++++- .../cnu/real_coding_server/entity/Post.java | 1 + .../repository/PostRepository.java | 2 + .../service/PostService.java | 38 ++++++++++++++++++ 4 files changed, 80 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cnu/real_coding_server/controller/PostController.java b/src/main/java/com/cnu/real_coding_server/controller/PostController.java index 8d7b907..e4290a2 100644 --- a/src/main/java/com/cnu/real_coding_server/controller/PostController.java +++ b/src/main/java/com/cnu/real_coding_server/controller/PostController.java @@ -1,7 +1,45 @@ package com.cnu.real_coding_server.controller; -import org.springframework.web.bind.annotation.RestController; +import com.cnu.real_coding_server.entity.Post; +import com.cnu.real_coding_server.model.request.PostRequest; +import com.cnu.real_coding_server.service.PostService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @RestController +@RequestMapping("/posts") +@RequiredArgsConstructor public class PostController { + private final PostService postService; + + @PostMapping + public ResponseEntity createPost(@RequestBody PostRequest postRequest) { + return ResponseEntity.ok(postService.createPost(postRequest)); + } + + @GetMapping + public ResponseEntity> getPost() { + return ResponseEntity.ok(postService.getPost()); + } + + @GetMapping("/{postId}") + public ResponseEntity getPost(@PathVariable("postId") Integer postId) { + return ResponseEntity.ok(postService.getPost(postId).orElse(null)); + } + + @PutMapping("/{postId}") + public ResponseEntity updatePost(@PathVariable("postId") Integer postId, + @RequestBody PostRequest postRequest) { + return ResponseEntity.ok(postService.updatePost(postId, postRequest).orElse(null)); + } + + @DeleteMapping("/{postId}") + public ResponseEntity deletePost(@PathVariable("postId") Integer postId) { + postService.deletePost(postId); + + return ResponseEntity.noContent().build(); + } } diff --git a/src/main/java/com/cnu/real_coding_server/entity/Post.java b/src/main/java/com/cnu/real_coding_server/entity/Post.java index 5cfa06a..bb99748 100644 --- a/src/main/java/com/cnu/real_coding_server/entity/Post.java +++ b/src/main/java/com/cnu/real_coding_server/entity/Post.java @@ -20,6 +20,7 @@ public class Post extends BaseEntity { @Setter private String contents; + @Setter @Enumerated(EnumType.STRING) private Tag tag; diff --git a/src/main/java/com/cnu/real_coding_server/repository/PostRepository.java b/src/main/java/com/cnu/real_coding_server/repository/PostRepository.java index 0366c87..ee40fc2 100644 --- a/src/main/java/com/cnu/real_coding_server/repository/PostRepository.java +++ b/src/main/java/com/cnu/real_coding_server/repository/PostRepository.java @@ -1,6 +1,7 @@ package com.cnu.real_coding_server.repository; import com.cnu.real_coding_server.entity.Post; +import com.cnu.real_coding_server.model.request.PostRequest; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -10,4 +11,5 @@ public interface PostRepository extends JpaRepository { // List findAll(); // Optional findById(Integer postId); // void delete(Post post); + } diff --git a/src/main/java/com/cnu/real_coding_server/service/PostService.java b/src/main/java/com/cnu/real_coding_server/service/PostService.java index f79fbb8..fd1b045 100644 --- a/src/main/java/com/cnu/real_coding_server/service/PostService.java +++ b/src/main/java/com/cnu/real_coding_server/service/PostService.java @@ -1,7 +1,45 @@ package com.cnu.real_coding_server.service; +import com.cnu.real_coding_server.entity.Post; +import com.cnu.real_coding_server.model.request.PostRequest; +import com.cnu.real_coding_server.repository.PostRepository; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Optional; + @Service +@RequiredArgsConstructor public class PostService { + private final PostRepository postRepository; + + public Post createPost(PostRequest postRequest) { + return postRepository.save(postRequest.toEntity()); + } + + public List getPost() { + return postRepository.findAll(); + } + + public Optional getPost(Integer postId) { + return postRepository.findById(postId); + } + + public Optional updatePost(Integer postId, PostRequest postRequest) { + return postRepository.findById(postId) + .map(post -> { + post.setTitle(postRequest.getTitle()); + post.setContents(postRequest.getContents()); + post.setTag(postRequest.getTag()); + return postRepository.save(post); + }); + } + + public void deletePost(Integer postId) { + postRepository.findById(postId) + .ifPresent(post -> { + postRepository.delete(post); // postRepository::delete 로도 가능. + }); + } } From cf71577f714b9b3d8588eea31428bf053073c14f Mon Sep 17 00:00:00 2001 From: Gunseung Jin Date: Fri, 21 Apr 2023 22:45:21 +0900 Subject: [PATCH 2/3] proj --- .../java/com/cnu/ad/model/Advertisment.java | 2 + .../java/com/cnu/ad/service/PostService.java | 2 + ad/src/main/resources/application.yml | 32 +++++++++++++ .../cnu/post/controller/PostController.java | 2 + .../controller/PostController.java | 40 ++++++++-------- .../service/PostService.java | 45 ------------------ .../service/ProectService.java | 46 +++++++++++++++++++ 7 files changed, 105 insertions(+), 64 deletions(-) create mode 100644 ad/src/main/java/com/cnu/ad/model/Advertisment.java create mode 100644 ad/src/main/java/com/cnu/ad/service/PostService.java create mode 100644 ad/src/main/resources/application.yml create mode 100644 post/src/main/java/com/cnu/post/controller/PostController.java delete mode 100644 src/main/java/com/cnu/real_coding_server/service/PostService.java create mode 100644 src/main/java/com/cnu/real_coding_server/service/ProectService.java diff --git a/ad/src/main/java/com/cnu/ad/model/Advertisment.java b/ad/src/main/java/com/cnu/ad/model/Advertisment.java new file mode 100644 index 0000000..c9eb464 --- /dev/null +++ b/ad/src/main/java/com/cnu/ad/model/Advertisment.java @@ -0,0 +1,2 @@ +package com.cnu.ad.model;public record Advertisment() { +} diff --git a/ad/src/main/java/com/cnu/ad/service/PostService.java b/ad/src/main/java/com/cnu/ad/service/PostService.java new file mode 100644 index 0000000..f4bfe3f --- /dev/null +++ b/ad/src/main/java/com/cnu/ad/service/PostService.java @@ -0,0 +1,2 @@ +package com.cnu.ad.service;public class PostService { +} diff --git a/ad/src/main/resources/application.yml b/ad/src/main/resources/application.yml new file mode 100644 index 0000000..b92eded --- /dev/null +++ b/ad/src/main/resources/application.yml @@ -0,0 +1,32 @@ +spring: + # H2 Setting Info (H2 Console? ???? ?? ???? ??) + h2: + console: + enabled: true # H2 Console? ???? ?? (H2 Console? H2 Database? UI? ????? ??) + path: /h2-console # H2 Console? Path + # Database Setting Info (Database? H2? ???? ?? H2?? ?? ??) + datasource: + driver-class-name: org.h2.Driver # Database? H2? ?????. + url: jdbc:h2:mem:devblog # H2 ?? ?? + username: sa # H2 ?? ? ??? username ?? (??? ??? ??) + password: # H2 ?? ? ??? password ?? (??? ??? ??) + + jpa: + hibernate: + ddl-auto: create # ??????? ??? ? ??????? ????? ?? ??? ?? + properties: + hibernate: + format_sql: true # ???? query? ??? + + resilience4j: + circuitbreaker: + instances: + ad: + slidingWindowType: COUNT_BASED + slidingWindowSize: 5 + failureRateThreshold: 50 # 에러 비율로 해당 값 이상으로 에러 발생시 서킷이 open + slowCallRateThreshold: 100 + minimumNumberOfCalls: 3 # circuitbreaker가 에러비율 또는 slow call 비율을 계산하기 전에 요구되는 최소 호출 횟수 + + logging.level: + org.hibernate.SQL: debug \ No newline at end of file diff --git a/post/src/main/java/com/cnu/post/controller/PostController.java b/post/src/main/java/com/cnu/post/controller/PostController.java new file mode 100644 index 0000000..b5e7d15 --- /dev/null +++ b/post/src/main/java/com/cnu/post/controller/PostController.java @@ -0,0 +1,2 @@ +package com.cnu.post.controller;public class PostController { +} diff --git a/src/main/java/com/cnu/real_coding_server/controller/PostController.java b/src/main/java/com/cnu/real_coding_server/controller/PostController.java index e4290a2..7e086fb 100644 --- a/src/main/java/com/cnu/real_coding_server/controller/PostController.java +++ b/src/main/java/com/cnu/real_coding_server/controller/PostController.java @@ -1,8 +1,10 @@ package com.cnu.real_coding_server.controller; import com.cnu.real_coding_server.entity.Post; +import com.cnu.real_coding_server.entity.Project; import com.cnu.real_coding_server.model.request.PostRequest; -import com.cnu.real_coding_server.service.PostService; +import com.cnu.real_coding_server.model.request.ProjectRequest; +import com.cnu.real_coding_server.service.ProjectService; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -10,36 +12,36 @@ import java.util.List; @RestController -@RequestMapping("/posts") +@RequestMapping("/projects") @RequiredArgsConstructor -public class PostController { - private final PostService postService; +public class ProjectController { + private final ProjectService projectService; @PostMapping - public ResponseEntity createPost(@RequestBody PostRequest postRequest) { - return ResponseEntity.ok(postService.createPost(postRequest)); + public ResponseEntity createProject(@RequestBody ProjectRequest projectRequest) { + return ResponseEntity.ok(projectService.createProject(projectRequest)); } @GetMapping - public ResponseEntity> getPost() { - return ResponseEntity.ok(postService.getPost()); + public ResponseEntity> getProjects() { + return ResponseEntity.ok(projectService.getProjects()); } - @GetMapping("/{postId}") - public ResponseEntity getPost(@PathVariable("postId") Integer postId) { - return ResponseEntity.ok(postService.getPost(postId).orElse(null)); + @GetMapping("/{projectId}") + public ResponseEntity getProject(@PathVariable("projectId") Integer projectId) { + return ResponseEntity.ok(projectService.getProject(projectId).orElse(null)); } - @PutMapping("/{postId}") - public ResponseEntity updatePost(@PathVariable("postId") Integer postId, - @RequestBody PostRequest postRequest) { - return ResponseEntity.ok(postService.updatePost(postId, postRequest).orElse(null)); + @PutMapping("/{projectId}") + public ResponseEntity updateProject(@PathVariable("projectId") Integer projectId, ProjectRequest projectRequest) { + return ResponseEntity.ok(projectService.updateProject(projectId, projectRequest).orElse(null)); } - @DeleteMapping("/{postId}") - public ResponseEntity deletePost(@PathVariable("postId") Integer postId) { - postService.deletePost(postId); + @DeleteMapping("/{projectId}") + public ResponseEntity deleteProject(@PathVariable("projectId") Integer projectId) { + projectService.deleteProject(projectId); return ResponseEntity.noContent().build(); } -} + +} \ No newline at end of file diff --git a/src/main/java/com/cnu/real_coding_server/service/PostService.java b/src/main/java/com/cnu/real_coding_server/service/PostService.java deleted file mode 100644 index fd1b045..0000000 --- a/src/main/java/com/cnu/real_coding_server/service/PostService.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.cnu.real_coding_server.service; - -import com.cnu.real_coding_server.entity.Post; -import com.cnu.real_coding_server.model.request.PostRequest; -import com.cnu.real_coding_server.repository.PostRepository; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Optional; - -@Service -@RequiredArgsConstructor -public class PostService { - private final PostRepository postRepository; - - public Post createPost(PostRequest postRequest) { - return postRepository.save(postRequest.toEntity()); - } - - public List getPost() { - return postRepository.findAll(); - } - - public Optional getPost(Integer postId) { - return postRepository.findById(postId); - } - - public Optional updatePost(Integer postId, PostRequest postRequest) { - return postRepository.findById(postId) - .map(post -> { - post.setTitle(postRequest.getTitle()); - post.setContents(postRequest.getContents()); - post.setTag(postRequest.getTag()); - return postRepository.save(post); - }); - } - - public void deletePost(Integer postId) { - postRepository.findById(postId) - .ifPresent(post -> { - postRepository.delete(post); // postRepository::delete 로도 가능. - }); - } -} diff --git a/src/main/java/com/cnu/real_coding_server/service/ProectService.java b/src/main/java/com/cnu/real_coding_server/service/ProectService.java new file mode 100644 index 0000000..62854f6 --- /dev/null +++ b/src/main/java/com/cnu/real_coding_server/service/ProectService.java @@ -0,0 +1,46 @@ +package com.cnu.real_coding_server.service; + +import com.cnu.real_coding_server.entity.Post; +import com.cnu.real_coding_server.entity.Project; +import com.cnu.real_coding_server.model.request.ProjectRequest; +import com.cnu.real_coding_server.repository.ProjectRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +@RequiredArgsConstructor +public class ProjectService { + private final ProjectRepository projectRepository; + + public Project createProject(ProjectRequest projectRequest) { + return projectRepository.save(projectRequest.toEntity()); + } + + public List getProjects() { + return projectRepository.findAll(); + } + + public Optional getProject(Integer projectId) { + return projectRepository.findById(projectId); + } + + public Optional updateProject(Integer projectId, ProjectRequest projectRequest) { + return projectRepository.findById(projectId) + .map(project -> { + project.setTitle(projectRequest.getTitle()); + project.setSummary(projectRequest.getSummary()); + project.setDescription(projectRequest.getDescription()); + project.setStartDate(projectRequest.getStartDate()); + project.setEndDate(projectRequest.getEndDate()); + return projectRepository.save(project); + }); + } + + public void deleteProject(Integer projectId) { + projectRepository.findById(projectId) + .ifPresent(projectRepository::delete); + } +} \ No newline at end of file From db46ec899af0102dc832fc78dd61709658ad351a Mon Sep 17 00:00:00 2001 From: Gunseung Jin Date: Fri, 21 Apr 2023 22:45:53 +0900 Subject: [PATCH 3/3] proj --- .../service/{ProectService.java => ProjectService.java} | 1 - 1 file changed, 1 deletion(-) rename src/main/java/com/cnu/real_coding_server/service/{ProectService.java => ProjectService.java} (97%) diff --git a/src/main/java/com/cnu/real_coding_server/service/ProectService.java b/src/main/java/com/cnu/real_coding_server/service/ProjectService.java similarity index 97% rename from src/main/java/com/cnu/real_coding_server/service/ProectService.java rename to src/main/java/com/cnu/real_coding_server/service/ProjectService.java index 62854f6..0e9c2a5 100644 --- a/src/main/java/com/cnu/real_coding_server/service/ProectService.java +++ b/src/main/java/com/cnu/real_coding_server/service/ProjectService.java @@ -1,6 +1,5 @@ package com.cnu.real_coding_server.service; -import com.cnu.real_coding_server.entity.Post; import com.cnu.real_coding_server.entity.Project; import com.cnu.real_coding_server.model.request.ProjectRequest; import com.cnu.real_coding_server.repository.ProjectRepository;