package regionalservice

import (
	"context"
	"sync"

	"github.com/tidbcloud/observability/pkg/common/configs"
	"github.com/tidbcloud/observability/pkg/common/constants"
	"github.com/tidbcloud/observability/pkg/common/message"
)

type ServiceHandler struct {
}

var serviceHandler *ServiceHandler

var serviceOnce sync.Once

func GetServiceHandler() *ServiceHandler {
	serviceOnce.Do(func() {
		if serviceHandler == nil {
			serviceHandler = new(ServiceHandler)
		}
	})

	return serviceHandler
}

func (p *ServiceHandler) ServiceInfo(ctx context.Context) (resp message.GetServiceInfoResp, err error) {
	specs := configs.GetSpecContainer()
	resp.AvailableSpecs = specs
	resp.ServiceName = constants.ObservabilityRegionalServer
	return
}
