From f8a56768c289bc34cabe53446d827c672735a398 Mon Sep 17 00:00:00 2001 From: pbg0205 Date: Wed, 16 Jun 2021 15:17:28 +0900 Subject: [PATCH] feat : Update and Read issue(#10) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 이슈 제목을 수정할 수 있습니다. - 이슈를 이슈 번호를 통해 조회할 수 있습니다. --- .../comment/infra/CommentRepository.java | 2 ++ .../issue/controller/IssueController.java | 11 ++++++++++ .../issuetracker/issue/domain/Issue.java | 2 +- .../issuetracker/issue/dto/IssueRequest.java | 8 ++++++++ .../issue/service/IssueService.java | 20 ++++++++++++++++--- 5 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 BE/src/main/java/com/codesquad/issuetracker/issue/dto/IssueRequest.java diff --git a/BE/src/main/java/com/codesquad/issuetracker/comment/infra/CommentRepository.java b/BE/src/main/java/com/codesquad/issuetracker/comment/infra/CommentRepository.java index 9bd5e814f..0b472cdd6 100644 --- a/BE/src/main/java/com/codesquad/issuetracker/comment/infra/CommentRepository.java +++ b/BE/src/main/java/com/codesquad/issuetracker/comment/infra/CommentRepository.java @@ -3,7 +3,9 @@ import com.codesquad.issuetracker.comment.domain.Comment; import org.springframework.data.repository.CrudRepository; +import java.util.List; import java.util.UUID; public interface CommentRepository extends CrudRepository { + List findAllByIssueId(Long id); } diff --git a/BE/src/main/java/com/codesquad/issuetracker/issue/controller/IssueController.java b/BE/src/main/java/com/codesquad/issuetracker/issue/controller/IssueController.java index dd6c5008d..91e51e9c0 100644 --- a/BE/src/main/java/com/codesquad/issuetracker/issue/controller/IssueController.java +++ b/BE/src/main/java/com/codesquad/issuetracker/issue/controller/IssueController.java @@ -1,6 +1,7 @@ package com.codesquad.issuetracker.issue.controller; import com.codesquad.issuetracker.issue.dto.IssueCreateRequest; +import com.codesquad.issuetracker.issue.dto.IssueRequest; import com.codesquad.issuetracker.issue.dto.IssueWrapper; import com.codesquad.issuetracker.issue.service.IssueService; import com.codesquad.issuetracker.user.domain.User; @@ -16,8 +17,18 @@ public IssueController(IssueService issueService) { this.issueService = issueService; } + @GetMapping("{id}") + public IssueWrapper readIssue(@PathVariable Long id) { + return issueService.readIssueById(id); + } + @PostMapping public IssueWrapper createIssue(@RequestBody IssueCreateRequest issueCreateRequest, @RequestAttribute User author) { return issueService.createIssue(issueCreateRequest, author); } + + @PutMapping("{id}") + public IssueWrapper updateIssue(@RequestBody IssueRequest issueRequest, @PathVariable Long id) { + return issueService.updateIssue(issueRequest, id); + } } diff --git a/BE/src/main/java/com/codesquad/issuetracker/issue/domain/Issue.java b/BE/src/main/java/com/codesquad/issuetracker/issue/domain/Issue.java index fcd4d30be..0b78bc22f 100644 --- a/BE/src/main/java/com/codesquad/issuetracker/issue/domain/Issue.java +++ b/BE/src/main/java/com/codesquad/issuetracker/issue/domain/Issue.java @@ -87,7 +87,7 @@ public void removeMilestone() { this.milestone = null; } - public void updateTitle(String title) { + public void updateIssue(String title) { this.title = title; } diff --git a/BE/src/main/java/com/codesquad/issuetracker/issue/dto/IssueRequest.java b/BE/src/main/java/com/codesquad/issuetracker/issue/dto/IssueRequest.java new file mode 100644 index 000000000..36158d2f3 --- /dev/null +++ b/BE/src/main/java/com/codesquad/issuetracker/issue/dto/IssueRequest.java @@ -0,0 +1,8 @@ +package com.codesquad.issuetracker.issue.dto; + +import lombok.Getter; + +@Getter +public class IssueRequest { + private String title; +} diff --git a/BE/src/main/java/com/codesquad/issuetracker/issue/service/IssueService.java b/BE/src/main/java/com/codesquad/issuetracker/issue/service/IssueService.java index 934bf8426..2b329e189 100644 --- a/BE/src/main/java/com/codesquad/issuetracker/issue/service/IssueService.java +++ b/BE/src/main/java/com/codesquad/issuetracker/issue/service/IssueService.java @@ -4,19 +4,19 @@ import com.codesquad.issuetracker.comment.infra.CommentRepository; import com.codesquad.issuetracker.issue.domain.Issue; import com.codesquad.issuetracker.issue.dto.IssueCreateRequest; +import com.codesquad.issuetracker.issue.dto.IssueRequest; import com.codesquad.issuetracker.issue.dto.IssueResponse; import com.codesquad.issuetracker.issue.dto.IssueWrapper; -import com.codesquad.issuetracker.issue.repository.IssueRepository; +import com.codesquad.issuetracker.issue.infra.IssueRepository; import com.codesquad.issuetracker.label.infra.LabelRepository; -import com.codesquad.issuetracker.milestone.domain.Milestone; import com.codesquad.issuetracker.milestone.infra.MilestoneRepository; import com.codesquad.issuetracker.user.domain.User; import com.codesquad.issuetracker.user.infra.UserRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Arrays; import java.util.Collections; +import java.util.List; import java.util.UUID; @Service @@ -63,4 +63,18 @@ public IssueWrapper createIssue(IssueCreateRequest issueCreateRequest, User auth return IssueWrapper.wrap(IssueResponse.fromEntity(issue, Collections.singletonList(comment))); } + + public IssueWrapper readIssueById(Long id) { + Issue issue = issueRepository.findById(id).orElseThrow(RuntimeException::new); + List comments = commentRepository.findAllByIssueId(id); + return IssueWrapper.wrap(IssueResponse.fromEntity(issue, comments)); + } + + @Transactional + public IssueWrapper updateIssue (IssueRequest issueRequest, Long id) { + Issue issue = issueRepository.findById(id).orElseThrow(RuntimeException::new); + List comments = commentRepository.findAllByIssueId(id); + issue.updateIssue(issueRequest.getTitle()); + return IssueWrapper.wrap(IssueResponse.fromEntity(issue, comments)); + } }