From 760a17e30c9aca9932ecf2e7272978f493113f46 Mon Sep 17 00:00:00 2001 From: uPagge Date: Tue, 23 Mar 2021 13:34:40 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BE=20=D0=BA=D0=BE=D0=BB=D0=B8=D1=87=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=B2=D0=B5=20=D1=80=D0=B5=D1=88=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot-app/src/main/resources/application.yaml | 2 +- .../v.1.0.0/2021-01-14-create-tables.xml | 1 + .../src/main/resources/messages_ru.properties | 2 +- .../context/domain/entity/Discussion.java | 7 ++ .../notify/pullrequest/UpdatePrNotify.java | 16 ++++- .../repository/DiscussionRepository.java | 5 ++ .../context/service/AppSettingService.java | 2 +- .../context/service/DiscussionService.java | 4 ++ .../service/impl/AppSettingServiceImpl.java | 2 +- .../service/impl/DiscussionServiceImpl.java | 67 +++++++++++++++++-- .../impl/MergeRequestsServiceImpl.java | 28 +++++++- .../service/impl/note/NoteServiceImpl.java | 1 - .../core/service/parser/DiscussionParser.java | 19 ++++-- .../service/parser/MergeRequestParser.java | 5 +- .../data/impl/DiscussionRepositoryImpl.java | 15 ++++- .../data/jpa/DiscussionJpaRepository.java | 4 ++ 16 files changed, 156 insertions(+), 24 deletions(-) diff --git a/bot-app/src/main/resources/application.yaml b/bot-app/src/main/resources/application.yaml index f65c6a5..e652edb 100644 --- a/bot-app/src/main/resources/application.yaml +++ b/bot-app/src/main/resources/application.yaml @@ -22,7 +22,7 @@ telegram-config: bot-username: ${TELEGRAM_BOT_USERNAME} bot-token: ${TELEGRAM_BOT_TOKEN} gitlab-bot: - version: 0.0.4 Beta + version: 0.0.5 Beta person: telegram-id: ${TELEGRAM_PERSON_ID} token: ${GITLAB_PERSONAL_TOKEN} diff --git a/bot-app/src/main/resources/liquibase/v.1.0.0/2021-01-14-create-tables.xml b/bot-app/src/main/resources/liquibase/v.1.0.0/2021-01-14-create-tables.xml index dcdd9bf..73153e9 100644 --- a/bot-app/src/main/resources/liquibase/v.1.0.0/2021-01-14-create-tables.xml +++ b/bot-app/src/main/resources/liquibase/v.1.0.0/2021-01-14-create-tables.xml @@ -126,6 +126,7 @@ + diff --git a/bot-app/src/main/resources/messages_ru.properties b/bot-app/src/main/resources/messages_ru.properties index 1b10a95..1f67911 100644 --- a/bot-app/src/main/resources/messages_ru.properties +++ b/bot-app/src/main/resources/messages_ru.properties @@ -22,7 +22,7 @@ notify.pr.forgotten={0} *Напоминание о просмотре PullReques notify.pr.conflict={0} *Внимание! Конфликт в MergeRequest | {4}*{1}[{2}]({3}) notify.pr.smart={0} *Напоминание о MergeRequest | {6}*{3}[{1}]({2}){3}{4} изменил свое решение на {5} notify.pr.state={0} *Изменился статус MergeRequest | {7}*{1}[{2}]({3}){1}{4} {5} {6} -notify.pr.update={0} *Обновление MergeRequest | {6}*{3}[{1}]({2}){3}{4}: {5} +notify.pr.update={0} *Обновление MergeRequest | {6}*{3}[{1}]({2}){3}Все задачи: {8}/{7}\nВаши задачи: {10}/{9}{3}{4}: {5} notify.task.close={0} *Закрыта* [задача]({1}){2}*{3}*: {4} notify.task.new={0} *Назначена новая* [задача]({1}){2}*{3}*: {4} notify.project.new={0} *Новый Проект*{1}[{2}]({3}){1}{4}{5}: {6} diff --git a/bot-context/src/main/java/org/sadtech/bot/gitlab/context/domain/entity/Discussion.java b/bot-context/src/main/java/org/sadtech/bot/gitlab/context/domain/entity/Discussion.java index 08d899c..ce41736 100644 --- a/bot-context/src/main/java/org/sadtech/bot/gitlab/context/domain/entity/Discussion.java +++ b/bot-context/src/main/java/org/sadtech/bot/gitlab/context/domain/entity/Discussion.java @@ -37,6 +37,9 @@ public class Discussion implements BasicEntity { @JoinColumn(name = "responsible_id") private Person responsible; + @Column(name = "resolved") + private Boolean resolved; + @ManyToOne() @JoinTable( name = "discussion_merge_request", @@ -60,4 +63,8 @@ public class Discussion implements BasicEntity { this.notes = notes; } + public Note getFirstNote() { + return this.notes.get(0); + } + } diff --git a/bot-context/src/main/java/org/sadtech/bot/gitlab/context/domain/notify/pullrequest/UpdatePrNotify.java b/bot-context/src/main/java/org/sadtech/bot/gitlab/context/domain/notify/pullrequest/UpdatePrNotify.java index 87563fb..7b65e5d 100644 --- a/bot-context/src/main/java/org/sadtech/bot/gitlab/context/domain/notify/pullrequest/UpdatePrNotify.java +++ b/bot-context/src/main/java/org/sadtech/bot/gitlab/context/domain/notify/pullrequest/UpdatePrNotify.java @@ -9,23 +9,35 @@ import org.sadtech.bot.gitlab.context.utils.Smile; public class UpdatePrNotify extends PrNotify { private final String author; + private final Long allTasks; + private final Long allResolvedTasks; + private final Long personTasks; + private final Long personResolvedTasks; @Builder private UpdatePrNotify( String name, String url, String author, - String projectKey + String projectKey, + Long allTasks, + Long allResolvedTasks, + Long personTasks, + Long personResolvedTasks ) { super(projectKey, name, url); this.author = author; + this.allTasks = allTasks; + this.allResolvedTasks = allResolvedTasks; + this.personTasks = personTasks; + this.personResolvedTasks = personResolvedTasks; } @Override public String generateMessage(AppSettingService settingService) { return settingService.getMessage( "notify.pr.update", - Smile.UPDATE.getValue(), title, url, Smile.HR.getValue(), Smile.AUTHOR.getValue(), author, projectName + Smile.UPDATE.getValue(), title, url, Smile.HR.getValue(), Smile.AUTHOR.getValue(), author, projectName, allTasks, allResolvedTasks, personTasks, personResolvedTasks ); } diff --git a/bot-context/src/main/java/org/sadtech/bot/gitlab/context/repository/DiscussionRepository.java b/bot-context/src/main/java/org/sadtech/bot/gitlab/context/repository/DiscussionRepository.java index 4c83096..b971341 100644 --- a/bot-context/src/main/java/org/sadtech/bot/gitlab/context/repository/DiscussionRepository.java +++ b/bot-context/src/main/java/org/sadtech/bot/gitlab/context/repository/DiscussionRepository.java @@ -1,8 +1,11 @@ package org.sadtech.bot.gitlab.context.repository; +import lombok.NonNull; import org.sadtech.bot.gitlab.context.domain.entity.Discussion; import org.sadtech.haiti.context.repository.SimpleManagerRepository; +import java.util.List; + /** * // TODO: 11.02.2021 Добавить описание. * @@ -10,4 +13,6 @@ import org.sadtech.haiti.context.repository.SimpleManagerRepository; */ public interface DiscussionRepository extends SimpleManagerRepository { + List findAllByMergeRequestId(@NonNull Long mergeRequestId); + } diff --git a/bot-context/src/main/java/org/sadtech/bot/gitlab/context/service/AppSettingService.java b/bot-context/src/main/java/org/sadtech/bot/gitlab/context/service/AppSettingService.java index 4adcdb2..ccf649f 100644 --- a/bot-context/src/main/java/org/sadtech/bot/gitlab/context/service/AppSettingService.java +++ b/bot-context/src/main/java/org/sadtech/bot/gitlab/context/service/AppSettingService.java @@ -16,7 +16,7 @@ public interface AppSettingService { String getMessage(@NonNull String label); - String getMessage(@NonNull String label, String... params); + String getMessage(@NonNull String label, Object... params); void setLocale(@NonNull AppLocale appLocale); diff --git a/bot-context/src/main/java/org/sadtech/bot/gitlab/context/service/DiscussionService.java b/bot-context/src/main/java/org/sadtech/bot/gitlab/context/service/DiscussionService.java index aaa0e67..5475238 100644 --- a/bot-context/src/main/java/org/sadtech/bot/gitlab/context/service/DiscussionService.java +++ b/bot-context/src/main/java/org/sadtech/bot/gitlab/context/service/DiscussionService.java @@ -4,6 +4,8 @@ import lombok.NonNull; import org.sadtech.bot.gitlab.context.domain.entity.Discussion; import org.sadtech.haiti.context.service.SimpleManagerService; +import java.util.List; + /** * // TODO: 11.02.2021 Добавить описание. * @@ -13,4 +15,6 @@ public interface DiscussionService extends SimpleManagerService getAllByMergeRequestId(@NonNull Long mergeRequestId); + } diff --git a/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/impl/AppSettingServiceImpl.java b/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/impl/AppSettingServiceImpl.java index 5c76c12..d0150e8 100644 --- a/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/impl/AppSettingServiceImpl.java +++ b/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/impl/AppSettingServiceImpl.java @@ -54,7 +54,7 @@ public class AppSettingServiceImpl implements AppSettingService { } @Override - public String getMessage(@NonNull String label, String... params) { + public String getMessage(@NonNull String label, Object... params) { final Object[] paramsArray = Arrays.stream(params).toArray(); return messageSource.getMessage( label, diff --git a/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/impl/DiscussionServiceImpl.java b/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/impl/DiscussionServiceImpl.java index 401ed44..237d9e3 100644 --- a/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/impl/DiscussionServiceImpl.java +++ b/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/impl/DiscussionServiceImpl.java @@ -13,9 +13,11 @@ import org.sadtech.bot.gitlab.context.domain.entity.MergeRequest; import org.sadtech.bot.gitlab.context.domain.entity.Note; import org.sadtech.bot.gitlab.context.domain.notify.comment.CommentNotify; import org.sadtech.bot.gitlab.context.domain.notify.task.TaskCloseNotify; +import org.sadtech.bot.gitlab.context.domain.notify.task.TaskNewNotify; import org.sadtech.bot.gitlab.context.repository.DiscussionRepository; import org.sadtech.bot.gitlab.context.service.DiscussionService; import org.sadtech.bot.gitlab.context.service.NotifyService; +import org.sadtech.bot.gitlab.context.service.PersonService; import org.sadtech.bot.gitlab.core.config.properties.GitlabProperty; import org.sadtech.bot.gitlab.core.config.properties.PersonProperty; import org.sadtech.haiti.context.exception.NotFoundException; @@ -25,6 +27,7 @@ import org.springframework.stereotype.Service; import java.io.IOException; import java.text.MessageFormat; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.regex.Matcher; @@ -45,6 +48,7 @@ public class DiscussionServiceImpl extends AbstractSimpleManagerService personService.create(note.getAuthor())); discussion.getNotes().forEach(this::notificationPersonal); + discussion.getNotes().forEach(note -> notifyNewTask(note, discussion)); + + final boolean resolved = discussion.getNotes().stream() + .allMatch(note -> note.isResolvable() && note.getResolved()); + discussion.setResolved(resolved); return discussionRepository.save(discussion); } + private void notifyNewTask(Note note, Discussion discussion) { + if (note.isResolvable() + && personInformation.getId().equals(discussion.getResponsible().getId()) + && !personInformation.getId().equals(note.getAuthor().getId()) + && note.getResolved() != null + && !note.getResolved() + ) { + notifyService.send( + TaskNewNotify.builder() + .authorName(note.getAuthor().getName()) + .messageTask(note.getBody()) + .url(note.getWebUrl()) + .build() + ); + } + } + @Override public Discussion update(@NonNull Discussion discussion) { - final Discussion oldDiscussion = discussionRepository.findById(discussion.getId()).orElseThrow(() -> new NotFoundException("Дискуссия не найдена")); + final Discussion oldDiscussion = discussionRepository.findById(discussion.getId()) + .orElseThrow(() -> new NotFoundException("Дискуссия не найдена")); final Map noteMap = oldDiscussion .getNotes().stream() .collect(Collectors.toMap(Note::getId, note -> note)); + final boolean inDiscussion = discussion.getNotes().stream() + .anyMatch(note -> personInformation.getId().equals(note.getAuthor().getId())); discussion.setMergeRequest(oldDiscussion.getMergeRequest()); discussion.setResponsible(oldDiscussion.getResponsible()); - discussion.getNotes().forEach(note -> updateNote(note, noteMap)); - + discussion.getNotes().forEach(note -> updateNote(note, noteMap, inDiscussion)); + final boolean resolved = discussion.getNotes().stream() + .allMatch(note -> note.isResolvable() && note.getResolved()); + discussion.setResolved(resolved); return discussionRepository.save(discussion); } - private void updateNote(Note note, Map noteMap) { + private void updateNote(Note note, Map noteMap, boolean inDiscussion) { if (noteMap.containsKey(note.getId())) { final Note oldNote = noteMap.get(note.getId()); - note.setWebUrl(oldNote.getWebUrl()); if (note.isResolvable()) { updateTask(note, oldNote); } } else { - notificationPersonal(note); + if (inDiscussion) { + notifyNewAnswer(note); + } else { + notificationPersonal(note); + } + } + } + + private void notifyNewAnswer(Note note) { + if (!personInformation.getId().equals(note.getAuthor().getId())) { + notifyService.send( + CommentNotify.builder() + .url(note.getWebUrl()) + .message(note.getBody()) + .authorName(note.getAuthor().getName()) + .build() + ); } } @@ -143,6 +191,11 @@ public class DiscussionServiceImpl extends AbstractSimpleManagerService getAllByMergeRequestId(@NonNull Long mergeRequestId) { + return discussionRepository.findAllByMergeRequestId(mergeRequestId); + } + protected void notificationPersonal(@NonNull Note note) { Matcher matcher = PATTERN.matcher(note.getBody()); Set recipientsLogins = new HashSet<>(); diff --git a/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/impl/MergeRequestsServiceImpl.java b/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/impl/MergeRequestsServiceImpl.java index f904875..e43d9b4 100644 --- a/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/impl/MergeRequestsServiceImpl.java +++ b/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/impl/MergeRequestsServiceImpl.java @@ -4,6 +4,7 @@ import lombok.NonNull; import org.sadtech.bot.gitlab.context.domain.IdAndStatusPr; import org.sadtech.bot.gitlab.context.domain.MergeRequestState; import org.sadtech.bot.gitlab.context.domain.PersonInformation; +import org.sadtech.bot.gitlab.context.domain.entity.Discussion; import org.sadtech.bot.gitlab.context.domain.entity.MergeRequest; import org.sadtech.bot.gitlab.context.domain.entity.Project; import org.sadtech.bot.gitlab.context.domain.filter.MergeRequestFilter; @@ -12,6 +13,7 @@ import org.sadtech.bot.gitlab.context.domain.notify.pullrequest.NewPrNotify; import org.sadtech.bot.gitlab.context.domain.notify.pullrequest.StatusPrNotify; import org.sadtech.bot.gitlab.context.domain.notify.pullrequest.UpdatePrNotify; import org.sadtech.bot.gitlab.context.repository.MergeRequestRepository; +import org.sadtech.bot.gitlab.context.service.DiscussionService; import org.sadtech.bot.gitlab.context.service.MergeRequestsService; import org.sadtech.bot.gitlab.context.service.NotifyService; import org.sadtech.bot.gitlab.context.service.PersonService; @@ -24,8 +26,11 @@ import org.sadtech.haiti.filter.FilterService; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Objects; import java.util.Optional; import java.util.Set; +import java.util.stream.Collectors; @Service public class MergeRequestsServiceImpl extends AbstractSimpleManagerService implements MergeRequestsService { @@ -35,6 +40,7 @@ public class MergeRequestsServiceImpl extends AbstractSimpleManagerService filterService; private final ProjectService projectService; + private final DiscussionService discussionService; private final PersonInformation personInformation; @@ -44,7 +50,7 @@ public class MergeRequestsServiceImpl extends AbstractSimpleManagerService filterService, ProjectService projectService, - PersonInformation personInformation + DiscussionService discussionService, PersonInformation personInformation ) { super(mergeRequestRepository); this.notifyService = notifyService; @@ -52,6 +58,7 @@ public class MergeRequestsServiceImpl extends AbstractSimpleManagerService discussions = discussionService.getAllByMergeRequestId(oldMergeRequest.getId()) + .stream() + .filter(discussion -> Objects.nonNull(discussion.getResponsible())) + .collect(Collectors.toList()); + final long allTask = discussions.size(); + final long resolvedTask = discussions.stream() + .filter(Discussion::getResolved) + .count(); + final long allYouTasks = discussions.stream() + .filter(discussion -> personInformation.getId().equals(discussion.getFirstNote().getAuthor().getId())) + .count(); + final long resolvedYouTask = discussions.stream() + .filter(discussion -> personInformation.getId().equals(discussion.getFirstNote().getAuthor().getId()) && discussion.getResolved()) + .count(); notifyService.send( UpdatePrNotify.builder() .author(oldMergeRequest.getAuthor().getName()) .name(oldMergeRequest.getTitle()) .projectKey(project.getName()) .url(oldMergeRequest.getWebUrl()) + .allTasks(allTask) + .allResolvedTasks(resolvedTask) + .personTasks(allYouTasks) + .personResolvedTasks(resolvedYouTask) .build() ); } @@ -159,6 +184,7 @@ public class MergeRequestsServiceImpl extends AbstractSimpleManagerService implements NoteService { - private final NoteRepository noteRepository; public NoteServiceImpl(NoteRepository noteRepository) { diff --git a/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/parser/DiscussionParser.java b/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/parser/DiscussionParser.java index 6fac8a1..3a7b6e1 100644 --- a/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/parser/DiscussionParser.java +++ b/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/parser/DiscussionParser.java @@ -9,7 +9,6 @@ import org.sadtech.bot.gitlab.core.config.properties.GitlabProperty; import org.sadtech.bot.gitlab.core.config.properties.PersonProperty; import org.sadtech.bot.gitlab.sdk.domain.DiscussionJson; import org.sadtech.haiti.context.domain.ExistsContainer; -import org.sadtech.haiti.context.exception.ConvertException; import org.sadtech.haiti.context.page.Sheet; import org.sadtech.haiti.core.page.PaginationImpl; import org.sadtech.haiti.utils.network.HttpParse; @@ -18,6 +17,7 @@ import org.springframework.stereotype.Component; import java.text.MessageFormat; import java.util.List; +import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -93,6 +93,7 @@ public class DiscussionParser { ); return discussion; }) + .filter(discussion -> discussion.getNotes() != null && !discussion.getNotes().isEmpty()) .collect(Collectors.toList()); discussionService.createAll(newDiscussions); } @@ -114,13 +115,21 @@ public class DiscussionParser { for (Discussion discussion : discussions) { if (discussion.getMergeRequest() != null) { - final Discussion newDiscussion = HttpParse.request(MessageFormat.format(gitlabProperty.getUrlOneDiscussion(), discussion.getMergeRequest().getProjectId(), discussion.getMergeRequest().getTwoId(), discussion.getId())) + final Optional optNewDiscussion = HttpParse.request(MessageFormat.format(gitlabProperty.getUrlOneDiscussion(), discussion.getMergeRequest().getProjectId(), discussion.getMergeRequest().getTwoId(), discussion.getId())) .header(ACCEPT) .header(AUTHORIZATION, BEARER + personProperty.getToken()) .execute(DiscussionJson.class) - .map(json -> conversionService.convert(json, Discussion.class)) - .orElseThrow(() -> new ConvertException("Ошибка парсинга дискуссии")); - discussionService.update(newDiscussion); + .map(json -> { + final Discussion newDiscussion = conversionService.convert(json, Discussion.class); + newDiscussion.getNotes().forEach( + note -> { + final String url = MessageFormat.format(gitlabProperty.getUrlNote(), discussion.getMergeRequest().getWebUrl(), note.getId()); + note.setWebUrl(url); + } + ); + return newDiscussion; + }); + optNewDiscussion.ifPresent(discussionService::update); } else { discussionService.deleteById(discussion.getId()); } diff --git a/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/parser/MergeRequestParser.java b/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/parser/MergeRequestParser.java index 29d2af4..1da5a1a 100644 --- a/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/parser/MergeRequestParser.java +++ b/bot-core/src/main/java/org/sadtech/bot/gitlab/core/service/parser/MergeRequestParser.java @@ -36,7 +36,6 @@ import static org.sadtech.haiti.utils.network.HttpParse.BEARER; @RequiredArgsConstructor public class MergeRequestParser { - public static final Integer COUNT = 100; private static final Set OLD_STATUSES = Stream.of( MergeRequestState.MERGED, MergeRequestState.OPENED, MergeRequestState.CLOSED @@ -119,7 +118,9 @@ public class MergeRequestParser { .header(ACCEPT) .header(AUTHORIZATION, BEARER + personProperty.getToken()) .executeList(CommitJson.class); - mergeRequest.setDateLastCommit(commitJson.get(0).getCreatedDate()); + if (commitJson != null && !commitJson.isEmpty()) { + mergeRequest.setDateLastCommit(commitJson.get(0).getCreatedDate()); + } } private List getMergeRequestJsons(Project project, int page) { diff --git a/bot-data/src/main/java/org/sadtech/bot/gitlab/data/impl/DiscussionRepositoryImpl.java b/bot-data/src/main/java/org/sadtech/bot/gitlab/data/impl/DiscussionRepositoryImpl.java index 3dd01d3..c2a2e75 100644 --- a/bot-data/src/main/java/org/sadtech/bot/gitlab/data/impl/DiscussionRepositoryImpl.java +++ b/bot-data/src/main/java/org/sadtech/bot/gitlab/data/impl/DiscussionRepositoryImpl.java @@ -1,11 +1,14 @@ package org.sadtech.bot.gitlab.data.impl; +import lombok.NonNull; import org.sadtech.bot.gitlab.context.domain.entity.Discussion; import org.sadtech.bot.gitlab.context.repository.DiscussionRepository; +import org.sadtech.bot.gitlab.data.jpa.DiscussionJpaRepository; import org.sadtech.haiti.database.repository.manager.AbstractSimpleManagerRepository; -import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; + /** * // TODO: 11.02.2021 Добавить описание. * @@ -14,8 +17,16 @@ import org.springframework.stereotype.Repository; @Repository public class DiscussionRepositoryImpl extends AbstractSimpleManagerRepository implements DiscussionRepository { - public DiscussionRepositoryImpl(JpaRepository jpaRepository) { + private final DiscussionJpaRepository jpaRepository; + + public DiscussionRepositoryImpl(DiscussionJpaRepository jpaRepository) { super(jpaRepository); + this.jpaRepository = jpaRepository; + } + + @Override + public List findAllByMergeRequestId(@NonNull Long mergeRequestId) { + return jpaRepository.findAllByMergeRequestId(mergeRequestId); } } diff --git a/bot-data/src/main/java/org/sadtech/bot/gitlab/data/jpa/DiscussionJpaRepository.java b/bot-data/src/main/java/org/sadtech/bot/gitlab/data/jpa/DiscussionJpaRepository.java index 525b69c..631fc4c 100644 --- a/bot-data/src/main/java/org/sadtech/bot/gitlab/data/jpa/DiscussionJpaRepository.java +++ b/bot-data/src/main/java/org/sadtech/bot/gitlab/data/jpa/DiscussionJpaRepository.java @@ -3,6 +3,8 @@ package org.sadtech.bot.gitlab.data.jpa; import org.sadtech.bot.gitlab.context.domain.entity.Discussion; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + /** * // TODO: 11.02.2021 Добавить описание. * @@ -10,4 +12,6 @@ import org.springframework.data.jpa.repository.JpaRepository; */ public interface DiscussionJpaRepository extends JpaRepository { + List findAllByMergeRequestId(Long mergeRequestId); + }