fix: configuration optimization

This commit is contained in:
Gary Sharp
2022-12-04 12:04:00 +11:00
parent 2a2731b9f3
commit ed58619919
2 changed files with 76 additions and 70 deletions
@@ -34,11 +34,11 @@ namespace Disco.Data.Configuration
private void SetValue<T>(string Key, T Value)
{
ConfigurationCache.SetValue(Database, this.Scope, Key, Value);
ConfigurationCache.Helpers<T>.SetValue(Database, this.Scope, Key, Value);
}
private T GetValue<T>(string Key, T Default)
{
return ConfigurationCache.GetValue(Database, this.Scope, Key, Default);
return ConfigurationCache.Helpers<T>.GetValue(Database, this.Scope, Key, Default);
}
protected void Set<T>(T Value, [CallerMemberName] string Key = null)
@@ -202,7 +202,11 @@ namespace Disco.Data.Configuration
#endregion
#region Cache Getters/Setters
internal static T GetValue<T>(DiscoDataContext Database, string Scope, string Key, T Default)
internal static class Helpers<T>
{
private static readonly IEqualityComparer<T> comparer = EqualityComparer<T>.Default;
internal static T GetValue(DiscoDataContext Database, string Scope, string Key, T Default)
{
var item = CacheGetItem(Database, Scope, Key);
@@ -254,12 +258,12 @@ namespace Disco.Data.Configuration
}
}
}
internal static void SetValue<T>(DiscoDataContext Database, string Scope, string Key, T Value)
internal static void SetValue(DiscoDataContext Database, string Scope, string Key, T Value)
{
Type valueType = typeof(T);
string stringValue;
if (Value == null)
if (comparer.Equals(Value, default(T)))
{
stringValue = null;
}
@@ -285,6 +289,8 @@ namespace Disco.Data.Configuration
CacheSetItem(Database, Scope, Key, stringValue, Value);
}
}
#endregion
#region Cache Helpers