/// <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()); }
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))); } }