示例#1
0
        public async Task <ActionResult> Post([FromBody] GraphQLQuery query)
        {
            var schema = new MySchema();
            var inputs = query.Variables.ToInputs();


            // 2 way to use graphql -
            // proper dotnet way, which gives you the authentication and authorization,
            // graphqL way.
            // 1. graphql way implemented in the service/database/graphql easy to implement - to run comment
            // ValidationRules, _.Schema = _newschema;
            // 2. .NET way, GraphQLModel folder - gives auhtentication and authorization implement -
            // comment  _.Schema = schema.GraphQLSchema; and uncomment rest
            var result = await new DocumentExecuter().ExecuteAsync(_ =>
            {
                _.Schema = schema.GraphQLSchema;
                // _.Schema = _newschema;
                _.Query            = query.Query;
                _.OperationName    = query.OperationName;
                _.Inputs           = inputs;
                _.ExposeExceptions = true;
                //_.ValidationRules = new List<IValidationRule> { _validationRule };
                _.UserContext = _httpContextAccessor.HttpContext.User;
            });

            if (result.Errors?.Count > 0)
            {
                return(BadRequest(result.Errors));
            }
            return(Ok(result));
        }
示例#2
0
        public Task throw_loop_has_been_detected_for_use_derived_type()
        {
            var services = new SimpleContainer();

            //Create a derived type FooType2 for FooType in type resolving
            services.Register <FooType>(() => new FooType2());
            var schema = new MySchema(new SimpleContainerAdapter(services));

            schema.Initialize(); //throw the  'A loop has been detected while registering schema types.' exception

            return(Task.CompletedTask);
        }
        public async Task <ActionResult> Post([FromBody] GraphQLQuery query)
        {
            var schema = new MySchema();
            var inputs = query.Variables.ToInputs();
            var result = await new DocumentExecuter().ExecuteAsync(_ =>
            {
                _.Schema           = schema.GraphQLSchema;
                _.Query            = query.Query;
                _.OperationName    = query.OperationName;
                _.ExposeExceptions = true;
                _.Inputs           = inputs;
            });

            return(Ok(result));
        }
示例#4
0
        public async Task<IActionResult> Post([FromBody] GraphQlQuery query)
        {
            var schema = new MySchema();
            var inputs = new GraphQL.Inputs(query.Variables.AsDictionary());//.ToInputs();

            var result = await new DocumentExecuter().ExecuteAsync(
                schema.GraphQlSchema, null, query.Query, query.OperationName, inputs);

            if (result.Errors?.Count > 0)
            {
                return BadRequest();
            }

            return Ok(result);
        }
示例#5
0
        public async Task <ActionResult> Get()
        {
            var schema = new MySchema();
            var result = await new DocumentExecuter().ExecuteAsync(_ =>
            {
                _.Schema = schema.GraphQLSchema;
                _.Query  = "{ collections { name } }";// query.Query;
                //_.OperationName = query.OperationName;
                //_.Inputs = inputs;
            });

            if (result.Errors?.Count > 0)
            {
                return(BadRequest());
            }

            return(Ok(result));
        }
    public async Task <ActionResult> Post([FromBody] GraphQLQuery query)
    {
        var schema = new MySchema();

        var result = await new DocumentExecuter().ExecuteAsync(executionOptions =>
        {
            executionOptions.Schema        = schema.GraphQLSchema;
            executionOptions.Query         = query.Query;
            executionOptions.OperationName = query.OperationName;
        });

        if (result.Errors?.Count > 0)
        {
            result.Errors.ToList().ForEach(error => _logger.LogWarning($"{query.OperationName} with {query.Query} faulted by {error.Message}"));

            return(BadRequest());
        }

        return(Ok(result));
    }
示例#7
0
        public async Task <ActionResult> Post([FromBody] GraphQLQuery query)
        {
            var schema = new MySchema();
            var inputs = query.Variables.ToInputs();

            var result = await new DocumentExecuter().ExecuteAsync(_ =>
            {
                _.Schema        = schema.GraphQLSchema;
                _.Query         = query.Query;
                _.OperationName = query.OperationName;
                _.Inputs        = inputs;
            });

            if (result.Errors?.Count > 0)
            {
                return(BadRequest());
            }

            return(Ok(result));
        }
        public void ShouldTurnSchemaIemIntoDocument()
        {
            var schema = new MySchema
            {
                Id = 1,
                Text = "Some text",
                Date = new DateTime(2000, 1, 1),
                Long = 4294967296L,
                Guid = _guid,
                Enum = FieldIndex.Analyzed,
                NoStore = "YOOOOOOO"
            };

            var document = schema.ToDocument();

            document.GetField("Id").StringValue.Should().Be("1");
            document.GetField("Text").StringValue.Should().Be("Some text");
            var date = DateTime.ParseExact(document.GetField("Date").StringValue, Constants.QueryDateFormat, null);
            date.Should().Be(schema.Date);
        }
示例#9
0
        public async Task <ExecutionResult> GetResultAsync(GraphQLQuery query)
        {
            var start = DateTime.UtcNow;

            var inputs = query.Variables.As <Inputs>();

            var schema = new MySchema();

            ExecutionResult result = await new DocumentExecuter().ExecuteAsync(_ =>
            {
                _.Schema        = schema.GraphQLSchema;
                _.Query         = query.Query;
                _.OperationName = query.OperationName;
                _.Inputs        = inputs;
                _.EnableMetrics = true;
            });

            result.EnrichWithApolloTracing(start);

            return(result);
        }
示例#10
0
        public async Task <object> GetResultAsync(JObject queryJObject)
        {
            var start = DateTime.UtcNow;

            GraphQLQuery query = queryJObject.ToObject <GraphQLQuery>();

            var inputs = query.Variables?.ToInputs();

            var schema = new MySchema();

            var result = await new DocumentExecuter().ExecuteAsync(_ =>
            {
                _.Schema           = schema.GraphQLSchema;
                _.Query            = query.Query;
                _.OperationName    = query.OperationName;
                _.Inputs           = inputs;
                _.ExposeExceptions = true;
                _.EnableMetrics    = true;
            });

            result.EnrichWithApolloTracing(start);

            return(result);
        }
        public void ShouldConvertADocumentBackToTypeT()
        {
            var schema = new MySchema
            {
                Id = 1,
                Text = "Some text",
                Date = new DateTime(2000, 1, 1),
                Long = 4294967296L,
                Guid = _guid,
                Enum = FieldIndex.Analyzed,
                NoStore = "YOOOOOOO"
            };

            var document = schema.ToDocument();

            var item = document.ToSchema<MySchema>();
            item.Id.Should().Be(1);
            item.Text.Should().Be("Some text");
            item.Date.Should().Be(new DateTime(2000, 1, 1));
            item.Long.Should().Be(4294967296L);
            item.Guid.Should().Be(_guid);
            item.Enum.Should().Be(FieldIndex.Analyzed);
            item.NoStore.Should().BeNull();
        }