package log

import (
	"context"

	plog "github.com/pingcap/log"
	"go.opentelemetry.io/otel/trace"
	"go.uber.org/zap"
)

func WithContextL(ctx context.Context) *zap.Logger {
	return plog.L().With(TraceIDFromContext(ctx)...)
}

func WithContextS(ctx context.Context) *zap.SugaredLogger {
	return plog.L().With(TraceIDFromContext(ctx)...).Sugar()
}

func TraceIDFromContext(ctx context.Context) []zap.Field {
	spanCtx := trace.SpanContextFromContext(ctx)
	var fields []zap.Field
	if spanCtx.HasTraceID() {
		fields = append(fields, zap.String("trace_id", spanCtx.TraceID().String()))
	}
	return fields
}
