package eventbus

import (
	"fmt"

	"github.com/google/wire"
	"github.com/tidbcloud/tiinf/transport/tieventbus"
	"go.opentelemetry.io/otel"
)

var (
	EventSet = wire.NewSet(NewEventBusService, NewBranchEventService, NewClusterEventService)

	Tracer = otel.Tracer("eventsvc")
)

type EventbusService struct {
	tieventbus.Eventbus
}

func NewEventBusService() *EventbusService {
	appName := "ecosystem-service"
	eventbus, err := tieventbus.NewEventbus(tieventbus.EventbusConfig{
		AppName: appName,
	})
	if err != nil {
		panic(fmt.Sprintf("failed to create eventbus: %s", err))
	}

	return &EventbusService{eventbus}
}
