Skip to content

Commit 11d776d

Browse files
committed
Add TimeSpan support and enhance enum strategy handling
Introduced a nullable TimeSpan property to Order.cs and updated Helpers.cs for TimeSpan type mapping. Also improved enum strategy handling in GenerateClientAsync to check for null values.
1 parent 570574d commit 11d776d

File tree

9 files changed

+238
-2
lines changed

9 files changed

+238
-2
lines changed

src/Linq2GraphQL.Generator/GraphQLSchema/Helpers.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ public static class Helpers
1616
{ "timestamptz", new ValueTuple<string, Type>("DateTimeOffset", typeof(DateTimeOffset)) },
1717
{ "Uri", new ValueTuple<string, Type>("Uri", typeof(Uri)) },
1818
{ "DateTime", new ValueTuple<string, Type>("DateTimeOffset", typeof(DateTimeOffset)) },
19-
{ "Decimal", new ValueTuple<string, Type>("decimal", typeof(decimal)) }
19+
{ "Decimal", new ValueTuple<string, Type>("decimal", typeof(decimal)) },
20+
{ "TimeSpan", new ValueTuple<string, Type>("TimeSpan", typeof(TimeSpan)) }
2021
};
2122

2223

src/Linq2GraphQL.Generator/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ await GenerateClientAsync(uriValue, outputFolderValue, namespaceValue, clientNam
5656
private static async Task GenerateClientAsync(Uri uri, string outputFolder, string namespaceName, string name,
5757
bool includeSubscriptions, string authToken, string enumStrategy)
5858
{
59-
var enumStrat = enumStrategy.Equals("AddUnknownOption", StringComparison.InvariantCultureIgnoreCase)
59+
var enumStrat = enumStrategy != null && enumStrategy.Equals("AddUnknownOption", StringComparison.InvariantCultureIgnoreCase)
6060
? EnumGeneratorStrategy.AddUnknownOption
6161
: EnumGeneratorStrategy.FailIfMissing;
6262

test/Linq2GraphQL.TestClient/Generated/Inputs/InputFactory.cs

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,10 @@ public static StringOperationFilterInput StringOperationFilter()
9999
{
100100
return new StringOperationFilterInput();
101101
}
102+
public static TimeSpanOperationFilterInput TimeSpanOperationFilter()
103+
{
104+
return new TimeSpanOperationFilterInput();
105+
}
102106
public static UuidOperationFilterInput UuidOperationFilter()
103107
{
104108
return new UuidOperationFilterInput();
@@ -991,6 +995,15 @@ public static OrderFilterInput Lines(this OrderFilterInput input, Action<ListFil
991995
return input;
992996
}
993997

998+
public static OrderFilterInput EntryTime(this OrderFilterInput input, Action<TimeSpanOperationFilterInput> mod)
999+
{
1000+
var filter = new TimeSpanOperationFilterInput();
1001+
mod ??= _ => { };
1002+
mod(filter);
1003+
input.EntryTime = filter;
1004+
return input;
1005+
}
1006+
9941007
}
9951008

9961009
public static class OrderInputExtensions
@@ -1036,6 +1049,13 @@ public static OrderInput Lines(this OrderInput input, Action<List<OrderLineInput
10361049
return input;
10371050
}
10381051

1052+
1053+
public static OrderInput EntryTime(this OrderInput input, TimeSpan? val)
1054+
{
1055+
input.EntryTime = val;
1056+
return input;
1057+
}
1058+
10391059
}
10401060

10411061
public static class OrderLineFilterInputExtensions
@@ -1182,6 +1202,13 @@ public static OrderSortInput OrderDate(this OrderSortInput input, SortEnumType?
11821202
return input;
11831203
}
11841204

1205+
1206+
public static OrderSortInput EntryTime(this OrderSortInput input, SortEnumType? val)
1207+
{
1208+
input.EntryTime = val;
1209+
return input;
1210+
}
1211+
11851212
}
11861213

11871214
public static class StringOperationFilterInputExtensions
@@ -1276,6 +1303,94 @@ public static StringOperationFilterInput NendsWith(this StringOperationFilterInp
12761303

12771304
}
12781305

1306+
public static class TimeSpanOperationFilterInputExtensions
1307+
{
1308+
1309+
public static TimeSpanOperationFilterInput Eq(this TimeSpanOperationFilterInput input, TimeSpan? val)
1310+
{
1311+
input.Eq = val;
1312+
return input;
1313+
}
1314+
1315+
1316+
public static TimeSpanOperationFilterInput Neq(this TimeSpanOperationFilterInput input, TimeSpan? val)
1317+
{
1318+
input.Neq = val;
1319+
return input;
1320+
}
1321+
1322+
1323+
public static TimeSpanOperationFilterInput In(this TimeSpanOperationFilterInput input, List<TimeSpan?> val)
1324+
{
1325+
input.In = val;
1326+
return input;
1327+
}
1328+
1329+
1330+
public static TimeSpanOperationFilterInput Nin(this TimeSpanOperationFilterInput input, List<TimeSpan?> val)
1331+
{
1332+
input.Nin = val;
1333+
return input;
1334+
}
1335+
1336+
1337+
public static TimeSpanOperationFilterInput Gt(this TimeSpanOperationFilterInput input, TimeSpan? val)
1338+
{
1339+
input.Gt = val;
1340+
return input;
1341+
}
1342+
1343+
1344+
public static TimeSpanOperationFilterInput Ngt(this TimeSpanOperationFilterInput input, TimeSpan? val)
1345+
{
1346+
input.Ngt = val;
1347+
return input;
1348+
}
1349+
1350+
1351+
public static TimeSpanOperationFilterInput Gte(this TimeSpanOperationFilterInput input, TimeSpan? val)
1352+
{
1353+
input.Gte = val;
1354+
return input;
1355+
}
1356+
1357+
1358+
public static TimeSpanOperationFilterInput Ngte(this TimeSpanOperationFilterInput input, TimeSpan? val)
1359+
{
1360+
input.Ngte = val;
1361+
return input;
1362+
}
1363+
1364+
1365+
public static TimeSpanOperationFilterInput Lt(this TimeSpanOperationFilterInput input, TimeSpan? val)
1366+
{
1367+
input.Lt = val;
1368+
return input;
1369+
}
1370+
1371+
1372+
public static TimeSpanOperationFilterInput Nlt(this TimeSpanOperationFilterInput input, TimeSpan? val)
1373+
{
1374+
input.Nlt = val;
1375+
return input;
1376+
}
1377+
1378+
1379+
public static TimeSpanOperationFilterInput Lte(this TimeSpanOperationFilterInput input, TimeSpan? val)
1380+
{
1381+
input.Lte = val;
1382+
return input;
1383+
}
1384+
1385+
1386+
public static TimeSpanOperationFilterInput Nlte(this TimeSpanOperationFilterInput input, TimeSpan? val)
1387+
{
1388+
input.Nlte = val;
1389+
return input;
1390+
}
1391+
1392+
}
1393+
12791394
public static class UuidOperationFilterInputExtensions
12801395
{
12811396

test/Linq2GraphQL.TestClient/Generated/Inputs/OrderFilterInput.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,11 @@ public ListFilterInputTypeOfOrderLineFilterInput Lines
5757
set => SetValue("lines", value);
5858
}
5959

60+
[JsonPropertyName("entryTime")]
61+
public TimeSpanOperationFilterInput EntryTime
62+
{
63+
get => GetValue<TimeSpanOperationFilterInput>("entryTime");
64+
set => SetValue("entryTime", value);
65+
}
66+
6067
}

test/Linq2GraphQL.TestClient/Generated/Inputs/OrderInput.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,11 @@ public List<OrderLineInput> Lines
4343
set => SetValue("lines", value);
4444
}
4545

46+
[JsonPropertyName("entryTime")]
47+
public TimeSpan? EntryTime
48+
{
49+
get => GetValue<TimeSpan?>("entryTime");
50+
set => SetValue("entryTime", value);
51+
}
52+
4653
}

test/Linq2GraphQL.TestClient/Generated/Inputs/OrderSortInput.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,11 @@ public SortEnumType? OrderDate
3636
set => SetValue("orderDate", value);
3737
}
3838

39+
[JsonPropertyName("entryTime")]
40+
public SortEnumType? EntryTime
41+
{
42+
get => GetValue<SortEnumType?>("entryTime");
43+
set => SetValue("entryTime", value);
44+
}
45+
3946
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text.Json.Serialization;
4+
using Linq2GraphQL.Client;
5+
6+
namespace Linq2GraphQL.TestClient;
7+
8+
[JsonConverter(typeof(GraphInputConverter<TimeSpanOperationFilterInput>))]
9+
public partial class TimeSpanOperationFilterInput : GraphInputBase
10+
{
11+
[JsonPropertyName("eq")]
12+
public TimeSpan? Eq
13+
{
14+
get => GetValue<TimeSpan?>("eq");
15+
set => SetValue("eq", value);
16+
}
17+
18+
[JsonPropertyName("neq")]
19+
public TimeSpan? Neq
20+
{
21+
get => GetValue<TimeSpan?>("neq");
22+
set => SetValue("neq", value);
23+
}
24+
25+
[JsonPropertyName("in")]
26+
public List<TimeSpan?> In
27+
{
28+
get => GetValue<List<TimeSpan?>>("in");
29+
set => SetValue("in", value);
30+
}
31+
32+
[JsonPropertyName("nin")]
33+
public List<TimeSpan?> Nin
34+
{
35+
get => GetValue<List<TimeSpan?>>("nin");
36+
set => SetValue("nin", value);
37+
}
38+
39+
[JsonPropertyName("gt")]
40+
public TimeSpan? Gt
41+
{
42+
get => GetValue<TimeSpan?>("gt");
43+
set => SetValue("gt", value);
44+
}
45+
46+
[JsonPropertyName("ngt")]
47+
public TimeSpan? Ngt
48+
{
49+
get => GetValue<TimeSpan?>("ngt");
50+
set => SetValue("ngt", value);
51+
}
52+
53+
[JsonPropertyName("gte")]
54+
public TimeSpan? Gte
55+
{
56+
get => GetValue<TimeSpan?>("gte");
57+
set => SetValue("gte", value);
58+
}
59+
60+
[JsonPropertyName("ngte")]
61+
public TimeSpan? Ngte
62+
{
63+
get => GetValue<TimeSpan?>("ngte");
64+
set => SetValue("ngte", value);
65+
}
66+
67+
[JsonPropertyName("lt")]
68+
public TimeSpan? Lt
69+
{
70+
get => GetValue<TimeSpan?>("lt");
71+
set => SetValue("lt", value);
72+
}
73+
74+
[JsonPropertyName("nlt")]
75+
public TimeSpan? Nlt
76+
{
77+
get => GetValue<TimeSpan?>("nlt");
78+
set => SetValue("nlt", value);
79+
}
80+
81+
[JsonPropertyName("lte")]
82+
public TimeSpan? Lte
83+
{
84+
get => GetValue<TimeSpan?>("lte");
85+
set => SetValue("lte", value);
86+
}
87+
88+
[JsonPropertyName("nlte")]
89+
public TimeSpan? Nlte
90+
{
91+
get => GetValue<TimeSpan?>("nlte");
92+
set => SetValue("nlte", value);
93+
}
94+
95+
}

test/Linq2GraphQL.TestClient/Generated/Types/Order.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,7 @@ public partial class Order : GraphQLTypeBase
5353
[JsonPropertyName("lines")]
5454
public List<OrderLine> Lines { get; set; }
5555

56+
[JsonPropertyName("entryTime")]
57+
public TimeSpan? EntryTime { get; set; }
58+
5659
}

test/Linq2GraphQL.TestServer.Shared/Models/Order.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public Order(Customer customer)
1313
public Address? Address { get; set; }
1414
public DateTimeOffset OrderDate { get; set; }
1515
public List<OrderLine> Lines { get; set; } = new();
16+
public TimeOnly? EntryTime { get; set; }
1617

1718
public string GetOrderHello(string name, int first = 0)
1819
{

0 commit comments

Comments
 (0)