/// <summary>
        /// Primary method which will invoke right query in Resolver class TestGraphQueryResolver
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        private async Task <ExecutionResult> ExecuteGraphQueryAsync(GraphQLQuery query)
        {
            var start = DateTime.UtcNow;
            // SET UP options to resolve and execute query running.
            var executionOptions = new ExecutionOptions
            {
                Schema = _schema,
                Query  = query?.Query,
                Inputs = query?.Variables.ToInputs(),
                ComplexityConfiguration = new ComplexityConfiguration()
                {
                    MaxDepth = 15
                },
                UserContext = new GraphQLUserContext
                {
                    User = _context.HttpContext.User
                },
                EnableMetrics    = true,
                ExposeExceptions = true
            };

            var result = await _documentExecuter.ExecuteAsync(executionOptions).ConfigureAwait(false);

            //ENABLE TRACING FOR LOGGING or Adding in App Insights
            //if (result != null)
            //{
            //    if (result.Operation != null) { result.EnrichWithApolloTracing(start); }

            //    if (result.Extensions == null) { result.Extensions = new Dictionary<string, object>(); }
            //    // using below values in GraphQlFilter
            //    result.Extensions.Add("inputVariables", query?.Variables);
            //    result.Extensions.Add("inputQuery", query?.Query);
            //}

            return(result);
        }
        public async Task <IActionResult> Post([FromBody] GraphQLQuery query)
        {
            var result = await this.ExecuteGraphQueryAsync(query);

            return(Ok(result));
        }