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
parent
commit
baa894e235
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManagementStore.cs
  2. 2
      modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs
  3. 2
      modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/IFeatureValueRepository.cs
  4. 10
      modules/feature-management/src/Volo.Abp.FeatureManagement.EntityFrameworkCore/Volo/Abp/FeatureManagement/EntityFrameworkCore/EfCoreFeatureValueRepository.cs
  5. 8
      modules/feature-management/src/Volo.Abp.FeatureManagement.MongoDB/Volo/Abp/FeatureManagement/MongoDB/MongoFeatureValueRepository.cs
  6. 12
      modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureValueRepository_Tests.cs

6
modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManagementStore.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);
}
}
}
}

2
modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs

@ -183,4 +183,4 @@ namespace Volo.Abp.FeatureManagement
return value;
}
}
}
}

2
modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/IFeatureValueRepository.cs

@ -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);
}
}

10
modules/feature-management/src/Volo.Abp.FeatureManagement.EntityFrameworkCore/Volo/Abp/FeatureManagement/EntityFrameworkCore/EfCoreFeatureValueRepository.cs

@ -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();
}
}
}
}

8
modules/feature-management/src/Volo.Abp.FeatureManagement.MongoDB/Volo/Abp/FeatureManagement/MongoDB/MongoFeatureValueRepository.cs

@ -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();
}
}
}
}

12
modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureValueRepository_Tests.cs

@ -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()
{

Loading…
Cancel
Save