1
0

fix(typesense): make sure task positions are recreated properly when updating them

Related https://community.vikunja.io/t/version-0-24-0-internal-server-error-breaking-change/2558
Related https://github.com/go-vikunja/vikunja/issues/317

(cherry picked from commit edf206aba61678ecc15db981ae6caf99d80c8010)
This commit is contained in:
kolaente
2024-09-19 15:57:18 +02:00
parent 15cde08db6
commit 25c8476883
2 changed files with 60 additions and 53 deletions

View File

@ -539,36 +539,6 @@ func (l *AddTaskToTypesense) Handle(msg *message.Message) (err error) {
return reindexTasksInTypesense(s, task)
}
func getPositionsForTask(s *xorm.Session, event *TaskCreatedEvent) (positionsMap map[int64][]*TaskPositionWithView, err error) {
positions := []*TaskPositionWithView{}
err = s.
Table("project_views").
Where("project_views.project_id = ?", event.Task.ProjectID).
Join("LEFT", "task_positions", "project_views.id = task_positions.project_view_id AND task_positions.task_id = ?", event.Task.ID).
Find(&positions)
if err != nil {
return
}
positionsMap = make(map[int64][]*TaskPositionWithView, 1)
positionsMap[event.Task.ID] = positions
return
}
func getBucketsForTask(s *xorm.Session, event *TaskCreatedEvent) (bucketsMap map[int64][]*TaskBucket, err error) {
buckets := []*TaskBucket{}
err = s.
Where("task_id = ?", event.Task.ID).
Find(&buckets)
if err != nil {
return
}
bucketsMap = make(map[int64][]*TaskBucket, 1)
bucketsMap[event.Task.ID] = buckets
return
}
// UpdateTaskInTypesense represents a listener
type UpdateTaskInTypesense struct {
}
@ -757,6 +727,11 @@ func (l *UpdateTaskInSavedFilterViews) Handle(msg *message.Message) (err error)
if err != nil {
return
}
task := make(map[int64]*Task, 1)
task[event.Task.ID] = event.Task // Will be filled with all data by the Typesense connector
return reindexTasksInTypesense(s, task)
}
return nil