fix: update task in typesense when adding a label or assignee to them
continuous-integration/drone/push Build is failing Details

Resolves https://community.vikunja.io/t/typesense-only-works-if-i-re-index/2212
This commit is contained in:
kolaente 2024-04-06 14:04:04 +02:00
parent 037022e857
commit 521300613f
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
2 changed files with 24 additions and 2 deletions

View File

@ -17,6 +17,7 @@
package models package models
import ( import (
"code.vikunja.io/api/pkg/events"
"strconv" "strconv"
"strings" "strings"
"time" "time"
@ -46,7 +47,7 @@ type LabelTask struct {
} }
// TableName makes a pretty table name // TableName makes a pretty table name
func (LabelTask) TableName() string { func (*LabelTask) TableName() string {
return "label_tasks" return "label_tasks"
} }
@ -84,7 +85,7 @@ func (lt *LabelTask) Delete(s *xorm.Session, _ web.Auth) (err error) {
// @Failure 404 {object} web.HTTPError "The label does not exist." // @Failure 404 {object} web.HTTPError "The label does not exist."
// @Failure 500 {object} models.Message "Internal error" // @Failure 500 {object} models.Message "Internal error"
// @Router /tasks/{task}/labels [put] // @Router /tasks/{task}/labels [put]
func (lt *LabelTask) Create(s *xorm.Session, _ web.Auth) (err error) { func (lt *LabelTask) Create(s *xorm.Session, auth web.Auth) (err error) {
// Check if the label is already added // Check if the label is already added
exists, err := s.Exist(&LabelTask{LabelID: lt.LabelID, TaskID: lt.TaskID}) exists, err := s.Exist(&LabelTask{LabelID: lt.LabelID, TaskID: lt.TaskID})
if err != nil { if err != nil {
@ -100,6 +101,20 @@ func (lt *LabelTask) Create(s *xorm.Session, _ web.Auth) (err error) {
return err return err
} }
t, err := GetTaskByIDSimple(s, lt.TaskID)
if err != nil {
return err
}
doer, _ := user.GetFromAuth(auth)
err = events.Dispatch(&TaskUpdatedEvent{
Task: &t,
Doer: doer,
})
if err != nil {
return err
}
err = updateProjectByTaskID(s, lt.TaskID) err = updateProjectByTaskID(s, lt.TaskID)
return return
} }

View File

@ -280,6 +280,13 @@ func (t *Task) addNewAssigneeByID(s *xorm.Session, newAssigneeID int64, project
if err != nil { if err != nil {
return err return err
} }
err = events.Dispatch(&TaskUpdatedEvent{
Task: t,
Doer: doer,
})
if err != nil {
return err
}
err = updateProjectLastUpdated(s, &Project{ID: t.ProjectID}) err = updateProjectLastUpdated(s, &Project{ID: t.ProjectID})
return return