Refactor server config models/commands
This commit is contained in:
@@ -270,52 +270,6 @@ namespace PluralKit.Core {
|
||||
return await conn.ExecuteScalarAsync<ulong>("select count(mid) from messages");
|
||||
}
|
||||
|
||||
// Same as GuildConfig, but with ISet<ulong> as long[] instead.
|
||||
public struct DatabaseCompatibleGuildConfig
|
||||
{
|
||||
public ulong Id { get; set; }
|
||||
public ulong? LogChannel { get; set; }
|
||||
public long[] LogBlacklist { get; set; }
|
||||
public long[] Blacklist { get; set; }
|
||||
|
||||
public bool LogCleanupEnabled { get; set; }
|
||||
|
||||
public GuildConfig Into() =>
|
||||
new GuildConfig
|
||||
{
|
||||
Id = Id,
|
||||
LogChannel = LogChannel,
|
||||
LogBlacklist = new HashSet<ulong>(LogBlacklist?.Select(c => (ulong) c) ?? new ulong[] {}),
|
||||
Blacklist = new HashSet<ulong>(Blacklist?.Select(c => (ulong) c) ?? new ulong[]{}),
|
||||
LogCleanupEnabled = LogCleanupEnabled
|
||||
};
|
||||
}
|
||||
|
||||
public async Task<GuildConfig> GetOrCreateGuildConfig(ulong guild)
|
||||
{
|
||||
// When changing this, also see ProxyCache::GetGuildDataCached
|
||||
using (var conn = await _conn.Obtain())
|
||||
{
|
||||
return (await conn.QuerySingleOrDefaultAsync<DatabaseCompatibleGuildConfig>(
|
||||
"insert into servers (id) values (@Id) on conflict do nothing; select * from servers where id = @Id",
|
||||
new {Id = guild})).Into();
|
||||
}
|
||||
}
|
||||
|
||||
public async Task SaveGuildConfig(GuildConfig cfg)
|
||||
{
|
||||
using (var conn = await _conn.Obtain())
|
||||
await conn.ExecuteAsync("insert into servers (id, log_channel, log_blacklist, blacklist, log_cleanup_enabled) values (@Id, @LogChannel, @LogBlacklist, @Blacklist, @LogCleanupEnabled) on conflict (id) do update set log_channel = @LogChannel, log_blacklist = @LogBlacklist, blacklist = @Blacklist, log_cleanup_enabled = @LogCleanupEnabled", new
|
||||
{
|
||||
cfg.Id,
|
||||
cfg.LogChannel,
|
||||
cfg.LogCleanupEnabled,
|
||||
LogBlacklist = cfg.LogBlacklist.Select(c => (long) c).ToList(),
|
||||
Blacklist = cfg.Blacklist.Select(c => (long) c).ToList()
|
||||
});
|
||||
_logger.Information("Updated guild configuration {@GuildCfg}", cfg);
|
||||
}
|
||||
|
||||
public async Task AddSwitch(PKSystem system, IEnumerable<PKMember> members)
|
||||
{
|
||||
// Use a transaction here since we're doing multiple executed commands in one
|
||||
|
||||
Reference in New Issue
Block a user