From f38535b2f4019888f53d06623600ef5ca8a2854f Mon Sep 17 00:00:00 2001 From: kolaente Date: Mon, 4 Sep 2023 11:19:55 +0200 Subject: [PATCH] fix(typesense): upsert all documents at once --- pkg/models/typesense.go | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/pkg/models/typesense.go b/pkg/models/typesense.go index 77852939b1d..31bb8283216 100644 --- a/pkg/models/typesense.go +++ b/pkg/models/typesense.go @@ -250,6 +250,7 @@ func reindexTasks(s *xorm.Session, tasks map[int64]*Task) (err error) { projects := make(map[int64]*Project) + typesenseTasks := []interface{}{} for _, task := range tasks { searchTask := convertTaskToTypesenseTask(task) @@ -268,13 +269,18 @@ func reindexTasks(s *xorm.Session, tasks map[int64]*Task) (err error) { return fmt.Errorf("could not fetch comments for task %d: %s", task.ID, err.Error()) } - _, err = typesenseClient.Collection("tasks"). - Documents(). - Upsert(searchTask) - if err != nil { - log.Errorf("Could not upsert task into Typesense", err) - return err - } + typesenseTasks = append(typesenseTasks, searchTask) + } + + _, err = typesenseClient.Collection("tasks"). + Documents(). + Import(typesenseTasks, &api.ImportDocumentsParams{ + Action: pointer.String("upsert"), + BatchSize: pointer.Int(100), + }) + if err != nil { + log.Errorf("Could not upsert task into Typesense", err) + return err } return nil