public async Task <BudgetViewModel> Handle(GetBudgetQuery request, CancellationToken cancellationToken) { if (_memoryCache.TryGetValue(CacheKeys.CacheKeyForBudgetId(request.BudgetId), out BudgetViewModel cacheEntry)) { return(cacheEntry); } var filter = Builders <BudgetViewModel> .Filter.Eq(m => m.BudgetId, request.BudgetId); var budgetViewModel = await _budgetNoSqlContext .Budgets .Find(filter) .FirstOrDefaultAsync(cancellationToken); if (budgetViewModel == null) { return(null); } _memoryCache.Set( CacheKeys.CacheKeyForBudgetId(budgetViewModel.BudgetId), budgetViewModel, new MemoryCacheEntryOptions { SlidingExpiration = TimeSpan.FromMinutes(1) }); return(budgetViewModel); }
private void UpdateMemoryCache(BudgetViewModel budgetViewModel) { _memoryCache.Set( CacheKeys.CacheKeyForBudgetId(budgetViewModel.BudgetId), budgetViewModel, new MemoryCacheEntryOptions { SlidingExpiration = TimeSpan.FromMinutes(1) }); }