Skip to content

Commit

Permalink
Implicitly inject topic event receiver and topic event sender (#5692)
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelstaib committed Jan 16, 2023
1 parent f8b573e commit 4173f63
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 17 deletions.
Expand Up @@ -7,6 +7,7 @@
using System.Threading.Tasks;
using HotChocolate.Internal;
using HotChocolate.Resolvers.Expressions.Parameters;
using HotChocolate.Subscriptions;
using HotChocolate.Types.Descriptors;
using HotChocolate.Utilities;
using static System.Linq.Expressions.Expression;
Expand Down Expand Up @@ -48,7 +49,7 @@ internal sealed class DefaultResolverCompiler : IResolverCompiler
: new List<IParameterExpressionBuilder>();

// explicit internal expression builders will be added first.
var parameterExpressionBuilders = new List<IParameterExpressionBuilder>
var expressionBuilders = new List<IParameterExpressionBuilder>
{
new ParentParameterExpressionBuilder(),
new ServiceParameterExpressionBuilder(),
Expand All @@ -69,25 +70,27 @@ internal sealed class DefaultResolverCompiler : IResolverCompiler
{
if (!builder.IsDefaultHandler)
{
parameterExpressionBuilders.Add(builder);
expressionBuilders.Add(builder);
}
}
}

// then we add the internal implicit expression builder.
parameterExpressionBuilders.Add(new DocumentParameterExpressionBuilder());
parameterExpressionBuilders.Add(new CancellationTokenParameterExpressionBuilder());
parameterExpressionBuilders.Add(new ResolverContextParameterExpressionBuilder());
parameterExpressionBuilders.Add(new PureResolverContextParameterExpressionBuilder());
parameterExpressionBuilders.Add(new SchemaParameterExpressionBuilder());
parameterExpressionBuilders.Add(new SelectionParameterExpressionBuilder());
parameterExpressionBuilders.Add(new FieldSyntaxParameterExpressionBuilder());
parameterExpressionBuilders.Add(new ObjectTypeParameterExpressionBuilder());
parameterExpressionBuilders.Add(new OperationDefinitionParameterExpressionBuilder());
parameterExpressionBuilders.Add(new OperationParameterExpressionBuilder());
parameterExpressionBuilders.Add(new FieldParameterExpressionBuilder());
parameterExpressionBuilders.Add(new ClaimsPrincipalParameterExpressionBuilder());
parameterExpressionBuilders.Add(new PathParameterExpressionBuilder());
expressionBuilders.Add(new DocumentParameterExpressionBuilder());
expressionBuilders.Add(new CancellationTokenParameterExpressionBuilder());
expressionBuilders.Add(new ResolverContextParameterExpressionBuilder());
expressionBuilders.Add(new PureResolverContextParameterExpressionBuilder());
expressionBuilders.Add(new SchemaParameterExpressionBuilder());
expressionBuilders.Add(new SelectionParameterExpressionBuilder());
expressionBuilders.Add(new FieldSyntaxParameterExpressionBuilder());
expressionBuilders.Add(new ObjectTypeParameterExpressionBuilder());
expressionBuilders.Add(new OperationDefinitionParameterExpressionBuilder());
expressionBuilders.Add(new OperationParameterExpressionBuilder());
expressionBuilders.Add(new FieldParameterExpressionBuilder());
expressionBuilders.Add(new ClaimsPrincipalParameterExpressionBuilder());
expressionBuilders.Add(new PathParameterExpressionBuilder());
expressionBuilders.Add(new CustomServiceParameterExpressionBuilder<ITopicEventReceiver>());
expressionBuilders.Add(new CustomServiceParameterExpressionBuilder<ITopicEventSender>());

if (customParameterExpressionBuilders is not null)
{
Expand All @@ -111,7 +114,7 @@ internal sealed class DefaultResolverCompiler : IResolverCompiler

}

_parameterExpressionBuilders = parameterExpressionBuilders;
_parameterExpressionBuilders = expressionBuilders;

var parameterFieldConfigurations = new List<IParameterFieldConfiguration>();

Expand Down
Expand Up @@ -1139,7 +1139,7 @@ public async IAsyncEnumerable<string> CreateOnArguments(string arg)
public class MySubscriptionExtension
{
public async ValueTask<ISourceStream<string>> SubscribeToOnExplicit(
[Service] ITopicEventReceiver eventReceiver) =>
ITopicEventReceiver eventReceiver) =>
await eventReceiver.SubscribeAsync<string>("explicit");

[Subscribe(With = nameof(SubscribeToOnExplicit))]
Expand Down

0 comments on commit 4173f63

Please sign in to comment.