Browse Source

Merge pull request #23622 from abpframework/GetPermissionNameFormCacheKeyOrNull

Optimize `permission/setting` lookup in `PermissionStore` and `SettingManagementStore`
pull/23631/head
Engincan VESKE 1 year ago
committed by GitHub
parent
commit
baa312e255
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 9
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionStore.cs
  2. 5
      modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingManagementStore.cs

9
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionStore.cs

@ -1,4 +1,5 @@
using System.Collections.Generic; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@ -175,13 +176,15 @@ public class PermissionStore : IPermissionStore, ITransientDependency
{ {
using (PermissionGrantRepository.DisableTracking()) using (PermissionGrantRepository.DisableTracking())
{ {
var permissionNames = new HashSet<string>(notCacheKeys.Select(GetPermissionNameFormCacheKeyOrNull));
var permissions = (await PermissionDefinitionManager.GetPermissionsAsync()) var permissions = (await PermissionDefinitionManager.GetPermissionsAsync())
.Where(x => notCacheKeys.Any(k => GetPermissionNameFormCacheKeyOrNull(k) == x.Name)).ToList(); .Where(x => permissionNames.Contains(x.Name))
.ToList();
Logger.LogDebug($"Getting not cache granted permissions from the repository for this provider name,key: {providerName},{providerKey}"); Logger.LogDebug($"Getting not cache granted permissions from the repository for this provider name,key: {providerName},{providerKey}");
var grantedPermissionsHashSet = new HashSet<string>( var grantedPermissionsHashSet = new HashSet<string>(
(await PermissionGrantRepository.GetListAsync(notCacheKeys.Select(GetPermissionNameFormCacheKeyOrNull).ToArray(), providerName, providerKey)).Select(p => p.Name) (await PermissionGrantRepository.GetListAsync(permissionNames.ToArray(), providerName, providerKey)).Select(p => p.Name)
); );
Logger.LogDebug($"Setting the cache items. Count: {permissions.Count}"); Logger.LogDebug($"Setting the cache items. Count: {permissions.Count}");

5
modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingManagementStore.cs

@ -176,9 +176,10 @@ public class SettingManagementStore : ISettingManagementStore, ITransientDepende
string providerKey, string providerKey,
List<string> notCacheKeys) List<string> notCacheKeys)
{ {
var settingDefinitions = (await SettingDefinitionManager.GetAllAsync()).Where(x => notCacheKeys.Any(k => GetSettingNameFormCacheKeyOrNull(k) == x.Name)); var settingNames = new HashSet<string>(notCacheKeys.Select(GetSettingNameFormCacheKeyOrNull));
var settingDefinitions = (await SettingDefinitionManager.GetAllAsync()).Where(x => settingNames.Contains(x.Name));
var settingsDictionary = (await SettingRepository.GetListAsync(notCacheKeys.Select(GetSettingNameFormCacheKeyOrNull).ToArray(), providerName, providerKey)) var settingsDictionary = (await SettingRepository.GetListAsync(settingNames.ToArray(), providerName, providerKey))
.ToDictionary(s => s.Name, s => s.Value); .ToDictionary(s => s.Name, s => s.Value);
var cacheItems = new List<KeyValuePair<string, SettingCacheItem>>(); var cacheItems = new List<KeyValuePair<string, SettingCacheItem>>();

Loading…
Cancel
Save