пользовательский фильтр hotchocolate для родителя на основе дочерней коллекции - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь реализовать аналогичную описанную здесь модель фильтрации с hotchocolate подходом с первым кодом. Мне нужно отфильтровать фильмы, если хотя бы один из их актеров соответствует определенным критериям. Модель выглядит следующим образом:

public class Movie
{
    public IList<Actor> Actors { get; set; }
}

public class Actor { }

public class MovieTypeDef : ObjectType<Movie>
{
    protected override void Configure(IObjectTypeDescriptor<Movie> descriptor)
    {
        descriptor.Field(x => x.Actors)
            .Type<NonNullType<ListType<NonNullType<ActorTypeDef>>>>();
    }
}

public class ActorTypeDef : ObjectType<Actor> { }

public class Query
{
    public IList<Movie> Movies()
    {
        return new List<Movie>();
    }
}

public class QueryTypeDef : ObjectType<Query>
{
    protected override void Configure(IObjectTypeDescriptor<Query> descriptor)
    {
        descriptor.Field(x => x.Movies())
            .Type<NonNullType<ListType<MovieTypeDef>>>()
            .UseFiltering<MoviesFileringTypeDef>();
    }
}

public class MoviesFileringTypeDef : FilterInputType<Movie>
{
    protected override void Configure(IFilterInputTypeDescriptor<Movie> descriptor)
    {
        descriptor.Filter(x => x.Actors) // compilation error
    }
}

Кажется, что нет возможности добавить пользовательский фильтр в MoviesFileringTypeDef, поскольку он позволяет использовать только свойства класса Movie, и коллекции там не принимаются. Можно ли реализовать такой фильтр с помощью hotchocolate?

...