Rework caching

This does a *lot* of things. Essentially, it replaces the existing
individual proxy- and autoproxy caches on the bot end with a
global cache (in Core) that handles all the caching at once, and
automatically invalidates the cache once something changes in the
datastore.

This allows us to do proxying and autoproxying with *zero database
queries* (best-case).
This commit is contained in:
Ske
2020-02-01 14:40:57 +01:00
parent 125ea81ec3
commit 82dfe43d5a
16 changed files with 254 additions and 255 deletions

View File

@@ -10,12 +10,10 @@ namespace PluralKit.Bot.Commands
public class MemberAvatar
{
private IDataStore _data;
private ProxyCacheService _proxyCache;
public MemberAvatar(IDataStore data, ProxyCacheService proxyCache)
public MemberAvatar(IDataStore data)
{
_data = data;
_proxyCache = proxyCache;
}
public async Task Avatar(Context ctx, PKMember target)
@@ -80,8 +78,6 @@ namespace PluralKit.Bot.Commands
await ctx.Reply($"{Emojis.Success} Member avatar changed to attached image. Please note that if you delete the message containing the attachment, the avatar will stop working.");
}
// No-arguments no-attachment case covered by conditional at the very top
await _proxyCache.InvalidateResultsForSystem(ctx.System);
}
}
}