/// <summary> /// Конструктор. /// </summary> /// <param name="executable">Выполняемое.</param> /// <param name="coreBaseResourceErrors">Ядро. Основа. Ресурсы. Ошибки.</param> /// <param name="resourceSuccesses">Ресурсы успехов.</param> /// <param name="resourceErrors">Ресурсы ошибок.</param> /// <param name="dataBaseSettings">Настройки основы данных.</param> /// <param name="cacheSettings">Настройки кэширования.</param> /// <param name="cache">Кэш.</param> /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param> public ModDummyMainCachingJobItemUpdateService( Func <ModDummyMainBaseJobItemGetOutput, Task <ModDummyMainBaseJobItemGetOutput> > executable, CoreBaseResourceErrors coreBaseResourceErrors, ModDummyMainBaseResourceSuccesses resourceSuccesses, ModDummyMainBaseResourceErrors resourceErrors, DataBaseSettings dataBaseSettings, ICoreCachingCommonClientConfigSettings cacheSettings, ICoreCachingCache cache, CoreCachingResourceErrors coreCachingResourceErrors ) : base(executable, coreBaseResourceErrors, resourceSuccesses, resourceErrors, dataBaseSettings) { if (cacheSettings.IsCachingEnabled) { var client = new CoreCachingClientWithChangeAndRead <ModDummyMainBaseJobItemGetOutput>( "Item.Update", cacheSettings, cache, coreCachingResourceErrors ); var tags = new[] { dataBaseSettings.DummyMain.DbTableWithSchema, dataBaseSettings.DummyManyToMany.DbTableWithSchema, dataBaseSettings.DummyMainDummyManyToMany.DbTableWithSchema, dataBaseSettings.DummyOneToMany.DbTableWithSchema }; Executable = input => client.ChangeAndRead(() => executable.Invoke(input), tags); } }
/// <summary> /// Конструктор. /// </summary> /// <param name="executable">Выполняемое.</param> /// <param name="coreBaseResourceErrors">Ядро. Основа. Ресурсы. Ошибки.</param> /// <param name="resourceSuccesses">Ресурсы успехов.</param> /// <param name="resourceErrors">Ресурсы ошибок.</param> /// <param name="dataBaseSettings">Настройки основы данных.</param> /// <param name="cacheSettings">Настройки кэширования.</param> /// <param name="cache">Кэш.</param> /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param> public ModProductCachingJobItemInsertService( Func <ModProductBaseJobItemGetOutput, Task <ModProductBaseJobItemGetOutput> > executable, CoreBaseResourceErrors coreBaseResourceErrors, ModProductBaseResourceSuccesses resourceSuccesses, ModProductBaseResourceErrors resourceErrors, DataBaseSettings dataBaseSettings, ICoreCachingCommonClientConfigSettings cacheSettings, ICoreCachingCache cache, CoreCachingResourceErrors coreCachingResourceErrors ) : base(executable, coreBaseResourceErrors, resourceSuccesses, resourceErrors, dataBaseSettings) { if (cacheSettings.IsCachingEnabled) { var client = new CoreCachingClientWithChangeAndRead <ModProductBaseJobItemGetOutput>( "Item.Insert", cacheSettings, cache, coreCachingResourceErrors ); var tags = new[] { dataBaseSettings.Product.DbTableWithSchema, dataBaseSettings.ProductCategory.DbTableWithSchema, dataBaseSettings.ProductFeature.DbTableWithSchema, dataBaseSettings.ProductProductFeature.DbTableWithSchema }; Executable = input => client.ChangeAndRead(() => executable.Invoke(input), tags); } }
/// <summary> /// Ядро. Кэширование. Расширение. Вызвать. Чтение. /// При этом происходит занесение в кэш результатов чтения. /// </summary> /// <typeparam name="T">Тип данных, возвращаемых функцией чтения.</typeparam> /// <param name="func">Функция чтения.</param> /// <param name="cache">Кэш.</param> /// <param name="cacheKey">Ключ кэша.</param> /// <returns>Задача, возвращаемая функцией чтения.</returns> public static async Task <T> CoreCachingExtInvokeRead <T>( this Func <Task <T> > func, ICoreCachingCache cache, CoreCachingKey cacheKey ) where T : class { T result = null; var isCachingEnabled = cache != null && cache.IsEnabled && cacheKey != null; if (isCachingEnabled) { result = await cache.GetAsync <T>(cacheKey).CoreBaseExtTaskWithCurrentCulture(false); } if (result == null) { result = await func.Invoke().CoreBaseExtTaskWithCurrentCulture(false); if (isCachingEnabled) { if (!await cache.SetAsync(cacheKey, result).CoreBaseExtTaskWithCurrentCulture(false)) { result = null; } } } return(result); }
/// <summary> /// Конструктор. /// </summary> /// <param name="executable">Выполняемое.</param> /// <param name="coreBaseResourceErrors">Ядро. Основа. Ресурсы. Ошибки.</param> /// <param name="dataBaseSettings">Настройки основы данных.</param> /// <param name="cacheSettings">Настройки кэширования.</param> /// <param name="cache">Кэш.</param> /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param> public ModDummyMainCachingJobOptionsDummyManyToManyGetService( Func <Task <ModDummyMainBaseCommonJobOptionListGetOutput> > executable, CoreBaseResourceErrors coreBaseResourceErrors, DataBaseSettings dataBaseSettings, ICoreCachingCommonClientConfigSettings cacheSettings, ICoreCachingCache cache, CoreCachingResourceErrors coreCachingResourceErrors ) : base(executable, coreBaseResourceErrors) { if (cacheSettings.IsCachingEnabled) { var client = new CoreCachingClientWithChangeAndRead <ModDummyMainBaseCommonJobOptionListGetOutput>( "Options.DummyManyToMany.Get", cacheSettings, cache, coreCachingResourceErrors ); var tags = new[] { dataBaseSettings.DummyManyToMany.DbTableWithSchema }; Executable = () => { return(client.Read(() => executable.Invoke(), null, tags)); }; } }
/// <summary> /// Конструктор. /// </summary> /// <param name="cache">Кэш.</param> /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param> public CoreCachingClientWithChange( ICoreCachingCache cache, CoreCachingResourceErrors coreCachingResourceErrors ) { Cache = cache; CoreCachingResourceErrors = coreCachingResourceErrors; }
/// <summary> /// Конструктор. /// </summary> /// <param name="name">Имя.</param> /// <param name="cacheSettings">Настройки кэширования.</param> /// <param name="cache">Кэш.</param> /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param> public CoreCachingClientWithChangeAndRead( string name, ICoreCachingCommonClientConfigSettings cacheSettings, ICoreCachingCache cache, CoreCachingResourceErrors coreCachingResourceErrors ) { Name = cacheSettings.CacheKeyPrefix + name; ConfigSettings = cacheSettings; Cache = cache; CoreCachingResourceErrors = coreCachingResourceErrors; }
/// <summary> /// Ядро. Кэширование. Расширение. Вызвать. Изменение. /// При этом из кэша удаляются те данные, чей ключ содержит указанные тэги. /// </summary> /// <param name="func">Функция изменения.</param> /// <param name="cache">Кэш.</param> /// <param name="tags"> /// Тэги, по которым будет производиться поиск ключей удаляемых из кэша данных. /// </param> /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param> /// <returns>Задача, возвращаемая функцией изменения.</returns> public static async Task CoreCachingExtInvokeChange( this Func <Task> func, ICoreCachingCache cache, IEnumerable <string> tags, CoreCachingResourceErrors coreCachingResourceErrors ) { await func.Invoke().CoreBaseExtTaskWithCurrentCulture(false); if (cache != null && cache.IsEnabled && tags != null && tags.Any()) { if (!await cache.InvalidateAsync(tags).CoreBaseExtTaskWithCurrentCulture(false)) { throw new CoreCachingExceptionCantInvalidate(coreCachingResourceErrors); } } }
/// <summary> /// Конструктор. /// </summary> /// <param name="executable">Выполняемое.</param> /// <param name="coreBaseResourceErrors">Ядро. Основа. Ресурсы. Ошибки.</param> /// <param name="dataBaseSettings">Настройки основы данных.</param> /// <param name="cacheSettings">Настройки кэширования.</param> /// <param name="cache">Кэш.</param> /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param> public ModProductCachingJobListGetService( Func <ModProductBaseJobListGetInput, Task <ModProductBaseJobListGetOutput> > executable, CoreBaseResourceErrors coreBaseResourceErrors, DataBaseSettings dataBaseSettings, ICoreCachingCommonClientConfigSettings cacheSettings, ICoreCachingCache cache, CoreCachingResourceErrors coreCachingResourceErrors ) : base(executable, coreBaseResourceErrors) { if (cacheSettings.IsCachingEnabled) { var client = new CoreCachingClientWithChangeAndRead <ModProductBaseJobListGetOutput>( "List.Get", cacheSettings, cache, coreCachingResourceErrors ); var tags = new[] { dataBaseSettings.Product.DbTableWithSchema }; Executable = input => { var keys = new object[] { input.DataObjectProductCategoryName, input.DataObjectProductCategoryIds, input.DataObjectProductCategoryId, input.DataName, input.DataIds, input.DataPageNumber, input.DataPageSize, input.DataSortField, input.DataSortDirection }; return(client.Read(() => executable.Invoke(input), keys, tags)); }; } }
/// <summary> /// Конструктор. /// </summary> /// <param name="executable">Выполняемое.</param> /// <param name="coreBaseResourceErrors">Ядро. Основа. Ресурсы. Ошибки.</param> /// <param name="dataBaseSettings">Настройки основы данных.</param> /// <param name="cacheSettings">Настройки кэширования.</param> /// <param name="cache">Кэш.</param> /// <param name="coreCachingResourceErrors">Ресурсы ошибок ядра кэширования.</param> public ModDummyMainCachingJobItemGetService( Func <ModDummyMainBaseJobItemGetInput, Task <ModDummyMainBaseJobItemGetOutput> > executable, CoreBaseResourceErrors coreBaseResourceErrors, DataBaseSettings dataBaseSettings, ICoreCachingCommonClientConfigSettings cacheSettings, ICoreCachingCache cache, CoreCachingResourceErrors coreCachingResourceErrors ) : base(executable, coreBaseResourceErrors) { if (cacheSettings.IsCachingEnabled) { var client = new CoreCachingClientWithChangeAndRead <ModDummyMainBaseJobItemGetOutput>( "Item.Get", cacheSettings, cache, coreCachingResourceErrors ); var tags = new[] { dataBaseSettings.DummyMain.DbTableWithSchema, dataBaseSettings.DummyManyToMany.DbTableWithSchema, dataBaseSettings.DummyMainDummyManyToMany.DbTableWithSchema, dataBaseSettings.DummyOneToMany.DbTableWithSchema }; Executable = input => { var keys = new object[] { input.DataId, input.DataName }; return(client.Read(() => executable.Invoke(input), keys, tags)); }; } }
/// <summary> /// Конструктор. /// </summary> /// <param name="coreBaseResourceErrors">Ядро. Основа. Ресурсы. Ошибки.</param> /// <param name="cache">Кэш.</param> /// <param name="cacheSettings">Настройки кэша.</param> /// <param name="coreCachingResourceErrors">Ядро. Кэширование. Ресурсы. Ошибки.</param> /// <param name="dataBaseSettings">Данные. Основа. Настройки.</param> /// <param name="resourceSuccesses">Ресурсы. Успехи.</param> /// <param name="resourceErrors">Ресурсы. Ошибки.</param> /// <param name="service">Сервис.</param> public ModDummyMainCachingJobs( CoreBaseResourceErrors coreBaseResourceErrors, ICoreCachingCache cache, ICoreCachingCommonClientConfigSettings cacheSettings, CoreCachingResourceErrors coreCachingResourceErrors, DataBaseSettings dataBaseSettings, ModDummyMainBaseResourceSuccesses resourceSuccesses, ModDummyMainBaseResourceErrors resourceErrors, ModDummyMainBaseService service ) { JobItemDelete = new ModDummyMainCachingJobItemDeleteService( service.DeleteItem, coreBaseResourceErrors, resourceSuccesses, dataBaseSettings, cacheSettings, cache, coreCachingResourceErrors ); JobItemGet = new ModDummyMainCachingJobItemGetService( service.GetItem, coreBaseResourceErrors, dataBaseSettings, cacheSettings, cache, coreCachingResourceErrors ); JobItemInsert = new ModDummyMainCachingJobItemInsertService( service.SaveItem, coreBaseResourceErrors, resourceSuccesses, resourceErrors, dataBaseSettings, cacheSettings, cache, coreCachingResourceErrors ); JobItemUpdate = new ModDummyMainCachingJobItemUpdateService( service.SaveItem, coreBaseResourceErrors, resourceSuccesses, resourceErrors, dataBaseSettings, cacheSettings, cache, coreCachingResourceErrors ); JobListGet = new ModDummyMainCachingJobListGetService( service.GetList, coreBaseResourceErrors, dataBaseSettings, cacheSettings, cache, coreCachingResourceErrors ); JobOptionsDummyManyToManyGet = new ModDummyMainCachingJobOptionsDummyManyToManyGetService( service.GetOptionsDummyManyToMany, coreBaseResourceErrors, dataBaseSettings, cacheSettings, cache, coreCachingResourceErrors ); JobOptionsDummyOneToManyGet = new ModDummyMainCachingJobOptionsDummyOneToManyGetService( service.GetOptionsDummyOneToMany, coreBaseResourceErrors, dataBaseSettings, cacheSettings, cache, coreCachingResourceErrors ); }
/// <summary> /// Конструктор. /// </summary> /// <param name="coreBaseResourceErrors">Ядро. Основа. Ресурсы. Ошибки.</param> /// <param name="cache">Кэш.</param> /// <param name="cacheSettings">Настройки кэша.</param> /// <param name="coreCachingResourceErrors">Ядро. Кэширование. Ресурсы. Ошибки.</param> /// <param name="dataBaseSettings">Данные. Основа. Настройки.</param> /// <param name="resourceSuccesses">Ресурсы. Успехи.</param> /// <param name="resourceErrors">Ресурсы. Ошибки.</param> /// <param name="service">Сервис.</param> public ModProductCachingJobs( CoreBaseResourceErrors coreBaseResourceErrors, ICoreCachingCache cache, ICoreCachingCommonClientConfigSettings cacheSettings, CoreCachingResourceErrors coreCachingResourceErrors, DataBaseSettings dataBaseSettings, ModProductBaseResourceSuccesses resourceSuccesses, ModProductBaseResourceErrors resourceErrors, ModProductBaseService service ) { JobItemDelete = new ModProductCachingJobItemDeleteService( service.DeleteItem, coreBaseResourceErrors, resourceSuccesses, dataBaseSettings, cacheSettings, cache, coreCachingResourceErrors ); JobItemGet = new ModProductCachingJobItemGetService( service.GetItem, coreBaseResourceErrors, dataBaseSettings, cacheSettings, cache, coreCachingResourceErrors ); JobItemInsert = new ModProductCachingJobItemInsertService( service.SaveItem, coreBaseResourceErrors, resourceSuccesses, resourceErrors, dataBaseSettings, cacheSettings, cache, coreCachingResourceErrors ); JobItemUpdate = new ModProductCachingJobItemUpdateService( service.SaveItem, coreBaseResourceErrors, resourceSuccesses, resourceErrors, dataBaseSettings, cacheSettings, cache, coreCachingResourceErrors ); JobListGet = new ModProductCachingJobListGetService( service.GetList, coreBaseResourceErrors, dataBaseSettings, cacheSettings, cache, coreCachingResourceErrors ); JobOptionsProductFeatureGet = new ModProductCachingJobOptionsProductFeatureGetService( service.GetOptionsProductFeature, coreBaseResourceErrors, dataBaseSettings, cacheSettings, cache, coreCachingResourceErrors ); JobOptionsProductCategoryGet = new ModProductCachingJobOptionsProductCategoryGetService( service.GetOptionsProductCategory, coreBaseResourceErrors, dataBaseSettings, cacheSettings, cache, coreCachingResourceErrors ); }