Skip to content

Commit 28d1196

Browse files
committed
Fixed includes
1 parent ced63b9 commit 28d1196

8 files changed

Lines changed: 67 additions & 27 deletions

File tree

src/Linq2GraphQL.Client/Common/ICursorPaging.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ namespace Linq2GraphQL.Client.Common
1010
public interface ICursorPaging
1111
{
1212
[GraphQLMember("pageInfo")]
13+
[JsonPropertyName("pageInfo")]
1314
public PageInfo PageInfo { get; set; }
1415

1516
}

src/Linq2GraphQL.Client/Common/IPageInfo.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,19 @@ namespace Linq2GraphQL.Client.Common
99
{
1010
public class PageInfo
1111
{
12+
[GraphQLMember("hasNextPage")]
1213
[JsonPropertyName("hasNextPage")]
1314
public bool HasNextPage { get; set; }
15+
16+
[GraphQLMember("hasPreviousPage")]
1417
[JsonPropertyName("hasPreviousPage")]
1518
public bool HasPreviousPage { get; set; }
19+
20+
[GraphQLMember("startCursor")]
1621
[JsonPropertyName("startCursor")]
1722
public string StartCursor { get; set; }
23+
24+
[GraphQLMember("endCursor")]
1825
[JsonPropertyName("endCursor")]
1926
public string EndCursor { get; set; }
2027

src/Linq2GraphQL.Client/QueryNode.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,6 @@ public void AddPrimitiveChildren(bool recursive, GraphQLSchema schema)
131131
foreach (var propertyInfo in typeOrListType.GetProperties(BindingFlags.Public | BindingFlags.Instance))
132132
{
133133

134-
135-
136134
if (!propertyInfo.PropertyType.IsValueTypeOrString())
137135
{
138136
continue;

src/Linq2GraphQL.Client/Utilities.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,10 @@ public static void ParseExpression(Expression body, QueryNode parent)
3535
var topNode = parameterVisitor.ParseExpression(body);
3636
var tree = topNode.PrintMemberTree();
3737

38-
39-
4038
topNode.PopulateChildQueryNodes(parent);
39+
// parent.SetAddPrimitiveChildren();
4140

42-
parent.SetAddPrimitiveChildren();
43-
44-
//foreach (var childNode in node.ChildNodes)
45-
//{
46-
// parent.AddChildNode(childNode);
47-
//}
41+
4842
}
4943

5044

src/Linq2GraphQL.Client/Visitors/MemberNode.cs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ public class MemberNode(MemberInfo memberInfo, List<ArgumentValue> arguments = n
1515
public List<MemberNode> Children { get; set; } = [];
1616
public List<ArgumentValue> Arguments => arguments;
1717

18-
1918
public void SetParameterExpression(ParameterExpression param)
2019
{
2120
parameterExpression = param;
@@ -74,12 +73,13 @@ private static List<MemberInfo> GetMembers(Expression expression)
7473

7574
public void PopulateChildQueryNodes(QueryNode queryNode)
7675
{
77-
76+
7877

7978
foreach (var child in Children)
8079
{
8180

8281
var childNode = new QueryNode(child.MemberInfo, null, child.Arguments);
82+
childNode.IncludePrimitive = child.Children.Count == 0;
8383
var addedNode = queryNode.AddChildNode(childNode);
8484
child.PopulateChildQueryNodes(addedNode);
8585
}
@@ -92,9 +92,6 @@ public void PopulateChildQueryNodes(QueryNode queryNode)
9292
public string PrintMemberTree(int level = 0)
9393
{
9494
var sb = new StringBuilder();
95-
//var cc = Children.Select(e => new { e.MemberInfo, e.Arguments, e.MemberInfo.MetadataToken }).Distinct();
96-
//var c = cc.Count();
97-
9895
sb.AppendLine($"Level: {level}");
9996

10097
level++;
@@ -103,25 +100,24 @@ public string PrintMemberTree(int level = 0)
103100
{
104101
var argumentList = $"({string.Join(", ", Arguments.Select(e => e.Value))})";
105102

106-
sb.AppendLine($"Member: {MemberInfo?.Name ?? "--------------"}{argumentList}");
103+
sb.AppendLine($"Member: {MemberInfo?.Name}{argumentList}");
107104
}
108105
else
109106
{
110-
sb.AppendLine($"Member: {MemberInfo?.Name ?? "--------------"} ");
107+
sb.AppendLine($"Member: {MemberInfo?.Name} ");
111108
}
112109

113110
sb.AppendLine($"Parent: {Parent?.MemberInfo?.Name}");
114-
115111
sb.AppendLine($"Parameter: {parameterExpression?.Name}");
116-
112+
117113
sb.AppendLine("");
118114

119115
foreach (var child in Children)
120116
{
121117
sb.Append(child.PrintMemberTree(level));
122118
}
123119

124-
sb.AppendLine("");
120+
sb.AppendLine("".PadLeft(level, '-'));
125121

126122
return sb.ToString();
127123

src/Linq2GraphQL.Client/Visitors/ParameterVisitor.cs

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
using Linq2GraphQL.Client.Visitors;
33
using System.Linq.Expressions;
44
using System.Reflection;
5+
using System.Reflection.Metadata;
56
using System.Runtime.CompilerServices;
7+
using System.Xml.Linq;
68

79
namespace VisitorPlayground.Visitors
810
{
@@ -24,15 +26,28 @@ protected override Expression VisitMember(MemberExpression node)
2426
if (attribute != null)
2527
{
2628
var parameter = GetParameterExpression(node);
27-
var targetNode = memberNode.GetMemberNodeFromParameterExpression(parameter);
28-
targetNode.AddMembers(node);
29+
30+
AddMemberNodes(parameter, node);
31+
32+
// var targetNode = memberNode.GetMemberNodeFromParameterExpression(parameter);
33+
// targetNode.AddMembers(node);
2934
}
3035

3136
return node;
3237

3338
}
3439

3540

41+
public MemberNode AddMemberNodes(ParameterExpression targetParameter, Expression expression)
42+
{
43+
var targetNode = memberNode.GetMemberNodeFromParameterExpression(targetParameter);
44+
var newNode = targetNode.AddMembers(expression);
45+
return newNode;
46+
47+
}
48+
49+
50+
3651
protected override Expression VisitMethodCall(MethodCallExpression expression)
3752
{
3853
var attribute = expression.Method.GetCustomAttribute<GraphQLMemberAttribute>();
@@ -57,6 +72,8 @@ protected override Expression VisitMethodCall(MethodCallExpression expression)
5772
i++;
5873
}
5974

75+
76+
6077
var targetNode = memberNode.GetMemberNodeFromParameterExpression(parExp);
6178
targetNode.AddChild(new MemberNode(expression.Method, argumentValues));
6279

@@ -74,11 +91,12 @@ protected override Expression VisitMethodCall(MethodCallExpression expression)
7491
{
7592
var parameter = GetParameterExpression(expression.Arguments[1]);
7693

77-
//var child = new MemberNode(memberExp.Member, null, parameter);
78-
//memberNode.AddChild(child);
79-
8094
var child = memberNode.AddMembers(memberExp);
8195
child.SetParameterExpression(parameter);
96+
97+
98+
//var child = AddMemberNodes(parameter, memberExp);
99+
//child.IncludePrimitive = false;
82100

83101
var visitor = new ParameterVisitor(child);
84102
visitor.ParseExpression(expression.Arguments[1]);

test/Linq2GraphQL.Tests/QueryPagingTests.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ public async Task Orders_ManualPaging()
2727
.Include(e => e.PageInfo)
2828
.Include(e => e.TotalCount)
2929
.Select(e => e.Nodes.Select(e => new { e.OrderId, e.OrderDate }));
30-
30+
31+
var request = await query.GetRequestAsync();
32+
3133
await query.ExecuteBaseAsync();
3234

3335
var result1 = query.ConvertResult(query.BaseResult);

test/Linq2GraphQL.Tests/QueryProjectionTests.cs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,37 @@ public async Task Project_SelectMany()
6060
.Customers()
6161
.Select(e => e.SelectMany(e=> e.Orders));
6262

63-
// var request = await query.GetRequestAsync();
6463
var result = await query.ExecuteAsync();
6564

6665

66+
Assert.True(result.All(e=> e.OrderId != default));
67+
6768
}
6869

6970

71+
[Fact]
72+
public async Task Project_Complex()
73+
{
74+
//var query = sampleClient
75+
// .Query
76+
// .Customers()
77+
// .Select(e => new { Orders = e.SelectMany(e => e.Orders), Customers = e, CustomerIds =e.Select(e=> e.CustomerId).Distinct() });
78+
79+
80+
var query = sampleClient
81+
.Query
82+
.Customers()
83+
.Select(e => new { Customers = e });
84+
85+
var request = await query.GetRequestAsync();
86+
87+
var result = await query.ExecuteAsync();
88+
89+
var t = result.Customers;
90+
91+
92+
}
93+
7094

7195
}
7296

0 commit comments

Comments
 (0)