Add server-specific member avatars
This commit is contained in:
@@ -83,15 +83,8 @@ namespace PluralKit.Core {
|
||||
public int Member { get; set; }
|
||||
public ulong Guild { get; set; }
|
||||
public string DisplayName { get; set; }
|
||||
public string AvatarUrl { get; set; }
|
||||
}
|
||||
|
||||
public class AuxillaryProxyInformation
|
||||
{
|
||||
public GuildConfig Guild { get; set; }
|
||||
public SystemGuildSettings SystemGuild { get; set; }
|
||||
public MemberGuildSettings MemberGuild { get; set; }
|
||||
}
|
||||
|
||||
public interface IDataStore
|
||||
{
|
||||
/// <summary>
|
||||
@@ -416,7 +409,5 @@ namespace PluralKit.Core {
|
||||
/// Saves the given guild configuration struct to the data store.
|
||||
/// </summary>
|
||||
Task SaveGuildConfig(GuildConfig cfg);
|
||||
|
||||
Task<AuxillaryProxyInformation> GetAuxillaryProxyInformation(ulong guild, PKSystem system, PKMember member);
|
||||
}
|
||||
}
|
@@ -249,15 +249,15 @@ namespace PluralKit.Core {
|
||||
using var conn = await _conn.Obtain();
|
||||
return await conn.QuerySingleOrDefaultAsync<MemberGuildSettings>(
|
||||
"select * from member_guild where member = @Member and guild = @Guild", new { Member = member.Id, Guild = guild})
|
||||
?? new MemberGuildSettings();
|
||||
?? new MemberGuildSettings { Guild = guild, Member = member.Id };
|
||||
}
|
||||
|
||||
public async Task SetMemberGuildSettings(PKMember member, ulong guild, MemberGuildSettings settings)
|
||||
{
|
||||
using var conn = await _conn.Obtain();
|
||||
await conn.ExecuteAsync(
|
||||
"insert into member_guild (member, guild, display_name) values (@Member, @Guild, @DisplayName) on conflict (member, guild) do update set display_name = @Displayname",
|
||||
new {Member = member.Id, Guild = guild, DisplayName = settings.DisplayName});
|
||||
"insert into member_guild (member, guild, display_name, avatar_url) values (@Member, @Guild, @DisplayName, @AvatarUrl) on conflict (member, guild) do update set display_name = @DisplayName, avatar_url = @AvatarUrl",
|
||||
settings);
|
||||
await _cache.InvalidateSystem(member.System);
|
||||
}
|
||||
|
||||
@@ -397,23 +397,6 @@ namespace PluralKit.Core {
|
||||
_cache.InvalidateGuild(cfg.Id);
|
||||
}
|
||||
|
||||
public async Task<AuxillaryProxyInformation> GetAuxillaryProxyInformation(ulong guild, PKSystem system, PKMember member)
|
||||
{
|
||||
using var conn = await _conn.Obtain();
|
||||
var args = new {Guild = guild, System = system.Id, Member = member.Id};
|
||||
|
||||
var multi = await conn.QueryMultipleAsync(@"
|
||||
select servers.* from servers where id = @Guild;
|
||||
select * from system_guild where guild = @Guild and system = @System;
|
||||
select * from member_guild where guild = @Guild and member = @Member", args);
|
||||
return new AuxillaryProxyInformation
|
||||
{
|
||||
Guild = (await multi.ReadSingleOrDefaultAsync<DatabaseCompatibleGuildConfig>()).Into(),
|
||||
SystemGuild = await multi.ReadSingleOrDefaultAsync<SystemGuildSettings>() ?? new SystemGuildSettings(),
|
||||
MemberGuild = await multi.ReadSingleOrDefaultAsync<MemberGuildSettings>() ?? new MemberGuildSettings()
|
||||
};
|
||||
}
|
||||
|
||||
public async Task<PKMember> GetFirstFronter(PKSystem system)
|
||||
{
|
||||
// TODO: move to extension method since it doesn't rely on internals
|
||||
|
@@ -11,7 +11,7 @@ using Serilog;
|
||||
namespace PluralKit.Core {
|
||||
public class SchemaService
|
||||
{
|
||||
private const int TargetSchemaVersion = 3;
|
||||
private const int TargetSchemaVersion = 4;
|
||||
|
||||
private DbConnectionFactory _conn;
|
||||
private ILogger _logger;
|
||||
|
Reference in New Issue
Block a user