internal static Activity CreateActivityFromExecuteAsync(IExecutionContext executionContext)
    {
        var settings = Instrumentation.TracerSettings;

        if (!settings.IsIntegrationEnabled(IntegrationId))
        {
            // integration disabled, don't create a scope, skip this trace
            return(null);
        }

        Activity activity = null;

        try
        {
            string source        = executionContext.Document.OriginalQuery;
            string operationName = executionContext.Operation.Name;
            string operationType = executionContext.Operation.OperationType.ToString();

            var tags = new GraphQLTags();
            activity = ActivitySource.StartActivityWithTags(ExecuteOperationName, tags);
            activity.SetResourceName($"{operationType} {operationName ?? "operation"}");

            tags.Source        = source;
            tags.OperationName = operationName;
            tags.OperationType = operationType;
        }
        catch (Exception ex)
        {
            Log.Error(ex, "Error creating or populating scope.");
        }

        return(activity);
    }
    internal static Activity CreateActivityFromValidate(IDocument document)
    {
        var settings = Instrumentation.TracerSettings;

        if (!settings.IsIntegrationEnabled(IntegrationId))
        {
            // integration disabled, don't create a scope, skip this trace
            return(null);
        }

        Activity activity = null;

        try
        {
            var tags = new GraphQLTags();
            activity = ActivitySource.StartActivityWithTags(ValidateOperationName, tags);

            tags.Source = document.OriginalQuery;
        }
        catch (Exception ex)
        {
            Log.Error(ex, "Error creating or populating scope.");
        }

        return(activity);
    }