Skip to content

Commit

Permalink
[BE/#17] Feat : 이슈 목록 API 2차 구현
Browse files Browse the repository at this point in the history
- 랙돌님과 상의한 부분까지 수정 완료(DTO 변수명 변경, milestone, author 객체형태로 응답)
- 프론트 분들이 필터에 들어가는 전체 데이터까지 한번에 받길 원하면 그 기능을 구현할 예정
  • Loading branch information
hanurii committed Jun 11, 2020
1 parent 8307d26 commit 2cbd9ef
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -33,31 +37,32 @@ public List<IssuesDto> 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);
}
Expand All @@ -82,7 +87,7 @@ public List<LabelDto> findLabelsByIssuesId(Long issueId) {

public List<AssigneeDto> 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 = ?";
Expand All @@ -92,7 +97,23 @@ public List<AssigneeDto> 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();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@
public class AssigneeDto {
private long userId;
private String userName;
private String avatarUrl;
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@
public class AuthorDto {
private long userId;
private String userName;
private String avatarUrl;
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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<LabelDto> labels;
private LocalDateTime createdDateTime;
private String author;
private List<AssigneeDto> assignees;
private MilestoneDto milestone;
private List<LabelDto> attachedLabels;
private AuthorDto author;
private List<AssigneeDto> allocatedAssignees;
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ public List<IssuesDto> 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;
}
}
2 changes: 1 addition & 1 deletion BE/src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 2cbd9ef

Please sign in to comment.