/// <summary>
        /// Searching for exact matching item
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <ThinHashes> SearchAsync(HashInput input)
        {
            int itemsCount = 1;
            IDocumentQuery <DocumentDBHash> query;

            if (input.Kind == KindEnum.MD5)
            {
                query = _client.CreateDocumentQuery <DocumentDBHash>(
                    UriFactory.CreateDocumentCollectionUri(_databaseId, _collectionId),
                    new FeedOptions {
                    MaxItemCount = itemsCount                                      /*, EnableCrossPartitionQuery = true*/
                })
                        .Where(d => d.HashMD5 == input.Search)
                        .AsDocumentQuery();
            }
            else
            {
                query = _client.CreateDocumentQuery <DocumentDBHash>(
                    UriFactory.CreateDocumentCollectionUri(_databaseId, _collectionId),
                    new FeedOptions {
                    MaxItemCount = itemsCount                                      /*, EnableCrossPartitionQuery = true*/
                })
                        .Where(d => d.HashSHA256 == input.Search)
                        .AsDocumentQuery();
            }

            List <DocumentDBHash> results = new List <DocumentDBHash>(20);

            while (query.HasMoreResults)
            {
                results.AddRange(await query.ExecuteNextAsync <DocumentDBHash>());
            }

            return(results.DefaultIfEmpty(new ThinHashes {
                Key = _NOTHING_FOUND_TEXT
            })
                   .FirstOrDefault());
        }
Exemple #2
0
        public async Task <ActionResult> Search(HashInput hi, bool ajax)
        {
            if (!ModelState.IsValid)
            {
                if (ajax)
                {
                    return(Json("error"));
                }
                else
                {
                    ViewBag.Info = await _repo.CurrentHashesInfo;

                    return(View(nameof(Index), null));
                }
            }

            var logger_tsk = Task.Run(() =>
            {
                _logger.LogInformation(0, $"{nameof(hi.Search)} = {hi.Search}, {nameof(hi.Kind)} = {hi.Kind.ToString()}");
            });

            hi.Search = hi.Search.Trim().ToLower();

            var found = await _repo.SearchAsync(hi);

            if (ajax)
            {
                return(Json(new Hashes(found, hi)));
            }
            else
            {
                ViewBag.Info = await _repo.CurrentHashesInfo;

                return(View(nameof(Index), new Hashes(found, hi)));
            }
        }