Exemplo n.º 1
0
        public static IGraphQLRequest ExecuteItemQuery(InputItemFilter filter, InputSortParam sort,
                                                       IPagination pagination, string customMetaFilter, ContentIncludeMode contentIncludeMode,
                                                       bool includeContainerItems,
                                                       IContextData contextData, IContextData globaContextData)
        {
            QueryBuilder builder = new QueryBuilder().WithQueryResource("ItemQuery", false);

            // We only include the fragments that will be required based on the item types in the
            // input item filter
            if (filter.ItemTypes != null)
            {
                string fragmentList = filter.ItemTypes.Select(itemType
                                                              => $"{Enum.GetName(typeof (ContentModel.FilterItemType), itemType).Capitialize()}Fields")
                                      .Aggregate(string.Empty, (current, fragment) => current + $"...{fragment}\n");
                // Just a quick and easy way to replace markers in our queries with vars here.
                builder.ReplaceTag("fragmentList", fragmentList);
                builder.LoadFragments();
            }

            return(builder.WithIncludeRegion("includeContainerItems", includeContainerItems).
                   WithPagination(pagination).
                   WithCustomMetaFilter(customMetaFilter).
                   WithContentIncludeMode(contentIncludeMode).
                   WithInputItemFilter(filter).
                   WithInputSortParam(sort).
                   WithContextData(contextData).
                   WithContextData(globaContextData).
                   WithConvertor(new ItemConvertor()).
                   Build());
        }
 public ItemConnection ExecuteItemQuery(InputItemFilter filter, InputSortParam sort, IPagination pagination,
                                        string customMetaFilter, ContentIncludeMode contentIncludeMode, bool includeContainerItems,
                                        IContextData contextData)
 =>
 _client.Execute <ContentQuery>(GraphQLRequests.ExecuteItemQuery(filter, sort, pagination,
                                                                 customMetaFilter, contentIncludeMode, includeContainerItems,
                                                                 contextData, GlobalContextDataInternal)).TypedResponseData.Items;
        protected InputSortParam BuildSort(SimpleBrokerQuery queryParams)
        {
            if (!string.IsNullOrEmpty(queryParams.Sort) && queryParams.Sort.ToLower() != "none")
            {
                InputSortParam sort = new InputSortParam();
                sort.Order = queryParams.Sort.ToLower().EndsWith("asc") ?
                             SortOrderType.Ascending : SortOrderType.Descending;

                int    idx        = queryParams.Sort.Trim().IndexOf(" ", StringComparison.Ordinal);
                string sortColumn = idx > 0 ? queryParams.Sort.Trim().Substring(0, idx) : queryParams.Sort.Trim();
                switch (sortColumn.ToLower())
                {
                case "title":
                    sort.SortBy = SortFieldType.TITLE;
                    break;

                case "pubdate":
                    sort.SortBy = SortFieldType.LAST_PUBLISH_DATE;
                    break;

                default:
                    sort.SortBy = SortFieldType.CREATION_DATE;
                    break;
                }

                return(sort);
            }
            return(null);
        }
        public IEnumerable <IItem> ExecuteQueryItems(SimpleBrokerQuery queryParams)
        {
            InputItemFilter filter   = BuildFilter(queryParams);
            InputSortParam  sort     = BuildSort(queryParams);
            var             client   = ApiClientFactory.Instance.CreateClient();
            int             pageSize = queryParams.PageSize > 0 ? queryParams.PageSize + 1 : queryParams.PageSize;
            var             results  = client.ExecuteItemQuery(filter, sort, new Pagination
            {
                First = pageSize,
                After = queryParams.Cursor
            }, null, ContentIncludeMode.Exclude, false, null);
            var resultList = results.Edges.Select(edge => edge.Node).ToList();

            if (pageSize == -1)
            {
                // returning all items with pageSize = -1
                Cursor = null;
                return(resultList);
            }
            HasMore = results.Edges.Count > queryParams.PageSize;
            int n = HasMore ? queryParams.PageSize : results.Edges.Count;

            Cursor = n > 0 ? results.Edges[n - 1].Cursor : null;
            return(HasMore ? resultList.GetRange(0, queryParams.PageSize) : resultList);
        }
        public IEnumerable <string> ExecuteQuery(SimpleBrokerQuery queryParams)
        {
            InputItemFilter filter  = BuildFilter(queryParams);
            InputSortParam  sort    = BuildSort(queryParams);
            var             client  = ApiClientFactory.Instance.CreateClient();
            var             results = client.ExecuteItemQuery(filter, sort, new Pagination
            {
                First = queryParams.PageSize + 1,
                After = queryParams.Cursor
            }, null, ContentIncludeMode.Exclude, false, null);

            HasMore = results.Edges.Count > queryParams.PageSize;
            int n          = HasMore ? queryParams.PageSize : results.Edges.Count;
            var resultList = new List <string>();

            for (int i = 0; i < n; i++)
            {
                resultList.Add(results.Edges[i].Node.CmUri());
            }
            Cursor = n > 0 ? results.Edges[n - 1].Cursor : null;
            return(resultList);
        }
Exemplo n.º 6
0
 public QueryBuilder WithInputSortParam(InputSortParam sort) => WithVariable("inputSortParam", sort);
 public async Task <ItemConnection> ExecuteItemQueryAsync(InputItemFilter filter, InputSortParam sort,
                                                          IPagination pagination, string customMetaFilter, ContentIncludeMode contentIncludeMode,
                                                          bool includeContainerItems,
                                                          IContextData contextData,
                                                          CancellationToken cancellationToken = default(CancellationToken)) => (
     await
     _client.ExecuteAsync <ContentQuery>(
         GraphQLRequests.ExecuteItemQuery(filter, sort, pagination, customMetaFilter, contentIncludeMode,
                                          includeContainerItems,
                                          contextData, GlobalContextDataInternal)
         , cancellationToken).ConfigureAwait(false)).TypedResponseData.Items;
 public async Task <ComponentPresentationConnection> GetComponentPresentationsAsync(ContentNamespace ns,
                                                                                    int publicationId, InputComponentPresentationFilter filter,
                                                                                    InputSortParam sort, IPagination pagination, string customMetaFilter, ContentIncludeMode contentIncludeMode,
                                                                                    IContextData contextData, CancellationToken cancellationToken)
 => (await _client.ExecuteAsync <ContentQuery>(
         GraphQLRequests.ComponentPresentations(ns, publicationId, filter, sort, pagination, customMetaFilter,
                                                contentIncludeMode, contextData, GlobalContextDataInternal),
         cancellationToken).ConfigureAwait(false))
 .TypedResponseData.ComponentPresentations;
 public ComponentPresentationConnection GetComponentPresentations(ContentNamespace ns, int publicationId,
                                                                  InputComponentPresentationFilter filter, InputSortParam sort, IPagination pagination,
                                                                  string customMetaFilter,
                                                                  ContentIncludeMode contentIncludeMode, IContextData contextData)
 => _client.Execute <ContentQuery>(
     GraphQLRequests.ComponentPresentations(ns, publicationId, filter, sort, pagination, customMetaFilter,
                                            contentIncludeMode, contextData, GlobalContextDataInternal))
 .TypedResponseData.ComponentPresentations;
Exemplo n.º 10
0
 public static IGraphQLRequest ComponentPresentations(ContentNamespace ns, int publicationId,
                                                      InputComponentPresentationFilter filter, InputSortParam sort, IPagination pagination,
                                                      string customMetaFilter,
                                                      ContentIncludeMode contentIncludeMode, IContextData contextData, IContextData globalContextData) =>
 new QueryBuilder().WithQueryResource("ComponentPresentations", true)
 .WithNamespace(ns)
 .WithPublicationId(publicationId)
 .WithInputComponentPresentationFilter(filter)
 .WithInputSortParam(sort)
 .WithPagination(pagination)
 .WithCustomMetaFilter(customMetaFilter)
 .WithContentIncludeMode(contentIncludeMode)
 .WithContextData(contextData)
 .WithContextData(globalContextData)
 .WithConvertor(new ItemConvertor())
 .Build();