You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@answer.apache.org by li...@apache.org on 2024/10/12 02:17:28 UTC

(incubator-answer) 05/09: perf: skip link addition for same question id

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 <me...@sonui.cn>
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