public IActionResult Get(string keyword)
        {
            IEnumerable <QueryResult> resultsList;
            string cacheKey = "results" + keyword.Trim().ToLower();

            resultsList = memoryCache.Get <IEnumerable <QueryResult> >(cacheKey);

            if (resultsList == null)                                  //not in cache
            {
                resultsList = _resultsRepository.GetResults(keyword); //get results from DB
                if (resultsList == null || resultsList.Count() == 0)  //also not in DB
                {
                    resultsList = Top10Search.RunTasks(keyword, _resultsRepository).Result;
                    memoryCache.Set(cacheKey, resultsList);//SAVE RESULT IN CACHE
                    return(new OkObjectResult(resultsList));
                }
                else//in DB:
                {
                    memoryCache.Set(cacheKey, resultsList.ToList <QueryResult>());//SAVE RESULT IN CACHE
                    return(new OkObjectResult(resultsList));
                }
            }

            return(new OkObjectResult(resultsList));
        }
Example #2
0
        public async Task <IActionResult> Index(string org)
        {
            List <Result> results = await _resultsRepository.GetResults(org);

            ResultViewModel viewModel = new ResultViewModel()
            {
                Org     = org,
                Results = results
            };

            return(View(viewModel));
        }
        public async Task <IActionResult> GetResults()
        {
            var results = await _repo.GetResults();

            return(Ok(results));
        }