Files
gitlab-notification/src/main/java/com/tsc/bitbucketbot/service/impl/PullRequestsServiceImpl.java
2020-04-07 16:51:25 +03:00

98 lines
3.5 KiB
Java

package com.tsc.bitbucketbot.service.impl;
import com.tsc.bitbucketbot.domain.IdAndStatusPr;
import com.tsc.bitbucketbot.domain.Pagination;
import com.tsc.bitbucketbot.domain.PullRequestStatus;
import com.tsc.bitbucketbot.domain.ReviewerStatus;
import com.tsc.bitbucketbot.domain.entity.PullRequest;
import com.tsc.bitbucketbot.repository.jpa.PullRequestsRepository;
import com.tsc.bitbucketbot.service.PullRequestsService;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class PullRequestsServiceImpl implements PullRequestsService {
private final PullRequestsRepository pullRequestsRepository;
@Override
public boolean existsByBitbucketIdAndReposId(@NonNull Long bitbucketId, @NonNull Long repositoryId) {
return pullRequestsRepository.existsByBitbucketIdAndRepositoryId(bitbucketId, repositoryId);
}
@Override
public Set<PullRequest> getAllById(@NonNull Set<Long> pullRequestJsonId) {
return pullRequestsRepository.findAllByIdIn(pullRequestJsonId);
}
@Override
@Transactional
public List<PullRequest> addAll(@NonNull Collection<PullRequest> pullRequests) {
return pullRequestsRepository.saveAll(pullRequests);
}
@Override
public List<PullRequest> updateAll(@NonNull Collection<PullRequest> pullRequests) {
final List<PullRequest> updatePullRequests = pullRequests.stream()
.filter(pullRequest -> pullRequestsRepository.existsById(pullRequest.getId()))
.collect(Collectors.toList());
return pullRequestsRepository.saveAll(updatePullRequests);
}
@Override
public Optional<Long> getIdByBitbucketIdAndReposId(@NonNull Long bitbucketId, @NonNull Long repositoryId) {
return pullRequestsRepository.findIdByBitbucketIdAndRepositoryId(bitbucketId, repositoryId);
}
@Override
@Transactional
public void deleteAll(@NonNull Set<Long> id) {
pullRequestsRepository.deleteAllByIdIn(id);
}
@NonNull
@Override
public List<PullRequest> getAllByReviewerAndStatuses(String login, ReviewerStatus reviewerStatus) {
return pullRequestsRepository.findAllByReviewerAndStatuses(login, reviewerStatus);
}
@Override
public List<PullRequest> getAllByAuthorAndReviewerStatus(@NonNull String login, @NonNull ReviewerStatus status) {
return pullRequestsRepository.findAllByAuthorAndReviewerStatus(login, status);
}
@Override
public Set<Long> getAllId() {
return pullRequestsRepository.findAllIds();
}
@Override
public Set<IdAndStatusPr> getAllId(Set<PullRequestStatus> statuses) {
return pullRequestsRepository.findAllIdByStatusIn(statuses);
}
@Override
public Page<PullRequest> getAll(@NonNull Pagination pagination) {
return pullRequestsRepository.findAll(PageRequest.of(pagination.getPage(), pagination.getSize()));
}
@Override
public List<PullRequest> getAllByAuthor(@NonNull String login, @NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo) {
return pullRequestsRepository.findAllByAuthorAndDateBetween(login, dateFrom, dateTo);
}
}