示例#1
0
        public Result <IndexRequest[], HttpStatusCode> GetAllElementsQueue()
        {
            var countResponse = _client.GetCount(_options.RequestsIndexName);

            if (!countResponse.IsValid)
            {
                return(ElasticSearchResponseConverter.ToResultOnFail <IndexRequest[]>(countResponse));
            }

            var responseFromElastic = _client.Search(search => search
                                                     .Index(_options.RequestsIndexName)
                                                     .Size((int)countResponse.Count)
                                                     .Sort(s => s.Descending(x => x.CreatedTime))
                                                     );

            if (!responseFromElastic.IsValid)
            {
                return(ElasticSearchResponseConverter.ToResultOnFail <IndexRequest[]>(responseFromElastic));
            }

            var results = responseFromElastic.Documents
                          .Select(x => x.ToModel())
                          .ToArray();

            return(Result <IndexRequest[], HttpStatusCode> .Success(results));
        }
示例#2
0
        private Result <bool, HttpStatusCode> CheckQueue(Uri url)
        {
            var responseFromElastic = _client.Search(search => search
                                                     .Index(_options.RequestsIndexName)
                                                     .Query(desc =>
                                                            desc.Term(t => t
                                                                      .Field(x => x.Url)
                                                                      .Value(url)
                                                                      )
                                                            &&
                                                            (
                                                                desc.Term(t => t
                                                                          .Field(x => x.Status)
                                                                          .Value(IndexRequestStatus.Pending)
                                                                          )
                                                                ||
                                                                desc.Term(t => t
                                                                          .Field(x => x.Status)
                                                                          .Value(IndexRequestStatus.InProgress)
                                                                          )
                                                            )
                                                            )
                                                     );

            if (!responseFromElastic.IsValid)
            {
                return(ElasticSearchResponseConverter.ToResultOnFail <bool>(responseFromElastic));
            }

            return(Result <bool, HttpStatusCode> .Success(!responseFromElastic.Documents.Any()));
        }