Commit 22837272 authored by gdlcf88's avatar gdlcf88

Seed initial data for cache items of ABP official modules. close #5

parent 13903476
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Guids;
namespace EasyAbp.CacheManagement.CacheItems
{
public class CacheItemDataSeeder : ICacheItemDataSeeder, ITransientDependency
{
private readonly IGuidGenerator _guidGenerator;
private readonly ICacheItemRepository _repository;
public CacheItemDataSeeder(
IGuidGenerator guidGenerator,
ICacheItemRepository repository)
{
_guidGenerator = guidGenerator;
_repository = repository;
}
public virtual async Task SeedAsync()
{
await TryCreateAbpCacheItemsAsync();
}
protected virtual async Task TryCreateAbpCacheItemsAsync()
{
if (await _repository.GetCountAsync() == 0)
{
await CreateAbpCacheItemsAsync();
}
}
protected virtual async Task CreateAbpCacheItemsAsync()
{
await _repository.InsertAsync(new CacheItem(
id: _guidGenerator.Create(),
cacheName: "Volo.Abp.IdentityServer.AllowedCorsOrigins",
displayName: "AllowedCorsOrigins",
description: "Volo.Abp.IdentityServer.AllowedCorsOrigins",
ignoreMultiTenancy: false,
tenantAllowed: false
));
await _repository.InsertAsync(new CacheItem(
id: _guidGenerator.Create(),
cacheName: "Volo.Abp.SettingManagement.Setting",
displayName: "Setting",
description: "Volo.Abp.SettingManagement.Setting",
ignoreMultiTenancy: true,
tenantAllowed: false
));
await _repository.InsertAsync(new CacheItem(
id: _guidGenerator.Create(),
cacheName: "Volo.Abp.AspNetCore.Mvc.UI.Bundling.Bundle",
displayName: "Bundle",
description: "Volo.Abp.AspNetCore.Mvc.UI.Bundling.Bundle",
ignoreMultiTenancy: false,
tenantAllowed: false
));
await _repository.InsertAsync(new CacheItem(
id: _guidGenerator.Create(),
cacheName: "Volo.Abp.FeatureManagement.FeatureValue",
displayName: "FeatureValue",
description: "Volo.Abp.FeatureManagement.FeatureValue",
ignoreMultiTenancy: true,
tenantAllowed: false
));
await _repository.InsertAsync(new CacheItem(
id: _guidGenerator.Create(),
cacheName: "Volo.Abp.PermissionManagement.PermissionGrant",
displayName: "PermissionGrant",
description: "Volo.Abp.PermissionManagement.PermissionGrant",
ignoreMultiTenancy: false,
tenantAllowed: false
));
}
}
}
\ No newline at end of file
using Volo.Abp;
namespace EasyAbp.CacheManagement.CacheItems
{
public class CacheItemTypeNotFoundException : BusinessException
{
public CacheItemTypeNotFoundException(string typeName) : base(message: $"Cache item type not found: {typeName}")
{
}
}
}
\ No newline at end of file
using System.Threading.Tasks;
namespace EasyAbp.CacheManagement.CacheItems
{
public interface ICacheItemDataSeeder
{
Task SeedAsync();
}
}
\ No newline at end of file
using System.Threading.Tasks;
using EasyAbp.CacheManagement.CacheItems;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection;
namespace EasyAbp.CacheManagement
{
public class CacheManagementDataSeedContributor : IDataSeedContributor, ITransientDependency
{
private readonly ICacheItemDataSeeder _cacheItemDataSeeder;
public CacheManagementDataSeedContributor(
ICacheItemDataSeeder cacheItemDataSeeder)
{
_cacheItemDataSeeder = cacheItemDataSeeder;
}
public virtual async Task SeedAsync(DataSeedContext context)
{
await _cacheItemDataSeeder.SeedAsync();
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment