From d9d6e15d23a91c94395b3c221bafd8c0bc42a6f8 Mon Sep 17 00:00:00 2001 From: jinchiim Date: Thu, 20 Apr 2023 00:07:44 +0900 Subject: [PATCH] =?UTF-8?q?[week2]=20=EA=B8=B0=EB=B3=B8=20=EA=B3=BC?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit week2 기본 과제 first init #3 --- .../SecondSeminarApplication.java | 9 ++-- .../controller/post/PostController.java | 37 +++++++++++++ .../post/dto/request/SaveRequestDto.java | 12 +++++ .../org/SecondSeminar/domain/post/Post.java | 32 +++++++++++ .../SecondSeminar/service/PostService.java | 54 +++++++++++++++++++ 5 files changed, 140 insertions(+), 4 deletions(-) create mode 100644 SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/controller/post/PostController.java create mode 100644 SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/controller/post/dto/request/SaveRequestDto.java create mode 100644 SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/domain/post/Post.java create mode 100644 SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/service/PostService.java diff --git a/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/SecondSeminarApplication.java b/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/SecondSeminarApplication.java index 35e87f3..a7d895f 100644 --- a/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/SecondSeminarApplication.java +++ b/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/SecondSeminarApplication.java @@ -5,14 +5,14 @@ import sopt.org.SecondSeminar.domain.user.User; import sopt.org.SecondSeminar.domain.post.Post; -import java.lang.reflect.Array; import java.util.ArrayList; -@SpringBootApplication +@SpringBootApplication // 코드를 돌리기만 함 public class SecondSeminarApplication { public static ArrayList userList; - public static ArrayList postList; + public static ArrayList postList; // 변경할 수 있는 친구가 많음. 변경하는 친구를 service에서 담당 + public static void main(String[] args) { @@ -21,5 +21,6 @@ public static void main(String[] args) { userList = new ArrayList<>(); postList = new ArrayList<>(); } - } + + diff --git a/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/controller/post/PostController.java b/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/controller/post/PostController.java new file mode 100644 index 0000000..fc0f740 --- /dev/null +++ b/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/controller/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); + } +} diff --git a/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/controller/post/dto/request/SaveRequestDto.java b/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/controller/post/dto/request/SaveRequestDto.java new file mode 100644 index 0000000..1b0fd39 --- /dev/null +++ b/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/controller/post/dto/request/SaveRequestDto.java @@ -0,0 +1,12 @@ +package sopt.org.SecondSeminar.controller.post.dto.request; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class SaveRequestDto { + private String title; + private String content; +} diff --git a/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/domain/post/Post.java b/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/domain/post/Post.java new file mode 100644 index 0000000..496d162 --- /dev/null +++ b/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/domain/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/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/service/PostService.java b/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/service/PostService.java new file mode 100644 index 0000000..226619c --- /dev/null +++ b/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/service/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 + // +