Browse Source
Merge pull request #4290 from abpframework/FeatureManagementHandleDuplicateFeatureValues
Fix: Feature values are not cleared entirely in database
pull/4326/head
Halil İbrahim Kalkan
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with
34 additions and
6 deletions
-
modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManagementStore.cs
-
modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs
-
modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/IFeatureValueRepository.cs
-
modules/feature-management/src/Volo.Abp.FeatureManagement.EntityFrameworkCore/Volo/Abp/FeatureManagement/EntityFrameworkCore/EfCoreFeatureValueRepository.cs
-
modules/feature-management/src/Volo.Abp.FeatureManagement.MongoDB/Volo/Abp/FeatureManagement/MongoDB/MongoFeatureValueRepository.cs
-
modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureValueRepository_Tests.cs
|
|
|
@ -44,8 +44,8 @@ namespace Volo.Abp.FeatureManagement |
|
|
|
|
|
|
|
public virtual async Task DeleteAsync(string name, string providerName, string providerKey) |
|
|
|
{ |
|
|
|
var featureValue = await FeatureValueRepository.FindAsync(name, providerName, providerKey); |
|
|
|
if (featureValue != null) |
|
|
|
var featureValues = await FeatureValueRepository.FindAllAsync(name, providerName, providerKey); |
|
|
|
foreach (var featureValue in featureValues) |
|
|
|
{ |
|
|
|
await FeatureValueRepository.DeleteAsync(featureValue); |
|
|
|
} |
|
|
|
@ -78,4 +78,4 @@ namespace Volo.Abp.FeatureManagement |
|
|
|
return FeatureValueCacheItem.CalculateCacheKey(name, providerName, providerKey); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -183,4 +183,4 @@ namespace Volo.Abp.FeatureManagement |
|
|
|
return value; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -9,6 +9,8 @@ namespace Volo.Abp.FeatureManagement |
|
|
|
{ |
|
|
|
Task<FeatureValue> FindAsync(string name, string providerName, string providerKey); |
|
|
|
|
|
|
|
Task<List<FeatureValue>> FindAllAsync(string name, string providerName, string providerKey); |
|
|
|
|
|
|
|
Task<List<FeatureValue>> GetListAsync(string providerName, string providerKey); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -23,6 +23,14 @@ namespace Volo.Abp.FeatureManagement.EntityFrameworkCore |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
public async Task<List<FeatureValue>> FindAllAsync(string name, string providerName, string providerKey) |
|
|
|
{ |
|
|
|
return await DbSet |
|
|
|
.Where( |
|
|
|
s => s.Name == name && s.ProviderName == providerName && s.ProviderKey == providerKey |
|
|
|
).ToListAsync(); |
|
|
|
} |
|
|
|
|
|
|
|
public virtual async Task<List<FeatureValue>> GetListAsync(string providerName, string providerKey) |
|
|
|
{ |
|
|
|
return await DbSet |
|
|
|
@ -31,4 +39,4 @@ namespace Volo.Abp.FeatureManagement.EntityFrameworkCore |
|
|
|
).ToListAsync(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -22,6 +22,12 @@ namespace Volo.Abp.FeatureManagement.MongoDB |
|
|
|
.FirstOrDefaultAsync(s => s.Name == name && s.ProviderName == providerName && s.ProviderKey == providerKey); |
|
|
|
} |
|
|
|
|
|
|
|
public async Task<List<FeatureValue>> FindAllAsync(string name, string providerName, string providerKey) |
|
|
|
{ |
|
|
|
return await GetMongoQueryable() |
|
|
|
.Where(s => s.Name == name && s.ProviderName == providerName && s.ProviderKey == providerKey).ToListAsync(); |
|
|
|
} |
|
|
|
|
|
|
|
public virtual async Task<List<FeatureValue>> GetListAsync(string providerName, string providerKey) |
|
|
|
{ |
|
|
|
return await GetMongoQueryable() |
|
|
|
@ -29,4 +35,4 @@ namespace Volo.Abp.FeatureManagement.MongoDB |
|
|
|
.ToListAsync(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -40,6 +40,18 @@ namespace Volo.Abp.FeatureManagement |
|
|
|
featureValue.ShouldBeNull(); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public async Task FindAAllsync() |
|
|
|
{ |
|
|
|
var featureValues = await Repository.FindAllAsync( |
|
|
|
TestFeatureDefinitionProvider.ProjectCount, |
|
|
|
EditionFeatureValueProvider.ProviderName, |
|
|
|
TestEditionIds.Enterprise.ToString() |
|
|
|
); |
|
|
|
|
|
|
|
featureValues.Count.ShouldBe(1); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public async Task GetListAsync() |
|
|
|
{ |
|
|
|
|