fix(typesense): reindex tasks when their position changed
This commit is contained in:
parent
0b424fe95e
commit
471d0fcd4a
@ -166,6 +166,16 @@ func (t *TaskRelationDeletedEvent) Name() string {
|
|||||||
return "task.relation.deleted"
|
return "task.relation.deleted"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TaskPositionsRecalculatedEvent represents a TaskPositionsRecalculatedEvent event
|
||||||
|
type TaskPositionsRecalculatedEvent struct {
|
||||||
|
NewTaskPositions []*TaskPosition
|
||||||
|
}
|
||||||
|
|
||||||
|
// Name defines the name for TaskPositionsRecalculatedEvent
|
||||||
|
func (t *TaskPositionsRecalculatedEvent) Name() string {
|
||||||
|
return "task.positions.recalculated"
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////
|
////////////////////
|
||||||
// Project Events //
|
// Project Events //
|
||||||
////////////////////
|
////////////////////
|
||||||
|
@ -70,6 +70,7 @@ func RegisterListeners() {
|
|||||||
events.RegisterListener((&TaskDeletedEvent{}).Name(), &RemoveTaskFromTypesense{})
|
events.RegisterListener((&TaskDeletedEvent{}).Name(), &RemoveTaskFromTypesense{})
|
||||||
events.RegisterListener((&TaskCreatedEvent{}).Name(), &AddTaskToTypesense{})
|
events.RegisterListener((&TaskCreatedEvent{}).Name(), &AddTaskToTypesense{})
|
||||||
events.RegisterListener((&TaskUpdatedEvent{}).Name(), &UpdateTaskInTypesense{})
|
events.RegisterListener((&TaskUpdatedEvent{}).Name(), &UpdateTaskInTypesense{})
|
||||||
|
events.RegisterListener((&TaskPositionsRecalculatedEvent{}).Name(), &UpdateTaskPositionsInTypesense{})
|
||||||
}
|
}
|
||||||
if config.WebhooksEnabled.GetBool() {
|
if config.WebhooksEnabled.GetBool() {
|
||||||
RegisterEventForWebhook(&TaskCreatedEvent{})
|
RegisterEventForWebhook(&TaskCreatedEvent{})
|
||||||
@ -607,6 +608,41 @@ func (l *UpdateTaskInTypesense) Handle(msg *message.Message) (err error) {
|
|||||||
return reindexTasksInTypesense(s, task)
|
return reindexTasksInTypesense(s, task)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UpdateTaskPositionsInTypesense represents a listener
|
||||||
|
type UpdateTaskPositionsInTypesense struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
// Name defines the name for the UpdateTaskPositionsInTypesense listener
|
||||||
|
func (l *UpdateTaskPositionsInTypesense) Name() string {
|
||||||
|
return "typesense.task.position.update"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle is executed when the event UpdateTaskPositionsInTypesense listens on is fired
|
||||||
|
func (l *UpdateTaskPositionsInTypesense) Handle(msg *message.Message) (err error) {
|
||||||
|
event := &TaskPositionsRecalculatedEvent{}
|
||||||
|
err = json.Unmarshal(msg.Payload, event)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
taskIDs := []int64{}
|
||||||
|
for _, position := range event.NewTaskPositions {
|
||||||
|
taskIDs = append(taskIDs, position.TaskID)
|
||||||
|
}
|
||||||
|
|
||||||
|
s := db.NewSession()
|
||||||
|
defer s.Close()
|
||||||
|
|
||||||
|
tasks, err := GetTasksSimpleByIDs(s, taskIDs)
|
||||||
|
|
||||||
|
taskMap := make(map[int64]*Task, 1)
|
||||||
|
for _, task := range tasks {
|
||||||
|
taskMap[task.ID] = task
|
||||||
|
}
|
||||||
|
|
||||||
|
return reindexTasksInTypesense(s, taskMap)
|
||||||
|
}
|
||||||
|
|
||||||
// IncreaseAttachmentCounter represents a listener
|
// IncreaseAttachmentCounter represents a listener
|
||||||
type IncreaseAttachmentCounter struct {
|
type IncreaseAttachmentCounter struct {
|
||||||
}
|
}
|
||||||
|
@ -166,7 +166,12 @@ func RecalculateTaskPositions(s *xorm.Session, view *ProjectView, a web.Auth) (e
|
|||||||
}
|
}
|
||||||
|
|
||||||
_, err = s.Insert(newPositions)
|
_, err = s.Insert(newPositions)
|
||||||
return
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return events.Dispatch(&TaskPositionsRecalculatedEvent{
|
||||||
|
NewTaskPositions: newPositions,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func getPositionsForView(s *xorm.Session, view *ProjectView) (positions []*TaskPosition, err error) {
|
func getPositionsForView(s *xorm.Session, view *ProjectView) (positions []*TaskPosition, err error) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user