From 2cbd9ef50b15035c0b29f6ca0b9acf29080cbe3c Mon Sep 17 00:00:00 2001 From: Hamill210 Date: Thu, 11 Jun 2020 22:51:36 +0900 Subject: [PATCH] =?UTF-8?q?[BE/#17]=20Feat=20:=20=EC=9D=B4=EC=8A=88=20?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D=20API=202=EC=B0=A8=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 랙돌님과 상의한 부분까지 수정 완료(DTO 변수명 변경, milestone, author 객체형태로 응답) - 프론트 분들이 필터에 들어가는 전체 데이터까지 한번에 받길 원하면 그 기능을 구현할 예정 --- .../issuetracker/dao/hamill/IssueDao.java | 39 ++++++++++++++----- .../issuetracker/dto/hamill/AssigneeDto.java | 1 + .../issuetracker/dto/hamill/AuthorDto.java | 1 + .../dto/hamill/info/IssuesDto.java | 12 +++--- .../service/hamill/IssueService.java | 4 +- BE/src/main/resources/application.properties | 2 +- 6 files changed, 42 insertions(+), 17 deletions(-) diff --git a/BE/src/main/java/com/codesquad/issuetracker/dao/hamill/IssueDao.java b/BE/src/main/java/com/codesquad/issuetracker/dao/hamill/IssueDao.java index b341b95..4e91489 100644 --- a/BE/src/main/java/com/codesquad/issuetracker/dao/hamill/IssueDao.java +++ b/BE/src/main/java/com/codesquad/issuetracker/dao/hamill/IssueDao.java @@ -2,13 +2,17 @@ import com.codesquad.issuetracker.controller.hamill.IssueController; import com.codesquad.issuetracker.dto.hamill.AssigneeDto; +import com.codesquad.issuetracker.dto.hamill.AuthorDto; import com.codesquad.issuetracker.dto.hamill.info.IssuesDto; import com.codesquad.issuetracker.dto.hamill.label.LabelDto; +import com.codesquad.issuetracker.dto.hamill.milestone.MilestoneDto; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; +import java.sql.ResultSet; +import java.sql.SQLException; import java.util.List; @Repository @@ -33,31 +37,32 @@ public List findAllIssues() { (rs, rowNum) -> IssuesDto.builder() .issueId(rs.getLong("issue_id")) - .title(rs.getString("title")) + .issueTitle(rs.getString("title")) .isOpened(rs.getBoolean("is_opened")) - .milestoneTitle(rs.getString("milestone_title")) + .milestone(getMilestoneDto(rs)) .createdDateTime(rs.getTimestamp("created_date_time").toLocalDateTime()) - .author(rs.getString("author")) + .author(getAuthorDto(rs)) .build() ); } public IssuesDto findIssueByIssueId(Long issueId) { String sql = - "SELECT i.id AS issue_id, i.title, i.is_opened, m.title AS milestone_title, i.created_date_time, u.name AS author\n" + + "SELECT i.id AS issue_id, i.title, i.is_opened, m.id AS milestone_id, m.title AS milestone_title, i.created_date_time,u.id AS user_id, u.name AS user_name, u.avatar_url\n" + "FROM issue i\n" + " JOIN milestone m on i.milestone_id = m.id\n" + - " JOIN user u on i.user_id = u.id WHERE i.id = ?;"; + " JOIN user u on i.user_id = u.id " + + "WHERE i.id = ?"; return jdbcTemplate.queryForObject( sql, (rs, rowNum) -> IssuesDto.builder() .issueId(rs.getLong("issue_id")) - .title(rs.getString("title")) + .issueTitle(rs.getString("title")) .isOpened(rs.getBoolean("is_opened")) - .milestoneTitle(rs.getString("milestone_title")) + .milestone(getMilestoneDto(rs)) .createdDateTime(rs.getTimestamp("created_date_time").toLocalDateTime()) - .author(rs.getString("author")) + .author(getAuthorDto(rs)) .build() , issueId); } @@ -82,7 +87,7 @@ public List findLabelsByIssuesId(Long issueId) { public List findAssigneeByIssueId(Long issueId) { String sql = - "SELECT u.id AS user_id, u.name AS user_name\n" + + "SELECT u.id AS user_id, u.name AS user_name, u.avatar_url" + " FROM assignee a\n" + " JOIN user u on a.user_id = u.id\n" + "JOIN issue i on a.issue_id = i.id WHERE i.id = ?"; @@ -92,7 +97,23 @@ public List findAssigneeByIssueId(Long issueId) { AssigneeDto.builder() .userId(rs.getLong("user_id")) .userName(rs.getString("user_name")) + .avatarUrl(rs.getString("avatar_url")) .build() , issueId); } + + private MilestoneDto getMilestoneDto(ResultSet rs) throws SQLException { + return MilestoneDto.builder() + .milestoneId(rs.getLong("milestone_id")) + .milestoneTitle(rs.getString("milestone_title")) + .build(); + } + + private AuthorDto getAuthorDto(ResultSet rs) throws SQLException { + return AuthorDto.builder() + .userId(rs.getLong("user_id")) + .userName(rs.getString("user_name")) + .avatarUrl(rs.getString("avatar_url")) + .build(); + } } diff --git a/BE/src/main/java/com/codesquad/issuetracker/dto/hamill/AssigneeDto.java b/BE/src/main/java/com/codesquad/issuetracker/dto/hamill/AssigneeDto.java index b0b7dda..c1a8dda 100644 --- a/BE/src/main/java/com/codesquad/issuetracker/dto/hamill/AssigneeDto.java +++ b/BE/src/main/java/com/codesquad/issuetracker/dto/hamill/AssigneeDto.java @@ -12,4 +12,5 @@ public class AssigneeDto { private long userId; private String userName; + private String avatarUrl; } diff --git a/BE/src/main/java/com/codesquad/issuetracker/dto/hamill/AuthorDto.java b/BE/src/main/java/com/codesquad/issuetracker/dto/hamill/AuthorDto.java index 945ec58..3506557 100644 --- a/BE/src/main/java/com/codesquad/issuetracker/dto/hamill/AuthorDto.java +++ b/BE/src/main/java/com/codesquad/issuetracker/dto/hamill/AuthorDto.java @@ -12,4 +12,5 @@ public class AuthorDto { private long userId; private String userName; + private String avatarUrl; } diff --git a/BE/src/main/java/com/codesquad/issuetracker/dto/hamill/info/IssuesDto.java b/BE/src/main/java/com/codesquad/issuetracker/dto/hamill/info/IssuesDto.java index 77658a9..10fa5bc 100644 --- a/BE/src/main/java/com/codesquad/issuetracker/dto/hamill/info/IssuesDto.java +++ b/BE/src/main/java/com/codesquad/issuetracker/dto/hamill/info/IssuesDto.java @@ -1,7 +1,9 @@ package com.codesquad.issuetracker.dto.hamill.info; import com.codesquad.issuetracker.dto.hamill.AssigneeDto; +import com.codesquad.issuetracker.dto.hamill.AuthorDto; import com.codesquad.issuetracker.dto.hamill.label.LabelDto; +import com.codesquad.issuetracker.dto.hamill.milestone.MilestoneDto; import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -16,11 +18,11 @@ @Builder public class IssuesDto { private Long issueId; - private String title; + private String issueTitle; private Boolean isOpened; - private String milestoneTitle; - private List labels; private LocalDateTime createdDateTime; - private String author; - private List assignees; + private MilestoneDto milestone; + private List attachedLabels; + private AuthorDto author; + private List allocatedAssignees; } diff --git a/BE/src/main/java/com/codesquad/issuetracker/service/hamill/IssueService.java b/BE/src/main/java/com/codesquad/issuetracker/service/hamill/IssueService.java index e301536..8a184ed 100644 --- a/BE/src/main/java/com/codesquad/issuetracker/service/hamill/IssueService.java +++ b/BE/src/main/java/com/codesquad/issuetracker/service/hamill/IssueService.java @@ -32,8 +32,8 @@ public List findAllIssues() { public IssuesDto findIssuesByIssueId(Long issueId) { IssuesDto issuesDto = issueDao.findIssueByIssueId(issueId); - issuesDto.setLabels(issueDao.findLabelsByIssuesId(issueId)); - issuesDto.setAssignees(issueDao.findAssigneeByIssueId(issueId)); + issuesDto.setAttachedLabels(issueDao.findLabelsByIssuesId(issueId)); + issuesDto.setAllocatedAssignees(issueDao.findAssigneeByIssueId(issueId)); return issuesDto; } } diff --git a/BE/src/main/resources/application.properties b/BE/src/main/resources/application.properties index a43ad86..ac0cb6c 100644 --- a/BE/src/main/resources/application.properties +++ b/BE/src/main/resources/application.properties @@ -28,7 +28,7 @@ spring.datasource.url=jdbc:mysql://localhost:3306/issue_tracker?serverTimezone=U spring.datasource.username=issue spring.datasource.password=issue spring.datasource.initialization-mode=always -spring.datasource.data=classpath:schema.sql +spring.datasource.data=classpath:schema.sql,classpath:data.sql #spring.datasource.initialization-mode=embedded # application.properties