package server

import (
	"context"

	"github.com/tidbcloud/AgentTeam/internal/store/taskboard"
)

type taskChangeFanout []taskboard.TaskChangeSink

func newTaskChangeFanout(sinks ...taskboard.TaskChangeSink) taskboard.TaskChangeSink {
	out := make(taskChangeFanout, 0, len(sinks))
	for _, sink := range sinks {
		if sink != nil {
			out = append(out, sink)
		}
	}
	if len(out) == 0 {
		return nil
	}
	if len(out) == 1 {
		return out[0]
	}
	return out
}

func (fanout taskChangeFanout) HandleTaskChange(ctx context.Context, event taskboard.TaskChangeEvent) {
	for _, sink := range fanout {
		sink.HandleTaskChange(ctx, event)
	}
}
