import { Job } from 'bullmq'
import tracer, { Span } from 'dd-trace'

export function setSpanMetadata(operationName: string, span?: Span): void {
	span?.setTag('resource.name', operationName)
}

export function addTracingToJobPayload<JobPayloadType extends object>(payload: JobPayloadType): JobPayloadType {
	const span = tracer.scope().active()

	if (span) {
		tracer.inject(span, 'text_map', payload)
	}

	return payload
}

/**
 * Extracts the parent trace ID if it is available.
 */
export function getParentSpan(job: Job): tracer.SpanContext | undefined {
	return tracer.extract('text_map', job.data) || undefined
}
