private List <ConfigurationSetting> GetModuleSettingsAndStoreInCacheIfPossible(int moduleId) { _logger.LogDebug("{0} {1} Загружаем настройки кэширования для конкретного модуля", "GetModuleSettingsAndStoreInCacheIfPossible", moduleId); var moduleLifeTimeInMinutes = _appSettings.DefaultCacheLifeTimeInMinutes; var module = _db.Modules.FirstOrDefault(t => t.Id == moduleId); if (module?.ModuleCacheLifeTimeInMinutes != null) { if (module.ModuleCacheLifeTimeInMinutes == 0) { return(_db.Settings.Where(t => t.ModuleId == moduleId).ToList()); } else { moduleLifeTimeInMinutes = module.ModuleCacheLifeTimeInMinutes.Value; } } var settingsFromDb = _settingsCache.GetAndStore(moduleId, () => { var settings = _db.Settings.Where(t => t.ModuleId == moduleId); var cacheableSettings = new CacheableList <ConfigurationSetting>(settings, moduleLifeTimeInMinutes); return(cacheableSettings); }); _logger.LogDebug("{0} {1} Возвращаем найденный в БД результат.", "GetModuleSettingsAndStoreInCacheIfPossible", moduleId); return(settingsFromDb); }
private CacheableList <ConfigurationSetting> GetOrStoreGlobalSettings() { var moduleId = 0; if (_settingsCache.TryGetCacheValue(moduleId, out var cachedSettings)) { _logger.LogDebug("{0} {1} Данные найдены в кэше. Проверяем политики кэширования.", "GetOrStoreGlobalSettings", moduleId); if (!cachedSettings.Any(t => t.IsExpired(cachedSettings.CacheEntryLifeTimeInMinutes))) { _logger.LogDebug("{0} {1} Возвращаем данные из кэша", "GetOrStoreGlobalSettings", moduleId); return(cachedSettings); } } var settingsFromDb = _settingsCache.GetAndStore(moduleId, () => { var settings = _db.Settings.Where(t => t.ModuleId == null); var cacheableSettings = new CacheableList <ConfigurationSetting>(settings, _appSettings.DefaultCacheLifeTimeInMinutes); return(cacheableSettings); }); _logger.LogDebug("{0} {1} Возвращаем найденный в БД результат.", "GetOrStoreGlobalSettings", moduleId); return(settingsFromDb); }