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;
}