internal ExecutionOptions ToExecutionOptions()

in src/Epam.GraphQL/Schema/SchemaExecutionOptions.cs [51:95]


        internal ExecutionOptions ToExecutionOptions(SchemaExecuter<TExecutionContext> schema)
        {
            var coreOptionsExtension = schema.Options.FindExtension<CoreSchemaOptionsExtension<TExecutionContext>>();
            var profiler = coreOptionsExtension?.Profiler ?? NullProfiler.Instance;
            var batcher = new Batcher(profiler);
            var logger = coreOptionsExtension?.LoggerFactory?.CreateLogger(Constants.Logging.Category) ?? NullLogger.Instance;
            var listeners = coreOptionsExtension?.Listeners;

            var graphQLContext = new GraphQLContext<TExecutionContext>(
                DataContext,
                profiler,
                batcher,
                schema.Registry,
                logger,
                listeners,
                ExecutionContext);
            var validationRules = coreOptionsExtension?.ValidationRules;

            if (validationRules != null)
            {
                validationRules = DocumentValidator.CoreRules.Concat(validationRules);
            }

            var executionOptions = new ExecutionOptions
            {
                ThrowOnUnhandledException = ThrowOnUnhandledException,
                EnableMetrics = EnableMetrics,
                ComplexityConfiguration = ComplexityConfiguration,
                UserContext = new Dictionary<string, object?>
                {
                    ["ctx"] = graphQLContext,
                },
                ValidationRules = validationRules,
                CancellationToken = CancellationToken,
                Variables = Variables?.ToInputs(),
                Document = Document,
                OperationName = OperationName,
                Query = Query,
                Schema = schema.GraphQLSchema,
            };

            executionOptions.Listeners.Add(new DocumentExecutionListener<TExecutionContext>(graphQLContext));

            return executionOptions;
        }