This is an automated email from the ASF dual-hosted git repository. linkinstar pushed a commit to branch dev in repository https://gitbox.apache.org/repos/asf/incubator-answer.git
commit ab920ac0e148dd275c3d4774dcf1eb994f990ed8 Author: Sonui <[email protected]> AuthorDate: Fri Oct 4 23:42:50 2024 +0800 perf: skip link addition for same question id --- internal/service/content/answer_service.go | 10 +++++++--- internal/service/content/question_service.go | 9 +++++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/internal/service/content/answer_service.go b/internal/service/content/answer_service.go index e8842891..71e4e3d9 100644 --- a/internal/service/content/answer_service.go +++ b/internal/service/content/answer_service.go @@ -801,20 +801,24 @@ func (as *AnswerService) updateAnswerLink(ctx context.Context, answer *entity.An } } - questionLinks = append(questionLinks, &entity.QuestionLink{ + addLink := &entity.QuestionLink{ FromQuestionID: uid.DeShortID(answer.QuestionID), FromAnswerID: uid.DeShortID(answer.ID), ToQuestionID: uid.DeShortID(link.QuestionID), ToAnswerID: uid.DeShortID(link.AnswerID), - }) - + } if link.QuestionID != "" { retParsedText = strings.Replace(retParsedText, "#"+link.QuestionID, "<a href=\"/questions/"+link.QuestionID+"\">#"+link.QuestionID+"</a>", -1) } if link.AnswerID != "" { questionID := answerCache[link.AnswerID] + addLink.ToQuestionID = questionID retParsedText = strings.Replace(retParsedText, "#"+link.AnswerID, "<a href=\"/questions/"+questionID+"/"+link.AnswerID+"\">#"+link.AnswerID+"</a>", -1) } + if addLink.FromQuestionID == addLink.ToQuestionID { + continue + } + questionLinks = append(questionLinks, addLink) } if err = as.questionRepo.LinkQuestion(ctx, questionLinks...); err != nil { return retParsedText, err diff --git a/internal/service/content/question_service.go b/internal/service/content/question_service.go index a57d3fac..308d52bc 100644 --- a/internal/service/content/question_service.go +++ b/internal/service/content/question_service.go @@ -1675,20 +1675,25 @@ func (qs *QuestionService) updateQuestionLink(ctx context.Context, questionInfo } } - questionLinks = append(questionLinks, &entity.QuestionLink{ + addLink := &entity.QuestionLink{ FromQuestionID: uid.DeShortID(questionInfo.ID), FromAnswerID: "0", ToQuestionID: uid.DeShortID(link.QuestionID), ToAnswerID: uid.DeShortID(link.AnswerID), - }) + } if link.QuestionID != "" { retParsedText = strings.Replace(retParsedText, "#"+link.QuestionID, "<a href=\"/questions/"+link.QuestionID+"\">#"+link.QuestionID+"</a>", -1) } if link.AnswerID != "" { questionID := answerCache[link.AnswerID] + addLink.ToQuestionID = questionID retParsedText = strings.Replace(retParsedText, "#"+link.AnswerID, "<a href=\"/questions/"+questionID+"/"+link.AnswerID+"\">#"+link.AnswerID+"</a>", -1) } + if addLink.FromQuestionID == addLink.ToQuestionID { + continue + } + questionLinks = append(questionLinks, addLink) } if err = qs.questionRepo.LinkQuestion(ctx, questionLinks...); err != nil { return retParsedText, err
