refactor: 组服务增加缓存
This commit is contained in:
parent
a987e8eda3
commit
063390e255
|
@ -5,12 +5,11 @@
|
||||||
using BootstrapAdmin.Caching;
|
using BootstrapAdmin.Caching;
|
||||||
using BootstrapAdmin.DataAccess.Models;
|
using BootstrapAdmin.DataAccess.Models;
|
||||||
using BootstrapAdmin.Web.Core;
|
using BootstrapAdmin.Web.Core;
|
||||||
using Microsoft.Extensions.Primitives;
|
|
||||||
using PetaPoco;
|
using PetaPoco;
|
||||||
|
|
||||||
namespace BootstrapAdmin.DataAccess.PetaPoco.Services;
|
namespace BootstrapAdmin.DataAccess.PetaPoco.Services;
|
||||||
|
|
||||||
class GroupService : IGroup, IDisposable
|
class GroupService : IGroup
|
||||||
{
|
{
|
||||||
private const string GroupServiceGetAllCacheKey = "GroupService-GetAll";
|
private const string GroupServiceGetAllCacheKey = "GroupService-GetAll";
|
||||||
|
|
||||||
|
@ -18,10 +17,6 @@ class GroupService : IGroup, IDisposable
|
||||||
|
|
||||||
private const string GroupServiceGetGroupsByRoleIdCacheKey = "GroupService-GetGroupsByRoleId";
|
private const string GroupServiceGetGroupsByRoleIdCacheKey = "GroupService-GetGroupsByRoleId";
|
||||||
|
|
||||||
private CancellationTokenSource? GetGroupsByUserIdCancellationTokenSource { get; set; }
|
|
||||||
|
|
||||||
private CancellationTokenSource? GetGroupsByRoleIdCancellationTokenSource { get; set; }
|
|
||||||
|
|
||||||
private IDatabase Database { get; }
|
private IDatabase Database { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -41,13 +36,7 @@ class GroupService : IGroup, IDisposable
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userId"></param>
|
/// <param name="userId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public List<string> GetGroupsByUserId(string? userId) => CacheManager.GetOrAdd($"{GroupServiceGetGroupsByUserIdCacheKey}-{userId}", entry =>
|
public List<string> GetGroupsByUserId(string? userId) => CacheManager.GetOrAdd($"{GroupServiceGetGroupsByUserIdCacheKey}-{userId}", entry => Database.Fetch<string>("select GroupID from UserGroup where UserID = @0", userId));
|
||||||
{
|
|
||||||
GetGroupsByUserIdCancellationTokenSource = new CancellationTokenSource(TimeSpan.FromMinutes(10));
|
|
||||||
var token = new CancellationChangeToken(GetGroupsByUserIdCancellationTokenSource.Token);
|
|
||||||
entry.ExpirationTokens.Add(token);
|
|
||||||
return Database.Fetch<string>("select GroupID from UserGroup where UserID = @0", userId);
|
|
||||||
});
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
|
@ -71,10 +60,9 @@ class GroupService : IGroup, IDisposable
|
||||||
Database.AbortTransaction();
|
Database.AbortTransaction();
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret)
|
if (ret)
|
||||||
{
|
{
|
||||||
GetGroupsByUserIdCancellationTokenSource?.Cancel();
|
CacheManager.Clear();
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -84,13 +72,7 @@ class GroupService : IGroup, IDisposable
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="roleId"></param>
|
/// <param name="roleId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public List<string> GetGroupsByRoleId(string? roleId) => CacheManager.GetOrAdd($"{GroupServiceGetGroupsByRoleIdCacheKey}-{roleId}", entry =>
|
public List<string> GetGroupsByRoleId(string? roleId) => CacheManager.GetOrAdd($"{GroupServiceGetGroupsByRoleIdCacheKey}-{roleId}", entry => Database.Fetch<string>("select GroupID from RoleGroup where RoleID = @0", roleId));
|
||||||
{
|
|
||||||
GetGroupsByRoleIdCancellationTokenSource = new CancellationTokenSource(TimeSpan.FromMinutes(10));
|
|
||||||
var token = new CancellationChangeToken(GetGroupsByRoleIdCancellationTokenSource.Token);
|
|
||||||
entry.ExpirationTokens.Add(token);
|
|
||||||
return Database.Fetch<string>("select GroupID from RoleGroup where RoleID = @0", roleId);
|
|
||||||
});
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
|
@ -117,30 +99,8 @@ class GroupService : IGroup, IDisposable
|
||||||
|
|
||||||
if (ret)
|
if (ret)
|
||||||
{
|
{
|
||||||
// reset cache
|
CacheManager.Clear();
|
||||||
GetGroupsByRoleIdCancellationTokenSource?.Cancel();
|
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing)
|
|
||||||
{
|
|
||||||
GetGroupsByRoleIdCancellationTokenSource?.Cancel();
|
|
||||||
GetGroupsByRoleIdCancellationTokenSource?.Dispose();
|
|
||||||
|
|
||||||
GetGroupsByUserIdCancellationTokenSource?.Cancel();
|
|
||||||
GetGroupsByUserIdCancellationTokenSource?.Dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
Dispose(true);
|
|
||||||
GC.SuppressFinalize(this);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue