Skip to content

Commit ced63b9

Browse files
committed
Added JsonPropertyName attribute
1 parent 4c02542 commit ced63b9

52 files changed

Lines changed: 443 additions & 180 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/Linq2GraphQL.Client/Attributes/GraphQLMemberAttribute.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
namespace Linq2GraphQL.Client;
1+
using System.Text.Json.Serialization;
2+
3+
namespace Linq2GraphQL.Client;
24

35
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Method)]
46
public class GraphQLMemberAttribute : Attribute
@@ -9,4 +11,4 @@ public GraphQLMemberAttribute(string graphQLName)
911
}
1012

1113
public string GraphQLName { get; private set; }
12-
}
14+
}

src/Linq2GraphQL.Client/Converters/CustomScalarConverter.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
namespace Linq2GraphQL.Client
77
{
88

9-
10-
11-
129
public class CustomScalarConverter<TScalar> : JsonConverter<TScalar>
1310
where TScalar : CustomScalar, new()
1411
{

src/Linq2GraphQL.Client/GraphClient.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Text.Json;
22
using System.Text.Json.Serialization;
3+
using Linq2GraphQL.Client.Converters;
34
using Linq2GraphQL.Client.Schema;
45
using Microsoft.Extensions.Caching.Memory;
56
using Microsoft.Extensions.DependencyInjection;
@@ -25,7 +26,7 @@ public GraphClient(HttpClient httpClient, IOptions<GraphClientOptions> options,
2526
SerializerOptions = new()
2627
{
2728
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
28-
Converters = { }
29+
Converters = { },
2930
};
3031

3132
SubscriptionUrl = GetSubscriptionUrl();
@@ -35,6 +36,7 @@ public GraphClient(HttpClient httpClient, IOptions<GraphClientOptions> options,
3536
public SubscriptionProtocol SubscriptionProtocol => options.Value.SubscriptionProtocol;
3637
public HttpClient HttpClient { get; }
3738
public JsonSerializerOptions SerializerOptions { get; }
39+
3840

3941
private string GetSubscriptionUrl()
4042
{

src/Linq2GraphQL.Client/Utilities.cs

Lines changed: 161 additions & 161 deletions
Original file line numberDiff line numberDiff line change
@@ -49,165 +49,165 @@ public static void ParseExpression(Expression body, QueryNode parent)
4949

5050

5151

52-
public static void ParseExpression_OLD(Expression body, QueryNode parent)
53-
{
54-
var node = new QueryNode(parent.Member);
55-
ParseExpressionInternal(body, node);
56-
node.SetAddPrimitiveChildren();
57-
58-
foreach (var childNode in node.ChildNodes)
59-
{
60-
parent.AddChildNode(childNode);
61-
}
62-
}
63-
64-
private static bool IsSelectOrSelectMany(this MethodCallExpression methodCallExpression)
65-
{
66-
if (methodCallExpression.Arguments.Count != 2)
67-
{
68-
return false;
69-
}
70-
71-
;
72-
var methodName = methodCallExpression.Method.Name;
73-
return (methodName == "Select" || methodName == "SelectMany");
74-
}
75-
76-
77-
private static void ParseExpressionInternal(Expression body, QueryNode parent)
78-
{
79-
if (body.NodeType == ExpressionType.MemberInit)
80-
{
81-
var exp = (MemberInitExpression)body;
82-
foreach (var binding in exp.Bindings.Where(e => e.BindingType == MemberBindingType.Assignment)
83-
.Cast<MemberAssignment>())
84-
{
85-
ParseExpressionInternal(binding.Expression, parent);
86-
}
87-
}
88-
89-
switch (body)
90-
{
91-
case LambdaExpression lambdaExpression:
92-
ParseExpressionInternal(lambdaExpression.Body, parent);
93-
break;
94-
95-
case MemberExpression memberExpression:
96-
var (parentNode, _) = GetMemberQueryNode(memberExpression);
97-
parent.AddChildNode(parentNode);
98-
break;
99-
100-
case MethodCallExpression methodCallExp:
101-
ParseMethodCallExpression(parent, methodCallExp);
102-
break;
103-
104-
case NewExpression newExpression:
105-
foreach (var argument in newExpression.Arguments)
106-
{
107-
ParseExpression(argument, parent);
108-
}
109-
110-
break;
111-
}
112-
}
113-
114-
private static void ParseMethodCallExpression(QueryNode parent, MethodCallExpression methodCallExp)
115-
{
116-
var graphInterfaceAttribute = methodCallExp.Method.GetCustomAttribute<GraphInterfaceAttribute>();
117-
if (graphInterfaceAttribute != null)
118-
{
119-
var queryNode = new QueryNode(methodCallExp.Method, methodCallExp.Method.Name, null, true);
120-
parent.AddChildNode(queryNode);
121-
return;
122-
}
123-
124-
var graphMethodAttribute = methodCallExp.Method.GetCustomAttribute<GraphMethodAttribute>();
125-
if (graphMethodAttribute != null)
126-
{
127-
var arguments = new List<ArgumentValue>();
128-
129-
var i = 0;
130-
foreach (var parameter in methodCallExp.Method.GetParameters())
131-
{
132-
var graphAttribute = parameter.GetCustomAttribute<GraphArgumentAttribute>();
133-
if (graphAttribute != null)
134-
{
135-
var arg = methodCallExp.Arguments[i];
136-
ConstantExpression argConstant;
137-
if (arg.NodeType == ExpressionType.Convert)
138-
{
139-
var unaryExpression = (UnaryExpression)arg;
140-
argConstant = (ConstantExpression)unaryExpression.Operand;
141-
}
142-
else
143-
{
144-
argConstant = (ConstantExpression)arg;
145-
}
146-
147-
arguments.Add(new ArgumentValue(parameter.Name, graphAttribute.GraphType,
148-
argConstant.Value));
149-
}
150-
151-
i++;
152-
}
153-
154-
var queryNode = new QueryNode(methodCallExp.Method, graphMethodAttribute.GraphName, arguments);
155-
parent.AddChildNode(queryNode);
156-
}
157-
else if (methodCallExp.IsSelectOrSelectMany())
158-
{
159-
if (methodCallExp.Arguments[0] is MemberExpression memberExpr)
160-
{
161-
var (ParentNode, LastNode) = GetMemberQueryNode(memberExpr);
162-
ParseExpressionInternal(methodCallExp.Arguments[1], LastNode);
163-
parent.AddChildNode(ParentNode);
164-
}
165-
else
166-
{
167-
ParseExpressionInternal(methodCallExp.Arguments[1], parent);
168-
}
169-
}
170-
}
171-
172-
private static (QueryNode ParentNode, QueryNode LastNode) GetMemberQueryNode(Expression expression)
173-
{
174-
var members = GetMembers(expression);
175-
if (members == null) return (null, null);
176-
177-
members.Reverse();
178-
179-
QueryNode parentNode = null;
180-
QueryNode currentNode = null;
181-
182-
foreach (var member in members)
183-
{
184-
var newNode = new QueryNode(member);
185-
if (parentNode == null)
186-
{
187-
parentNode = newNode;
188-
}
189-
else
190-
{
191-
currentNode.AddChildNode(newNode);
192-
}
193-
194-
currentNode = newNode;
195-
}
196-
197-
return (parentNode, currentNode);
198-
}
199-
200-
201-
private static List<MemberInfo> GetMembers(Expression expression)
202-
{
203-
var members = new List<MemberInfo>();
204-
if (expression.NodeType == ExpressionType.MemberAccess)
205-
{
206-
var memberExpression = (MemberExpression)expression;
207-
members.Add(memberExpression.Member);
208-
members.AddRange(GetMembers(memberExpression.Expression));
209-
}
210-
211-
return members;
212-
}
52+
//public static void ParseExpression_OLD(Expression body, QueryNode parent)
53+
//{
54+
// var node = new QueryNode(parent.Member);
55+
// ParseExpressionInternal(body, node);
56+
// node.SetAddPrimitiveChildren();
57+
58+
// foreach (var childNode in node.ChildNodes)
59+
// {
60+
// parent.AddChildNode(childNode);
61+
// }
62+
//}
63+
64+
//private static bool IsSelectOrSelectMany(this MethodCallExpression methodCallExpression)
65+
//{
66+
// if (methodCallExpression.Arguments.Count != 2)
67+
// {
68+
// return false;
69+
// }
70+
71+
// ;
72+
// var methodName = methodCallExpression.Method.Name;
73+
// return (methodName == "Select" || methodName == "SelectMany");
74+
//}
75+
76+
77+
//private static void ParseExpressionInternal(Expression body, QueryNode parent)
78+
//{
79+
// if (body.NodeType == ExpressionType.MemberInit)
80+
// {
81+
// var exp = (MemberInitExpression)body;
82+
// foreach (var binding in exp.Bindings.Where(e => e.BindingType == MemberBindingType.Assignment)
83+
// .Cast<MemberAssignment>())
84+
// {
85+
// ParseExpressionInternal(binding.Expression, parent);
86+
// }
87+
// }
88+
89+
// switch (body)
90+
// {
91+
// case LambdaExpression lambdaExpression:
92+
// ParseExpressionInternal(lambdaExpression.Body, parent);
93+
// break;
94+
95+
// case MemberExpression memberExpression:
96+
// var (parentNode, _) = GetMemberQueryNode(memberExpression);
97+
// parent.AddChildNode(parentNode);
98+
// break;
99+
100+
// case MethodCallExpression methodCallExp:
101+
// ParseMethodCallExpression(parent, methodCallExp);
102+
// break;
103+
104+
// case NewExpression newExpression:
105+
// foreach (var argument in newExpression.Arguments)
106+
// {
107+
// ParseExpression(argument, parent);
108+
// }
109+
110+
// break;
111+
// }
112+
//}
113+
114+
//private static void ParseMethodCallExpression(QueryNode parent, MethodCallExpression methodCallExp)
115+
//{
116+
// var graphInterfaceAttribute = methodCallExp.Method.GetCustomAttribute<GraphInterfaceAttribute>();
117+
// if (graphInterfaceAttribute != null)
118+
// {
119+
// var queryNode = new QueryNode(methodCallExp.Method, methodCallExp.Method.Name, null, true);
120+
// parent.AddChildNode(queryNode);
121+
// return;
122+
// }
123+
124+
// var graphMethodAttribute = methodCallExp.Method.GetCustomAttribute<GraphMethodAttribute>();
125+
// if (graphMethodAttribute != null)
126+
// {
127+
// var arguments = new List<ArgumentValue>();
128+
129+
// var i = 0;
130+
// foreach (var parameter in methodCallExp.Method.GetParameters())
131+
// {
132+
// var graphAttribute = parameter.GetCustomAttribute<GraphArgumentAttribute>();
133+
// if (graphAttribute != null)
134+
// {
135+
// var arg = methodCallExp.Arguments[i];
136+
// ConstantExpression argConstant;
137+
// if (arg.NodeType == ExpressionType.Convert)
138+
// {
139+
// var unaryExpression = (UnaryExpression)arg;
140+
// argConstant = (ConstantExpression)unaryExpression.Operand;
141+
// }
142+
// else
143+
// {
144+
// argConstant = (ConstantExpression)arg;
145+
// }
146+
147+
// arguments.Add(new ArgumentValue(parameter.Name, graphAttribute.GraphType,
148+
// argConstant.Value));
149+
// }
150+
151+
// i++;
152+
// }
153+
154+
// var queryNode = new QueryNode(methodCallExp.Method, graphMethodAttribute.GraphName, arguments);
155+
// parent.AddChildNode(queryNode);
156+
// }
157+
// else if (methodCallExp.IsSelectOrSelectMany())
158+
// {
159+
// if (methodCallExp.Arguments[0] is MemberExpression memberExpr)
160+
// {
161+
// var (ParentNode, LastNode) = GetMemberQueryNode(memberExpr);
162+
// ParseExpressionInternal(methodCallExp.Arguments[1], LastNode);
163+
// parent.AddChildNode(ParentNode);
164+
// }
165+
// else
166+
// {
167+
// ParseExpressionInternal(methodCallExp.Arguments[1], parent);
168+
// }
169+
// }
170+
//}
171+
172+
//private static (QueryNode ParentNode, QueryNode LastNode) GetMemberQueryNode(Expression expression)
173+
//{
174+
// var members = GetMembers(expression);
175+
// if (members == null) return (null, null);
176+
177+
// members.Reverse();
178+
179+
// QueryNode parentNode = null;
180+
// QueryNode currentNode = null;
181+
182+
// foreach (var member in members)
183+
// {
184+
// var newNode = new QueryNode(member);
185+
// if (parentNode == null)
186+
// {
187+
// parentNode = newNode;
188+
// }
189+
// else
190+
// {
191+
// currentNode.AddChildNode(newNode);
192+
// }
193+
194+
// currentNode = newNode;
195+
// }
196+
197+
// return (parentNode, currentNode);
198+
//}
199+
200+
201+
//private static List<MemberInfo> GetMembers(Expression expression)
202+
//{
203+
// var members = new List<MemberInfo>();
204+
// if (expression.NodeType == ExpressionType.MemberAccess)
205+
// {
206+
// var memberExpression = (MemberExpression)expression;
207+
// members.Add(memberExpression.Member);
208+
// members.AddRange(GetMembers(memberExpression.Expression));
209+
// }
210+
211+
// return members;
212+
//}
213213
}

0 commit comments

Comments
 (0)