Add autoproxy management commands

This commit is contained in:
Ske
2020-01-23 21:20:22 +01:00
parent ca37c7e6ca
commit 57bc576de6
6 changed files with 155 additions and 8 deletions

View File

@@ -6,8 +6,10 @@
alter table system_guild add column autoproxy_mode int check (autoproxy_mode in (1, 2, 3, 4)) not null default 1;
-- for member mode
alter table system_guild add column autoproxy_member nullable references members (id) on delete set null;
alter table system_guild add column autoproxy_member int references members (id) on delete set null;
-- for latch mode
-- not *really* nullable, null just means old (pre-schema-change) data.
alter table messages add column guild bigint nullable default null;
alter table messages add column guild bigint default null;
update info set schema_version = 3;

View File

@@ -10,7 +10,7 @@ using Serilog;
namespace PluralKit {
public class SchemaService
{
private const int TargetSchemaVersion = 2;
private const int TargetSchemaVersion = 3;
private DbConnectionFactory _conn;
private ILogger _logger;

View File

@@ -77,9 +77,9 @@ namespace PluralKit {
public class SystemGuildSettings
{
public bool ProxyEnabled { get; set; } = true;
public AutoproxyMode AutoproxyMode { get; set; }
public int AutoproxyMember { get; set; }
public AutoproxyMode AutoproxyMode { get; set; } = AutoproxyMode.Off;
public int? AutoproxyMember { get; set; }
}
public class MemberGuildSettings
@@ -446,11 +446,13 @@ namespace PluralKit {
public async Task SetSystemGuildSettings(PKSystem system, ulong guild, SystemGuildSettings settings)
{
using (var conn = await _conn.Obtain())
await conn.ExecuteAsync("insert into system_guild (system, guild, proxy_enabled) values (@System, @Guild, @ProxyEnabled) on conflict (system, guild) do update set proxy_enabled = @ProxyEnabled", new
await conn.ExecuteAsync("insert into system_guild (system, guild, proxy_enabled, autoproxy_mode, autoproxy_member) values (@System, @Guild, @ProxyEnabled, @AutoproxyMode, @AutoproxyMember) on conflict (system, guild) do update set proxy_enabled = @ProxyEnabled, autoproxy_mode = @AutoproxyMode, autoproxy_member = @AutoproxyMember", new
{
System = system.Id,
Guild = guild,
ProxyEnabled = settings.ProxyEnabled
settings.ProxyEnabled,
settings.AutoproxyMode,
settings.AutoproxyMember
});
}