Skip to content

Custom OperationFilterInputType for ID fields not working #6177

@jorisdebock

Description

@jorisdebock

Is there an existing issue for this?

  • I have searched the existing issues

Product

Hot Chocolate

Describe the bug

Defining a custom OperationFilterInputType for ID fields does not work, it always uses the predefined IdOperationFilterInputType

Steps to reproduce

code:

public class SubscriptionNode
{
    [ID]
    public int Id { get; set; }
}
    
public class SubscriptionFilterType : FilterInputType<SubscriptionNode>
{
    protected override void Configure(IFilterInputTypeDescriptor<SubscriptionNode> descriptor)
    {
        descriptor.BindFieldsExplicitly();
        descriptor.Field(f => f.Id).Type<SubscriptionIdOperationFilterInput>();
    }
}

public class SubscriptionIdOperationFilterInput : IdOperationFilterInputType
{
    protected override void Configure(IFilterInputTypeDescriptor descriptor)
    {
        descriptor.Operation(DefaultFilterOperations.Equals).Type<IdType>();
        descriptor.Operation(DefaultFilterOperations.In).Type<ListType<IdType>>();

        descriptor.AllowAnd(false).AllowOr(false);
    }
}

usage:

[UseFiltering<SubscriptionFilterType>]
public async Task<CollectionSegment<SubscriptionNode>> Subscriptions() { ... }

results in:

  subscriptions(
    where: SubscriptionsFilterInput
  ): SubscriptionsCollectionSegment
}

input SubscriptionsFilterInput {
  id: IdOperationFilterInput
}

input SubscriptionIdOperationFilterInput {
  eq: ID
  in: [ID]
}

I would expect:

input SubscriptionsFilterInput {
  """
  Identifier
  """
  id: SubscriptionIdOperationFilterInput 
}

Relevant log output

No response

Additional Context?

No response

Version

13.0.5

Metadata

Metadata

Assignees

Labels

Area: DataIssue is related to filtering, sorting, pagination or projections🌶️ hot chocolate

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions