package main

import (
	"fmt"

	"github.com/tidbcloud/devops/pkg/infra/config"
	"github.com/tidbcloud/devops/pkg/infra/log"
	metrics "github.com/tidbcloud/devops/pkg/infra/metrics/jump-gateway"

	"go.opentelemetry.io/contrib/propagators/b3"
	"go.opentelemetry.io/otel"
	"go.opentelemetry.io/otel/propagation"
	sdktrace "go.opentelemetry.io/otel/sdk/trace"
)

func setup(conf *config.JumpGatewayConfig) error {
	err := log.InitLogger(&conf.Log)
	if err != nil {
		return fmt.Errorf("failed to init logger: %s", err)
	}
	err = log.InitAccessLogger(&conf.Log)
	if err != nil {
		return fmt.Errorf("failed to init access logger: %s", err)
	}

	initTrace()
	metrics.RegisterMetrics()

	return nil
}

func initTrace() {
	tp := sdktrace.NewTracerProvider(
		sdktrace.WithSampler(sdktrace.AlwaysSample()),
	)
	otel.SetTracerProvider(tp)

	p := propagation.NewCompositeTextMapPropagator(
		propagation.TraceContext{},
		b3.New(), // used by tiinf
	)
	otel.SetTextMapPropagator(p)
}
