package log

import (
	"context"

	"github.com/tidbcloud/dataflow-service/pkg/log"
	"go.uber.org/zap"
	"google.golang.org/grpc"
)

func LogTraceIDUnaryServerInterceptor() grpc.UnaryServerInterceptor {
	return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
		defer func() {
			if err := recover(); err != nil {
				logger := log.GetLogger(ctx)
				logger.Warn("panic in LogTraceIDUnaryServerInterceptor", zap.Any("err", err))
			}
		}()

		newCtx := log.WithTraceID(ctx)
		return handler(newCtx, req)
	}
}
