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

Reply via email to