From 06d4667a2fd9236beb3fcbc89417ee58d03105f0 Mon Sep 17 00:00:00 2001 From: Eugene Jang <105053478+jinchiim@users.noreply.github.com> Date: Fri, 21 Apr 2023 23:22:27 +0900 Subject: [PATCH] Second-Seminar basicAssignment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [2주차] 기본과제 제출 #3 --- PostService.java | 54 +++++++++++++++++++++++++++++++++++ SecondSeminarApplication.java | 26 +++++++++++++++++ post/Post.java | 32 +++++++++++++++++++++ post/PostController.java | 37 ++++++++++++++++++++++++ 4 files changed, 149 insertions(+) create mode 100644 PostService.java create mode 100644 SecondSeminarApplication.java create mode 100644 post/Post.java create mode 100644 post/PostController.java diff --git a/PostService.java b/PostService.java new file mode 100644 index 0000000..fe30da9 --- /dev/null +++ b/PostService.java @@ -0,0 +1,54 @@ +package sopt.org.SecondSeminar.service; + +import org.springframework.stereotype.Service; +import sopt.org.SecondSeminar.controller.post.dto.request.SaveRequestDto; +import sopt.org.SecondSeminar.domain.post.Post; + +import java.util.ArrayList; + +import static sopt.org.SecondSeminar.SecondSeminarApplication.postList; + + + +@Service // 요청 처리 find, save 이런식으로 행위는 서비스 +public class PostService { + public Long save(SaveRequestDto requestDto){ // 저장해주는 메서드 + Post newPost = new Post( + requestDto.getTitle(), + requestDto.getContent() + ); + + postList.add(newPost); + newPost.setId((long) postList.size()); + + //저장한 유저 아이디 값 반환 + return newPost.getId(); + } + + public String getPostInfo(Long UserId) { // 아이디로 글을 찾는 메서드 + Post post = postList.get(UserId.intValue() - 1); + Post postInfo = new Post( // title과 content만 불러오고 싶어서 따로 만들었습니다. + post.getTitle(), + post.getContent() + ); + + return postInfo.idToString(); + } + + public String getByTitle(String title) { // 찾는 제목을 포함하는 게시물을 찾는 메서드 + ArrayList titlePost = new ArrayList<>(); // 일회성 Array를 만들어주고 싶었습니다. + for(int i = 0 ; i < postList.size() ; i++) { + Post post = postList.get(i); + if (post.getTitle().contains(title)){ // 검색한 String과 일치하는 타이틀 조건 + titlePost.add(post.toString()); // id,title,content 모두 나오게 설정 + } + } + return "해당 제목을 포함하는 게시물: " + titlePost; + } + + }; // 조회 함수를 새로 만들어서 역할 위임하는 거 + + //controller, service >> 이해됨 + // Application, domain + // + diff --git a/SecondSeminarApplication.java b/SecondSeminarApplication.java new file mode 100644 index 0000000..5d1da4f --- /dev/null +++ b/SecondSeminarApplication.java @@ -0,0 +1,26 @@ +package sopt.org.SecondSeminar; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import sopt.org.SecondSeminar.domain.user.User; +import sopt.org.SecondSeminar.domain.post.Post; + +import java.util.ArrayList; + +@SpringBootApplication // 코드를 돌리기만 함 +public class SecondSeminarApplication { + + public static ArrayList userList; + public static ArrayList postList; // 변경할 수 있는 친구가 많음. 변경하는 친구를 service에서 담당 + + + public static void main(String[] args) { + + SpringApplication.run(SecondSeminarApplication.class, args); + + userList = new ArrayList<>(); + postList = new ArrayList<>(); + } +} + + diff --git a/post/Post.java b/post/Post.java new file mode 100644 index 0000000..eea60c9 --- /dev/null +++ b/post/Post.java @@ -0,0 +1,32 @@ +package sopt.org.SecondSeminar.domain.post; + +import lombok.Getter; + +@Getter // 객체에 맞는 클래스 정의 +public class Post { // 하나의 엔티티 Post 라는 테이블에서 세가지 속성을 가지겠다. + + private long id; + private String title; + private String content; + + public Post(String title, String content) { // 게시물을 불러올 메서드 + this.title = title; + this.content = content; + } + public void setId(long id) { + this.id = id; + } + + @Override + public String toString(){ + return "id: " + this.id + "\n" + + "title: " + this.title + "\n" + + "content: " + this.content + "\n"; + + } + public String idToString(){ // 제목과 글 내용만 불러오고 싶어서 따로 만들어 줬습니다. + return "제목: " + this.title + "\n" + + "글내용: " + this.content + "\n"; + } + +} diff --git a/post/PostController.java b/post/PostController.java new file mode 100644 index 0000000..57c3c47 --- /dev/null +++ b/post/PostController.java @@ -0,0 +1,37 @@ +package sopt.org.SecondSeminar.controller.post; // controller 클라이언트에게 받고 보내고만 + +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; +import sopt.org.SecondSeminar.controller.post.dto.request.SaveRequestDto; +import sopt.org.SecondSeminar.service.PostService; +import static sopt.org.SecondSeminar.SecondSeminarApplication.postList; + +@RestController +@RequiredArgsConstructor +public class PostController { + private final PostService postService; + + @PostMapping("/post") + public String register(@RequestBody final SaveRequestDto request) { + + Long userId = postService.save(request); // 컨트롤러가 service한테 요청. 일을 대신 시킴 + System.out.println(postList); // servics는 글에 대한 서비스 컨트롤러는 어디로 향하는지 중간다리 + + return userId + "번 글 등록이 완료됐습니다."; + } + + @GetMapping("/post/{userId}") // 아이디로 게시물을 찾는 메서드 + public String getOne(@PathVariable final Long userId) { + System.out.println(userId + "의 게시물 조회" + postList.get(userId.intValue()-1)); // 최고 + + + return postService.getPostInfo(userId); // 보내주기만 한다. + } + + @GetMapping("/post/search") // 제목으로 글을 찾는 메서드 + public String search(@RequestParam final String title) { + System.out.println("글 제목으로 검색: " + title); + + return postService.getByTitle(title); + } +}