Files
FictionArchive/FictionArchive.Service.Shared/Extensions/GraphQLExtensions.cs
gamer147 f0ea71e00e
All checks were successful
CI / build-backend (pull_request) Successful in 1m38s
CI / build-frontend (pull_request) Successful in 37s
[FA-misc] Various UI updates
2025-12-10 20:37:30 -05:00

31 lines
1.3 KiB
C#

using FictionArchive.Service.Shared.Services.GraphQL;
using HotChocolate.Execution.Configuration;
using HotChocolate.Types.NodaTime;
using Microsoft.Extensions.DependencyInjection;
namespace FictionArchive.Service.Shared.Extensions;
public static class GraphQLExtensions
{
public static IRequestExecutorBuilder AddDefaultGraphQl<TQuery, TMutation>(this IServiceCollection services) where TQuery : class where TMutation : class
{
return services.AddGraphQLServer()
.AddQueryType<TQuery>()
.AddMutationType<TMutation>()
.ApplySaneDefaults();
}
public static IRequestExecutorBuilder ApplySaneDefaults(this IRequestExecutorBuilder builder)
{
return builder.AddDiagnosticEventListener<ErrorEventListener>()
.AddErrorFilter<LoggingErrorFilter>()
.AddType<UnsignedIntType>()
.AddType<InstantType>()
.ModifyCostOptions(opt => opt.MaxFieldCost = 10000)
.AddMutationConventions(applyToAllMutations: true)
.AddFiltering(opt => opt.AddDefaults().BindRuntimeType<uint, UnsignedIntOperationFilterInputType>())
.AddSorting()
.AddProjections();
}
}