in src/Epam.GraphQL/Configuration/Implementations/Fields/ChildFields/RootQueryableFieldBase.cs [58:105]
protected RootQueryableFieldBase(
IChainConfigurationContext configurationContext,
BaseObjectGraphTypeConfigurator<object, TExecutionContext> parent,
string name,
IRootQueryableResolver<TReturnType, TExecutionContext> resolver,
IGraphTypeDescriptor<TReturnType, TExecutionContext> elementGraphType,
IObjectGraphTypeConfigurator<TReturnType, TExecutionContext>? configurator,
LazyQueryArguments? arguments,
ISearcher<TReturnType, TExecutionContext>? searcher,
IEnumerable<(LambdaExpression SortExpression, SortDirection SortDirection)> naturalSorters)
: base(
configurationContext,
parent,
name,
resolver,
elementGraphType)
{
Arguments = arguments;
ObjectGraphTypeConfigurator = configurator;
NaturalSorters = naturalSorters;
if (HasFilter)
{
Argument("filter", CreateFilterArgument);
}
var sortableFields = ObjectGraphTypeConfigurator?.Sorters.Select(f => f.Name).ToArray();
if (sortableFields != null && sortableFields.Any())
{
Argument("sorting", new ListGraphType(new SortingOptionGraphType(ObjectGraphTypeConfigurator?.Name ?? typeof(TReturnType).GraphQLTypeName(false), sortableFields)));
}
Searcher = searcher;
if (searcher != null)
{
Argument("search", typeof(string));
}
QueryArgument CreateFilterArgument()
{
Guards.ThrowNotSupportedIf(ObjectGraphTypeConfigurator == null);
return new QueryArgument(Registry.GenerateInputGraphType(ObjectGraphTypeConfigurator.CreateInlineFilters().FilterType))
{
Name = "filter",
};
}
}