Feat: устранены конфликты с версией V.1.0.1

This commit is contained in:
Dmitry Sheyko 2023-03-11 13:08:03 +03:00
parent 887f5a36f3
commit ee1bebb5e0
13 changed files with 66 additions and 50 deletions

View File

@ -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;

View File

@ -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) {

View File

@ -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]

View File

@ -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

View File

@ -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 {

View File

@ -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:
@ -82,6 +91,4 @@ gitlab-bot:
scan: scan:
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}"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;
/** /**

View File

@ -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

View File

@ -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

View File

@ -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