in src/Epam.GraphQL/Configuration/Implementations/Fields/ChildFields/QueryableFieldBase.cs [68:115]
protected QueryableFieldBase(
IChainConfigurationContext configurationContext,
BaseObjectGraphTypeConfigurator<TEntity, TExecutionContext> parent,
string name,
IQueryableResolver<TEntity, 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)
{
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",
};
}
}