Skip to content

Commit e56b92d

Browse files
committed
Refactored DataLoader
1 parent f2521c6 commit e56b92d

File tree

3 files changed

+46
-9
lines changed

3 files changed

+46
-9
lines changed

src/GreenDonut/src/Core/DataLoaderFetchContext.cs

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ public TState GetStateOrDefault<TState>(string key, TState defaultValue)
142142
/// </returns>
143143
public ISelectorBuilder GetSelector()
144144
{
145-
if (ContextData.TryGetValue(typeof(ISelectorBuilder).FullName!, out var value)
145+
if (ContextData.TryGetValue(DataStateKeys.Selector, out var value)
146146
&& value is ISelectorBuilder casted)
147147
{
148148
return casted;
@@ -162,8 +162,8 @@ public ISelectorBuilder GetSelector()
162162
/// </returns>
163163
public IPredicateBuilder GetPredicate()
164164
{
165-
if (ContextData.TryGetValue(typeof(IPredicateBuilder).FullName!, out var value)
166-
&& value is DefaultPredicateBuilder casted)
165+
if (ContextData.TryGetValue(DataStateKeys.Predicate, out var value)
166+
&& value is IPredicateBuilder casted)
167167
{
168168
return casted;
169169
}
@@ -172,4 +172,45 @@ public IPredicateBuilder GetPredicate()
172172
// a new default predicate builder.
173173
return DefaultPredicateBuilder.Empty;
174174
}
175+
176+
public SortDefinition<T> GetSorting<T>()
177+
{
178+
if (ContextData.TryGetValue(DataStateKeys.Sorting, out var value)
179+
&& value is SortDefinition<T> casted)
180+
{
181+
return casted;
182+
}
183+
184+
return SortDefinition<T>.Empty;
185+
}
186+
187+
public QueryContext<T> GetQueryContext<T>()
188+
{
189+
ISelectorBuilder? selector = null;
190+
IPredicateBuilder? predicate = null;
191+
SortDefinition<T>? sorting = null;
192+
193+
if (ContextData.TryGetValue(DataStateKeys.Selector, out var value)
194+
&& value is ISelectorBuilder casted1)
195+
{
196+
selector = casted1;
197+
}
198+
199+
if (ContextData.TryGetValue(DataStateKeys.Predicate, out value)
200+
&& value is IPredicateBuilder casted2)
201+
{
202+
predicate = casted2;
203+
}
204+
205+
if (ContextData.TryGetValue(DataStateKeys.Sorting, out value)
206+
&& value is SortDefinition<T> casted3)
207+
{
208+
sorting = casted3;
209+
}
210+
211+
return new QueryContext<T>(
212+
selector?.TryCompile<T>(),
213+
predicate?.TryCompile<T>(),
214+
sorting);
215+
}
175216
}

src/GreenDonut/src/Core/GreenDonut.csproj

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,4 @@
3030
<ProjectReference Include="..\Data.Primitives\GreenDonut.Data.Primitives.csproj" />
3131
</ItemGroup>
3232

33-
<ItemGroup>
34-
<Folder Include="Predicates\" />
35-
<Folder Include="Selectors\" />
36-
</ItemGroup>
37-
3833
</Project>

src/HotChocolate/Core/src/Types.Analyzers/FileBuilders/DataLoaderFileBuilder.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,8 @@ public void WriteDataLoaderLoadMethod(
314314
((INamedTypeSymbol)parameter.Type).TypeArguments[0].ToFullyQualified(),
315315
DataLoaderInfo.Sorting);
316316
_writer.WriteIndentedLine(
317-
"var {0} = new global::{1}<{2}>({0}_selector, {0}_predicate, {0}_sortDefinition);",
317+
"var {0} = new global::{1}<{2}>({0}_selector?.TryCompile<{2}>(), " +
318+
"{0}_predicate?.TryCompile<{2}>(), {0}_sortDefinition);",
318319
parameter.VariableName,
319320
WellKnownTypes.QueryContext,
320321
((INamedTypeSymbol)parameter.Type).TypeArguments[0].ToFullyQualified());

0 commit comments

Comments
 (0)