Feat: устранены конфликты с версией V.1.0.1
This commit is contained in:
parent
887f5a36f3
commit
ee1bebb5e0
@ -8,20 +8,20 @@ import lombok.EqualsAndHashCode;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
import javax.persistence.CascadeType;
|
import jakarta.persistence.CascadeType;
|
||||||
import javax.persistence.CollectionTable;
|
import jakarta.persistence.CollectionTable;
|
||||||
import javax.persistence.Column;
|
import jakarta.persistence.Column;
|
||||||
import javax.persistence.ElementCollection;
|
import jakarta.persistence.ElementCollection;
|
||||||
import javax.persistence.Entity;
|
import jakarta.persistence.Entity;
|
||||||
import javax.persistence.EnumType;
|
import jakarta.persistence.EnumType;
|
||||||
import javax.persistence.Enumerated;
|
import jakarta.persistence.Enumerated;
|
||||||
import javax.persistence.FetchType;
|
import jakarta.persistence.FetchType;
|
||||||
import javax.persistence.Id;
|
import jakarta.persistence.Id;
|
||||||
import javax.persistence.JoinColumn;
|
import jakarta.persistence.JoinColumn;
|
||||||
import javax.persistence.JoinTable;
|
import jakarta.persistence.JoinTable;
|
||||||
import javax.persistence.ManyToOne;
|
import jakarta.persistence.ManyToOne;
|
||||||
import javax.persistence.OneToMany;
|
import jakarta.persistence.OneToMany;
|
||||||
import javax.persistence.Table;
|
import jakarta.persistence.Table;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -59,7 +59,7 @@ public class IssueParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void parsingOldIssue(){
|
public void parsingOldIssue(){
|
||||||
log.debug("Старт обработаки старых Issue");
|
log.debug("Старт обработаки старых Issues");
|
||||||
final Set<IdAndStatusIssue> existIds = issueService.getAllId(OLD_STATUSES);
|
final Set<IdAndStatusIssue> existIds = issueService.getAllId(OLD_STATUSES);
|
||||||
|
|
||||||
final List<Issue> newIssues = getOldIssues(existIds).stream()
|
final List<Issue> newIssues = getOldIssues(existIds).stream()
|
||||||
@ -73,7 +73,7 @@ public class IssueParser {
|
|||||||
personMapping(newIssues);
|
personMapping(newIssues);
|
||||||
issueService.updateAll(newIssues);
|
issueService.updateAll(newIssues);
|
||||||
}
|
}
|
||||||
log.debug("Конец обработки старых Issue");
|
log.debug("Конец обработки старых Issues");
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<IssueJson> getOldIssues(Set<IdAndStatusIssue> existIds) {
|
private List<IssueJson> getOldIssues(Set<IdAndStatusIssue> existIds) {
|
||||||
@ -95,20 +95,20 @@ public class IssueParser {
|
|||||||
|
|
||||||
|
|
||||||
public void parsingNewIssue() {
|
public void parsingNewIssue() {
|
||||||
log.debug("Старт обработки новых Issue");
|
log.debug("Старт обработки новых Issues");
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* получаем через репозиторий список id всех проектов хранящихся в БД
|
* получаем через репозиторий список id всех проектов хранящихся в нашей БД
|
||||||
*/
|
*/
|
||||||
final Set<Long> projectIds = projectService.getAllIds();
|
final Set<Long> projectIds = projectService.getAllIds();
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* На основе id проекта, url для получения issues по id проекта и токена пользователя
|
* На основе id проекта, url для получения issues по id проекта и токена пользователя
|
||||||
* выгружаем из GitLab список всех IssueJson. Получаем в многопоточном режиме.
|
* выгружаем из GitLab список всех IssueJson. Получаем в многопоточном режиме.
|
||||||
*/
|
*/
|
||||||
final List<IssueJson> issueJsons = getIssues(projectIds);
|
final List<IssueJson> issueJsons = getIssues(projectIds);
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* Получаем id всех IssueJson загруженных из GitLab
|
* Получаем id всех IssueJson загруженных из GitLab
|
||||||
*/
|
*/
|
||||||
if (checkNotEmpty(issueJsons)) {
|
if (checkNotEmpty(issueJsons)) {
|
||||||
@ -117,7 +117,7 @@ public class IssueParser {
|
|||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
final ExistContainer<Issue, Long> existContainer = issueService.existsById(jsonIds);
|
final ExistContainer<Issue, Long> existContainer = issueService.existsById(jsonIds);
|
||||||
log.trace("Из {} полученных MR не найдены в хранилище {}", jsonIds.size(), existContainer.getIdNoFound().size());
|
log.trace("Из {} полученных Issues не найдены в хранилище {}", jsonIds.size(), existContainer.getIdNoFound().size());
|
||||||
if (!existContainer.isAllFound()) {
|
if (!existContainer.isAllFound()) {
|
||||||
final List<Issue> newIssues = issueJsons.stream()
|
final List<Issue> newIssues = issueJsons.stream()
|
||||||
.filter(json -> existContainer.getIdNoFound().contains(json.getId()))
|
.filter(json -> existContainer.getIdNoFound().contains(json.getId()))
|
||||||
@ -126,11 +126,11 @@ public class IssueParser {
|
|||||||
return issue;
|
return issue;
|
||||||
})
|
})
|
||||||
.toList();
|
.toList();
|
||||||
log.trace("Пачка новых issues обработана и отправлена на сохранение. Количество: {} шт.", newIssues.size());
|
log.trace("Пачка новых Issues обработана и отправлена на сохранение. Количество: {} шт.", newIssues.size());
|
||||||
issueService.createAll(newIssues);
|
issueService.createAll(newIssues);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.debug("Конец обработки новых MR");
|
log.debug("Конец обработки новых Issues");
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<IssueJson> getIssues(Set<Long> projectIds) {
|
private List<IssueJson> getIssues(Set<Long> projectIds) {
|
||||||
|
@ -2,7 +2,7 @@ package dev.struchkov.bot.gitlab.core.service.parser.forktask;
|
|||||||
|
|
||||||
import dev.struchkov.bot.gitlab.core.utils.StringUtils;
|
import dev.struchkov.bot.gitlab.core.utils.StringUtils;
|
||||||
import dev.struchkov.bot.gitlab.sdk.domain.IssueJson;
|
import dev.struchkov.bot.gitlab.sdk.domain.IssueJson;
|
||||||
import dev.struchkov.haiti.utils.network.HttpParse;
|
import dev.struchkov.bot.gitlab.core.utils.HttpParse;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
@ -13,7 +13,7 @@ import java.util.List;
|
|||||||
import java.util.concurrent.RecursiveTask;
|
import java.util.concurrent.RecursiveTask;
|
||||||
|
|
||||||
import static dev.struchkov.haiti.utils.Checker.checkNotEmpty;
|
import static dev.struchkov.haiti.utils.Checker.checkNotEmpty;
|
||||||
import static dev.struchkov.haiti.utils.network.HttpParse.ACCEPT;
|
import static dev.struchkov.bot.gitlab.core.utils.HttpParse.ACCEPT;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Dmitry Sheyko [24.01.2023]
|
* @author Dmitry Sheyko [24.01.2023]
|
||||||
|
@ -2,7 +2,7 @@ package dev.struchkov.bot.gitlab.core.service.parser.forktask;
|
|||||||
|
|
||||||
import dev.struchkov.bot.gitlab.core.utils.StringUtils;
|
import dev.struchkov.bot.gitlab.core.utils.StringUtils;
|
||||||
import dev.struchkov.bot.gitlab.sdk.domain.IssueJson;
|
import dev.struchkov.bot.gitlab.sdk.domain.IssueJson;
|
||||||
import dev.struchkov.haiti.utils.network.HttpParse;
|
import dev.struchkov.bot.gitlab.core.utils.HttpParse;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -11,7 +11,7 @@ import java.text.MessageFormat;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.RecursiveTask;
|
import java.util.concurrent.RecursiveTask;
|
||||||
|
|
||||||
import static dev.struchkov.haiti.utils.network.HttpParse.ACCEPT;
|
import static dev.struchkov.bot.gitlab.core.utils.HttpParse.ACCEPT;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
|
@ -39,7 +39,7 @@ public class SchedulerService {
|
|||||||
|
|
||||||
@Scheduled(cron = "${gitlab-bot.cron.scan.new-project}")
|
@Scheduled(cron = "${gitlab-bot.cron.scan.new-project}")
|
||||||
public void newProjects() {
|
public void newProjects() {
|
||||||
log.info("Запуск процесса получение новых репозиториев c GitLab");
|
log.info("Запуск процесса получения новых репозиториев c GitLab");
|
||||||
if (!settingService.isFirstStart()) {
|
if (!settingService.isFirstStart()) {
|
||||||
if (settingService.isOwnerProjectScan()) {
|
if (settingService.isOwnerProjectScan()) {
|
||||||
projectParser.parseAllProjectOwner();
|
projectParser.parseAllProjectOwner();
|
||||||
@ -48,7 +48,7 @@ public class SchedulerService {
|
|||||||
projectParser.parseAllPrivateProject();
|
projectParser.parseAllPrivateProject();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.info("Конец процесса получение новых репозиториев c GitLab");
|
log.info("Конец процесса получения новых репозиториев c GitLab");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -56,11 +56,21 @@ public class SchedulerService {
|
|||||||
@Scheduled(cron = "0 */1 * * * *")
|
@Scheduled(cron = "0 */1 * * * *")
|
||||||
@Scheduled(cron = "${gitlab-bot.cron.scan.new-merge-request}")
|
@Scheduled(cron = "${gitlab-bot.cron.scan.new-merge-request}")
|
||||||
public void newMergeRequests() {
|
public void newMergeRequests() {
|
||||||
log.info("Запуск процесса получение новых MR c GitLab");
|
log.info("Запуск процесса получения новых MR c GitLab");
|
||||||
if (!settingService.isFirstStart()) {
|
if (!settingService.isFirstStart()) {
|
||||||
mergeRequestParser.parsingNewMergeRequest();
|
mergeRequestParser.parsingNewMergeRequest();
|
||||||
}
|
}
|
||||||
log.info("Конец процесса получение новых MR c GitLab");
|
log.info("Конец процесса получения новых MR c GitLab");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Scheduled(cron = "0 */1 * * * *")
|
||||||
|
@Scheduled(cron = "${gitlab-bot.cron.scan.new-merge-request}")
|
||||||
|
public void newIssues() {
|
||||||
|
log.info("Запуск процесса получения новых Issues c GitLab");
|
||||||
|
if (!settingService.isFirstStart()) {
|
||||||
|
issueParser.parsingNewIssue();
|
||||||
|
}
|
||||||
|
log.info("Конец процесса получения новых Issues c GitLab");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Scheduled(cron = "${gitlab-bot.cron.scan.general}")
|
@Scheduled(cron = "${gitlab-bot.cron.scan.general}")
|
||||||
@ -75,7 +85,6 @@ public class SchedulerService {
|
|||||||
mergeRequestsService.cleanOld();
|
mergeRequestsService.cleanOld();
|
||||||
discussionService.cleanOld();
|
discussionService.cleanOld();
|
||||||
pipelineService.cleanOld();
|
pipelineService.cleanOld();
|
||||||
issueParser.parsingNewIssue();
|
|
||||||
issueParser.parsingOldIssue();
|
issueParser.parsingOldIssue();
|
||||||
issueService.cleanOld();
|
issueService.cleanOld();
|
||||||
} else {
|
} else {
|
||||||
|
@ -16,6 +16,13 @@ spring:
|
|||||||
jdbc:
|
jdbc:
|
||||||
lob:
|
lob:
|
||||||
non_contextual_creation: true
|
non_contextual_creation: true
|
||||||
|
# без данной настройк ипостоянно выбрасывается исключение:
|
||||||
|
# org.springframework.dao.InvalidDataAccessApiUsageException: Multiple representations of the
|
||||||
|
# same entity [dev.struchkov.bot.gitlab.context.domain.entity.Person#13445232] are being merged.
|
||||||
|
# Detached: [dev.struchkov.bot.gitlab.context.domain.entity.Person@cd28ab];
|
||||||
|
# Detached: [dev.struchkov.bot.gitlab.context.domain.entity.Person@cd28ab]
|
||||||
|
event:
|
||||||
|
merge.entity_copy_observer: allow
|
||||||
|
|
||||||
logging:
|
logging:
|
||||||
level:
|
level:
|
||||||
@ -70,6 +77,8 @@ gitlab-bot:
|
|||||||
new-note-url: "${GITLAB_URL}/api/v4/projects/{0,number,#}/merge_requests/{1,number,#}/discussions/{2}/notes?body={3}"
|
new-note-url: "${GITLAB_URL}/api/v4/projects/{0,number,#}/merge_requests/{1,number,#}/discussions/{2}/notes?body={3}"
|
||||||
discussions-url: "${GITLAB_URL}/api/v4/projects/{0,number,#}/merge_requests/{1,number,#}/discussions?&page={2,number,#}&per_page={3,number,#}"
|
discussions-url: "${GITLAB_URL}/api/v4/projects/{0,number,#}/merge_requests/{1,number,#}/discussions?&page={2,number,#}&per_page={3,number,#}"
|
||||||
discussion-url: "${GITLAB_URL}/api/v4/projects/{0,number,#}/merge_requests/{1,number,#}/discussions/{2}"
|
discussion-url: "${GITLAB_URL}/api/v4/projects/{0,number,#}/merge_requests/{1,number,#}/discussions/{2}"
|
||||||
|
issue-url: "${GITLAB_URL}/api/v4/projects/{0,number,#}/issues/{1,number,#}"
|
||||||
|
open-issue-url: "${GITLAB_URL}/api/v4/projects/{0,number,#}/issues?state=opened&page={1, number, integer}&per_page={2, number, integer}"
|
||||||
|
|
||||||
---
|
---
|
||||||
spring:
|
spring:
|
||||||
@ -83,5 +92,3 @@ gitlab-bot:
|
|||||||
general: "0 */1 * * * *"
|
general: "0 */1 * * * *"
|
||||||
new-project: "0 */1 * * * *"
|
new-project: "0 */1 * * * *"
|
||||||
new-merge-request: "0 */1 * * * *"
|
new-merge-request: "0 */1 * * * *"
|
||||||
issue-url: "${GITLAB_URL}/api/v4/projects/{0,number,#}/issues/{1,number,#}"
|
|
||||||
open-issue-url: "${GITLAB_URL}/api/v4/projects/{0,number,#}/issues?state=opened&page={1, number, integer}&per_page={2, number, integer}"
|
|
@ -2,11 +2,11 @@ package dev.struchkov.bot.gitlab.telegram.service.notify;
|
|||||||
|
|
||||||
import dev.struchkov.bot.gitlab.context.domain.notify.issue.*;
|
import dev.struchkov.bot.gitlab.context.domain.notify.issue.*;
|
||||||
import dev.struchkov.bot.gitlab.context.utils.Icons;
|
import dev.struchkov.bot.gitlab.context.utils.Icons;
|
||||||
import dev.struchkov.godfather.main.domain.BoxAnswer;
|
import dev.struchkov.godfather.simple.domain.BoxAnswer;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import static dev.struchkov.bot.gitlab.context.utils.Icons.link;
|
import static dev.struchkov.bot.gitlab.context.utils.Icons.link;
|
||||||
import static dev.struchkov.godfather.main.domain.BoxAnswer.boxAnswer;
|
import static dev.struchkov.godfather.simple.domain.BoxAnswer.boxAnswer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Dmitry Sheyko 26.01.2021
|
* @author Dmitry Sheyko 26.01.2021
|
||||||
|
@ -2,11 +2,11 @@ package dev.struchkov.bot.gitlab.telegram.service.notify;
|
|||||||
|
|
||||||
import dev.struchkov.bot.gitlab.context.domain.notify.issue.DescriptionIssueNotify;
|
import dev.struchkov.bot.gitlab.context.domain.notify.issue.DescriptionIssueNotify;
|
||||||
import dev.struchkov.bot.gitlab.context.utils.Icons;
|
import dev.struchkov.bot.gitlab.context.utils.Icons;
|
||||||
import dev.struchkov.godfather.main.domain.BoxAnswer;
|
import dev.struchkov.godfather.simple.domain.BoxAnswer;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import static dev.struchkov.bot.gitlab.context.utils.Icons.link;
|
import static dev.struchkov.bot.gitlab.context.utils.Icons.link;
|
||||||
import static dev.struchkov.godfather.main.domain.BoxAnswer.boxAnswer;
|
import static dev.struchkov.godfather.simple.domain.BoxAnswer.boxAnswer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Dmitry Sheyko 26.01.2021
|
* @author Dmitry Sheyko 26.01.2021
|
||||||
|
@ -2,11 +2,11 @@ package dev.struchkov.bot.gitlab.telegram.service.notify;
|
|||||||
|
|
||||||
import dev.struchkov.bot.gitlab.context.domain.notify.issue.DueDateIssueNotify;
|
import dev.struchkov.bot.gitlab.context.domain.notify.issue.DueDateIssueNotify;
|
||||||
import dev.struchkov.bot.gitlab.context.utils.Icons;
|
import dev.struchkov.bot.gitlab.context.utils.Icons;
|
||||||
import dev.struchkov.godfather.main.domain.BoxAnswer;
|
import dev.struchkov.godfather.simple.domain.BoxAnswer;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import static dev.struchkov.bot.gitlab.context.utils.Icons.link;
|
import static dev.struchkov.bot.gitlab.context.utils.Icons.link;
|
||||||
import static dev.struchkov.godfather.main.domain.BoxAnswer.boxAnswer;
|
import static dev.struchkov.godfather.simple.domain.BoxAnswer.boxAnswer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Dmitry Sheyko 26.01.2021
|
* @author Dmitry Sheyko 26.01.2021
|
||||||
|
@ -2,13 +2,13 @@ package dev.struchkov.bot.gitlab.telegram.service.notify;
|
|||||||
|
|
||||||
import dev.struchkov.bot.gitlab.context.domain.notify.issue.NewIssueNotify;
|
import dev.struchkov.bot.gitlab.context.domain.notify.issue.NewIssueNotify;
|
||||||
import dev.struchkov.bot.gitlab.context.utils.Icons;
|
import dev.struchkov.bot.gitlab.context.utils.Icons;
|
||||||
import dev.struchkov.godfather.main.domain.BoxAnswer;
|
import dev.struchkov.godfather.simple.domain.BoxAnswer;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static dev.struchkov.bot.gitlab.context.utils.Icons.link;
|
import static dev.struchkov.bot.gitlab.context.utils.Icons.link;
|
||||||
import static dev.struchkov.godfather.main.domain.BoxAnswer.boxAnswer;
|
import static dev.struchkov.godfather.simple.domain.BoxAnswer.boxAnswer;
|
||||||
import static dev.struchkov.haiti.utils.Strings.escapeMarkdown;
|
import static dev.struchkov.haiti.utils.Strings.escapeMarkdown;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2,11 +2,11 @@ package dev.struchkov.bot.gitlab.telegram.service.notify;
|
|||||||
|
|
||||||
import dev.struchkov.bot.gitlab.context.domain.notify.issue.StatusIssueNotify;
|
import dev.struchkov.bot.gitlab.context.domain.notify.issue.StatusIssueNotify;
|
||||||
import dev.struchkov.bot.gitlab.context.utils.Icons;
|
import dev.struchkov.bot.gitlab.context.utils.Icons;
|
||||||
import dev.struchkov.godfather.main.domain.BoxAnswer;
|
import dev.struchkov.godfather.simple.domain.BoxAnswer;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import static dev.struchkov.bot.gitlab.context.utils.Icons.link;
|
import static dev.struchkov.bot.gitlab.context.utils.Icons.link;
|
||||||
import static dev.struchkov.godfather.main.domain.BoxAnswer.boxAnswer;
|
import static dev.struchkov.godfather.simple.domain.BoxAnswer.boxAnswer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Dmitry Sheyko 26.01.2021
|
* @author Dmitry Sheyko 26.01.2021
|
||||||
|
@ -2,11 +2,11 @@ package dev.struchkov.bot.gitlab.telegram.service.notify;
|
|||||||
|
|
||||||
import dev.struchkov.bot.gitlab.context.domain.notify.issue.TitleIssueNotify;
|
import dev.struchkov.bot.gitlab.context.domain.notify.issue.TitleIssueNotify;
|
||||||
import dev.struchkov.bot.gitlab.context.utils.Icons;
|
import dev.struchkov.bot.gitlab.context.utils.Icons;
|
||||||
import dev.struchkov.godfather.main.domain.BoxAnswer;
|
import dev.struchkov.godfather.simple.domain.BoxAnswer;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import static dev.struchkov.bot.gitlab.context.utils.Icons.link;
|
import static dev.struchkov.bot.gitlab.context.utils.Icons.link;
|
||||||
import static dev.struchkov.godfather.main.domain.BoxAnswer.boxAnswer;
|
import static dev.struchkov.godfather.simple.domain.BoxAnswer.boxAnswer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Dmitry Sheyko 26.01.2021
|
* @author Dmitry Sheyko 26.01.2021
|
||||||
|
@ -2,11 +2,11 @@ package dev.struchkov.bot.gitlab.telegram.service.notify;
|
|||||||
|
|
||||||
import dev.struchkov.bot.gitlab.context.domain.notify.issue.TypeIssueNotify;
|
import dev.struchkov.bot.gitlab.context.domain.notify.issue.TypeIssueNotify;
|
||||||
import dev.struchkov.bot.gitlab.context.utils.Icons;
|
import dev.struchkov.bot.gitlab.context.utils.Icons;
|
||||||
import dev.struchkov.godfather.main.domain.BoxAnswer;
|
import dev.struchkov.godfather.simple.domain.BoxAnswer;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import static dev.struchkov.bot.gitlab.context.utils.Icons.link;
|
import static dev.struchkov.bot.gitlab.context.utils.Icons.link;
|
||||||
import static dev.struchkov.godfather.main.domain.BoxAnswer.boxAnswer;
|
import static dev.struchkov.godfather.simple.domain.BoxAnswer.boxAnswer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Dmitry Sheyko 26.01.2021
|
* @author Dmitry Sheyko 26.01.2021
|
||||||
|
Loading…
Reference in New Issue
Block a user