Skip to content

Commit

Permalink
[BE/#17] 전체 이슈 목록 불러오기 기능 구현 완료
Browse files Browse the repository at this point in the history
  • Loading branch information
MuseopKim committed Jun 12, 2020
1 parent fb8c281 commit c6e3ed3
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.codesquad.issuetracker.ragdoll.dao;

import com.codesquad.issuetracker.ragdoll.domain.Issue;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import javax.sql.DataSource;
import java.sql.Timestamp;
import java.util.List;

@Repository
public class IssueDao {

private JdbcTemplate jdbcTemplate;

public IssueDao(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}


public List<Issue> findAllOpendIssues() {
String sql = "SELECT id, title, created_date_time, is_opened, user_id, milestone_id " +
"FROM issue WHERE is_opened = TRUE";
return jdbcTemplate.query(sql, (rs, rowNum) -> new Issue.Builder()
.id(rs.getLong("id"))
.title(rs.getString("title"))
.createdDateTime((rs.getTimestamp("created_date_time")).toLocalDateTime())
.opened(rs.getBoolean("is_opened"))
.userId(rs.getLong("user_id"))
.milestoneId(rs.getInt("milestone_id"))
.build());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package com.codesquad.issuetracker.ragdoll.service;

import com.codesquad.issuetracker.ragdoll.dao.IssueDao;
import com.codesquad.issuetracker.ragdoll.domain.Issue;
import com.codesquad.issuetracker.ragdoll.domain.Milestone;
import com.codesquad.issuetracker.ragdoll.domain.User;
import com.codesquad.issuetracker.ragdoll.dto.ListOfIssuesDto;
import com.codesquad.issuetracker.ragdoll.dto.issueVO.IssueDetails;
import com.codesquad.issuetracker.ragdoll.dto.labelVO.LabelSummary;
import com.codesquad.issuetracker.ragdoll.dto.labelVO.LabelInformation;
import com.codesquad.issuetracker.ragdoll.dto.milestoneVO.MilestoneInformation;
import com.codesquad.issuetracker.ragdoll.dto.milestoneVO.MilestoneSummary;
import com.codesquad.issuetracker.ragdoll.dto.userVO.UserSummary;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

@Service
public class IssueService {

private IssueDao issueDao;

private UserService userService;

private MilestoneService milestoneService;

private LabelService labelService;

public IssueService(IssueDao issueDao, UserService userService, MilestoneService milestoneService, LabelService labelService) {
this.issueDao = issueDao;
this.userService = userService;
this.milestoneService = milestoneService;
this.labelService = labelService;
}

public ListOfIssuesDto findAllIssues() {
List<Issue> allOfOpenedIssues = issueDao.findAllOpendIssues();
List<IssueDetails> issues = allOfOpenedIssues.stream().map(issue -> {
Milestone milestone = milestoneService.findMilestoneById(issue.getMilestoneId());
List<LabelSummary> attachedLabels = labelService.findAttachedLabelsByIssueId(issue.getId());
List<UserSummary> allocatedAssignees = userService.findAllocatedAssigneesByIds(issue.getId());
User user = userService.findUserById(issue.getUserId());
return new IssueDetails.Builder()
.issueId(issue.getId())
.issueTitle(issue.getTitle())
.milestone(MilestoneSummary.create(milestone.getId(), milestone.getTitle()))
.attachedLabels(attachedLabels)
.author(UserSummary.create(user.getId(), user.getName(), user.getAvatarUrl()))
.allocatedAssignees(allocatedAssignees)
.createdAt(issue.getCreatedDateTime())
.opened(issue.isOpened())
.build();
}).collect(Collectors.toList());
LabelInformation labelInformation = labelService.findAllLabels();
MilestoneInformation milestoneInformation = milestoneService.findAllMilestones();
List<UserSummary> assigneeInformation = userService.findAllAssignees();
return new ListOfIssuesDto.Builder()
.issues(issues)
.labelInfo(labelInformation)
.milestoneInfo(milestoneInformation)
.assigneeInfo(assigneeInformation)
.build();
}
}

0 comments on commit c6e3ed3

Please sign in to comment.