fix for .leaveunkeptservers

This commit is contained in:
Toastie (DCS Team) 2024-08-27 21:31:39 +12:00
parent ec403bbe5d
commit 7f935a72c1
Signed by: toastie_t0ast
GPG key ID: 27F3B6855AFD40A4

View file

@ -59,14 +59,19 @@ public sealed class CleanupService : ICleanupService, IReadyExecutor, IEService
var allGuildIds = _client.Guilds.Select(x => x.Id); var allGuildIds = _client.Guilds.Select(x => x.Id);
var table = await GetKeptGuildsTable(); HashSet<ulong> dontDelete;
await using (var db = _db.GetDbContext())
{
await using var ctx = db.CreateLinqToDBConnection();
var table = ctx.CreateTable<KeptGuilds>(tableOptions: TableOptions.CheckExistence);
var dontDeleteList = await table var dontDeleteList = await table
.Where(x => allGuildIds.Contains(x.GuildId)) .Where(x => allGuildIds.Contains(x.GuildId))
.Select(x => x.GuildId) .Select(x => x.GuildId)
.ToListAsyncLinqToDB(); .ToListAsyncLinqToDB();
var dontDelete = dontDeleteList.ToHashSet(); dontDelete = dontDeleteList.ToHashSet();
}
guildIds = new(); guildIds = new();
foreach (var guildId in allGuildIds) foreach (var guildId in allGuildIds)
@ -209,8 +214,9 @@ public sealed class CleanupService : ICleanupService, IReadyExecutor, IEService
public async Task<bool> KeepGuild(ulong guildId) public async Task<bool> KeepGuild(ulong guildId)
{ {
var table = await GetKeptGuildsTable(); await using var db = _db.GetDbContext();
await using var ctx = db.CreateLinqToDbContext();
var table = ctx.CreateTable<KeptGuilds>(tableOptions: TableOptions.CheckExistence);
if (await table.AnyAsyncLinqToDB(x => x.GuildId == guildId)) if (await table.AnyAsyncLinqToDB(x => x.GuildId == guildId))
return false; return false;
@ -223,17 +229,11 @@ public sealed class CleanupService : ICleanupService, IReadyExecutor, IEService
} }
public async Task<int> GetKeptGuildCount() public async Task<int> GetKeptGuildCount()
{
var table = await GetKeptGuildsTable();
return await table.CountAsync();
}
private async Task<ITable<KeptGuilds>> GetKeptGuildsTable()
{ {
await using var db = _db.GetDbContext(); await using var db = _db.GetDbContext();
await using var ctx = db.CreateLinqToDBContext(); await using var ctx = db.CreateLinqToDBContext();
var table = ctx.CreateTable<KeptGuilds>(tableOptions: TableOptions.CheckExistence); var table = ctx.CreateTable<KeptGuilds>(tableOptions: TableOptions.CheckExistence);
return table; return await table.CountAsync();
} }
public async Task LeaveUnkeptServers() public async Task LeaveUnkeptServers()