Exemple #1
0
        public CaptainQueries(ICaptainService captainService)
        {
            FieldAsync <ListCaptainsQueryModelType>(
                SEARCH_REQUEST_ENDPOINT,
                "Returns a paginated list of Captains",
                new QueryArguments(
                    new QueryArgument <NonNullGraphType <PagedRequestType> > {
                Name = PAGINATION_ARGUMENT_NAME, Description = PagedRequestType.Description
            },
                    new QueryArgument <NonNullGraphType <OrderedRequestType> > {
                Name = ORDERING_ARGUMENT_NAME, Description = OrderedRequestType.Description
            },
                    new QueryArgument <NonNullGraphType <FilteredRequestType <Captain> > > {
                Name = FILTERING_ARGUMENT_NAME, Description = FilteredRequestType <Captain> .Description
            }
                    ),
                async context =>
            {
                var pagination = context.GetArgument <Pagination>(PAGINATION_ARGUMENT_NAME);
                var ordering   = context.GetArgument <Ordering>(ORDERING_ARGUMENT_NAME);
                var filtering  = context.GetArgument <CaptainFilter>(FILTERING_ARGUMENT_NAME);

                var(totalCount, items) = await captainService.SearchCaptainAsync(pagination, ordering, filtering);
                try
                {
                    return(new ListResponse <Captain>
                    {
                        TotalCount = totalCount,
                        Items = items
                    });
                }
                catch (Exception)
                {
                    context.Errors.Add(new ExecutionError("Server Error"));
                    return(null);
                }
            }
                );
        }