static void Main(string[] args) { Console.WriteLine("Examples..."); var queryString = GraphQueryStringBuilder.Build <QueryRoot>(queryBuilder => queryBuilder .AddObjectAs <IEnumerable <Shop>, Shop>(query => query.Shops, shopBuilder => shopBuilder .AddScalar(shop => shop.Name) .AddObjectAs <IEnumerable <User>, User>(shop => shop.Users, userBuilder => userBuilder .IncludeAllScalars() .AddObjectAs <IEnumerable <Address>, Address>(user => user.Addresses, addressBuilder => addressBuilder .IncludeAllScalars() ) .AddArgument("age", 18) ) .AddArgumentAsVariable("name", "nameVariable") ) ); Console.WriteLine(queryString); Console.ReadLine(); var parsedQuery = GraphQueryStringParser.Parse(queryString); Console.WriteLine(((IGraphQueryable)parsedQuery).ToQueryString()); Console.ReadLine(); }
public async Task <IEnumerable <TResponse> > QueryAllPagesAsync <TResponse, TResponseData>(GraphQlRequestMessage request) where TResponse : GraphQlResponseMessage <TResponseData> { var result = new List <TResponse>(); var response = await SendAsync <TResponse, TResponseData>(request); result.Add(response); var page = new PaginableResponse <TResponseData>(GraphQueryStringParser.Parse(request.Query)); var queryString = string.Empty; while (!string.IsNullOrEmpty(queryString = page.GetNextPageQueryString(response.Data))) { OnBeforeQueryPage?.Invoke(this, new GraphQlEventArgs <TResponse, TResponseData> { Request = request, Response = response }); response = await SendAsync <TResponse, TResponseData>(new GraphQlRequestMessage { OperationName = request.OperationName, Query = queryString, Variables = request.Variables }); result.Add(response); } return(result); }
public void ParseShouldCreateStructureIncludingAConnection() { var query = $"{{ addresses(first:5) {{ edges {{ cursor, node {{ type, name, number, otherInformation }} }}, pageInfo {{ hasNextPage, hasPreviousPage }} }} }}"; var result = GraphQueryStringParser.Parse(query); Assert.Equal(query.Replace(" ", string.Empty), ((IGraphQueryable)result).ToQueryString().Trim().Replace(" ", string.Empty)); }
public void ParseShouldCreateStructureIncludingAllScalarFields() { var query = $"{{ addresses {{ type, name, number, otherInformation }} }}"; var result = GraphQueryStringParser.Parse(query); Assert.Equal(query.Replace(" ", string.Empty), ((IGraphQueryable)result).ToQueryString().Trim().Replace(" ", string.Empty)); }
public void ParseShouldCreateStructureIncludingArgumentsWithLiteralValues() { var argumentName = "fakeArgumentName"; var argumentValue = "FakeArgumentValue"; var query = $"{{ addresses({argumentName}:\"{argumentValue}\") {{ name }} }}"; var result = GraphQueryStringParser.Parse(query); Assert.Equal(query.Replace(" ", string.Empty), ((IGraphQueryable)result).ToQueryString().Trim().Replace(" ", string.Empty)); }
static void Main(string[] args) { Console.WriteLine("Examples..."); var queryString = GraphQueryStringBuilder.Build <QueryRoot>(queryBuilder => queryBuilder .AddConnection(query => query.Shops, 10, shopBuilder => shopBuilder .AddScalar(shop => shop.Name) .AddConnection(shop => shop.Users, 5, userBuilder => userBuilder .IncludeAllScalars() .AddConnection(user => user.Addresses, 1, addressBuilder => addressBuilder .IncludeAllScalars() ) ) ) ); Console.WriteLine(queryString); Console.ReadLine(); var parsedQuery = GraphQueryStringParser.Parse(queryString); Console.WriteLine(((IGraphQueryable)parsedQuery).ToQueryString()); Console.ReadLine(); }