Beispiel #1
0
        private async Task <IEnumerable <Row> > ResolveRelated(ReadonlyResolveFieldContext ctx, string loaderName,
                                                               Func <IEnumerable <Key>, IEnumerable <Row> > getData)
        {
            // DATA LOADER
            var dataloader = (IDataLoaderContextAccessor)_serviceProvider.GetService(typeof(IDataLoaderContextAccessor));
            var listLoader = dataloader.Context
                             .GetOrAddCollectionBatchLoader <Key, Row>(
                loaderKey: loaderName,
                fetchFunc: async(parentKeysList) =>
            {
                var resultRows = getData(parentKeysList);
                var lookup     = resultRows.ToLookup <Row, Key>(
                    row =>
                {
                    return(row.Key);
                }, new KeyComparer());

                return(lookup);
            },
                new KeyComparer()                 //
                );

            if (ctx.Source is Row row)
            {
                var ret = await listLoader.LoadAsync(row.Key);

                return(ret);
            }

            var noNestedData = getData(null);

            return(noNestedData);
        }
Beispiel #2
0
        public Task <IReadOnlyList <Review> > GetMovieReviews(ReadonlyResolveFieldContext ctx)
        {
            var movie = ctx.Source.GetPropertyValue <Movie>();

            return(_mediator.Send(new GetReviewsByMovieId.Request(movie.Id)));
        }