Exemple #1
0
        protected virtual IDictionary <string, string> GenerateJsonCompatibleKeyValues(SearchIndexRequest request)
        {
            var kvs = new Dictionary <string, string>();

            if (!string.IsNullOrWhiteSpace(request.Expression))
            {
                kvs.Add(KeyNames.Expression, request.Expression);
            }

            if (request.HasSortings())
            {
                kvs.Add(KeyNames.Sort, DocumentSerializer.ToJsonArray(request.Sort.ToArray()));
            }

            if (!string.IsNullOrWhiteSpace(request.Bookmark))
            {
                kvs.Add(KeyNames.Bookmark, request.Bookmark);
            }

            if (request.Stale.HasValue)
            {
                kvs.Add(KeyNames.Stale, request.Stale.Value.AsString());
            }

            if (request.Limit.HasValue)
            {
                kvs.Add(KeyNames.Limit, DocumentSerializer.ToJson(request.Limit.Value));
            }

            if (request.IncludeDocs.HasValue)
            {
                kvs.Add(KeyNames.IncludeDocs, DocumentSerializer.ToJson(request.IncludeDocs.Value));
            }

            if (request.Ranges != null)
            {
                kvs.Add(KeyNames.Ranges, Serializer.Serialize(request.Ranges));
            }

            if (request.HasCounts())
            {
                kvs.Add(KeyNames.Counts, DocumentSerializer.ToJsonArray(request.Counts.ToArray()));
            }

            if (!string.IsNullOrWhiteSpace(request.GroupField))
            {
                kvs.Add(KeyNames.GroupField, request.GroupField);
            }

            if (request.GroupLimit.HasValue)
            {
                kvs.Add(KeyNames.GroupLimit, DocumentSerializer.ToJson(request.GroupLimit.Value));
            }

            if (request.HasGroupSortings())
            {
                kvs.Add(KeyNames.GroupSort, DocumentSerializer.ToJsonArray(request.GroupSort.ToArray()));
            }

            if (request.DrillDown.HasValue)
            {
                kvs.Add(KeyNames.DrillDown, DocumentSerializer.ToJsonArray(new [] { request.DrillDown.Value.Key, request.DrillDown.Value.Value }));
            }

            return(kvs);
        }