feat: exorcise entity framework core from most responders

This commit is contained in:
sam 2024-10-27 23:02:42 +01:00
parent 33b78a7ac5
commit 5891f28f7c
Signed by: sam
GPG key ID: 5F3C3C1B3166639D
32 changed files with 743 additions and 145 deletions

View file

@ -15,6 +15,7 @@
using Catalogger.Backend.Cache.InMemoryCache;
using Catalogger.Backend.Database;
using Catalogger.Backend.Database.Dapper.Repositories;
using Catalogger.Backend.Database.Queries;
using Catalogger.Backend.Extensions;
using Catalogger.Backend.Services;
@ -27,7 +28,7 @@ namespace Catalogger.Backend.Bot.Responders.Guilds;
public class GuildBanAddResponder(
ILogger logger,
DatabaseContext db,
GuildRepository guildRepository,
WebhookExecutorService webhookExecutor,
UserCache userCache,
AuditLogCache auditLogCache,
@ -38,7 +39,7 @@ public class GuildBanAddResponder(
public async Task<Result> RespondAsync(IGuildBanAdd evt, CancellationToken ct = default)
{
var guildConfig = await db.GetGuildAsync(evt.GuildID, true, ct);
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
// Delay 2 seconds for the audit log
await Task.Delay(2000, ct);
@ -76,10 +77,8 @@ public class GuildBanAddResponder(
pkSystem.Id,
evt.GuildID
);
guildConfig.BannedSystems.Add(pkSystem.Id);
guildConfig.BannedSystems.Add(pkSystem.Uuid.ToString());
db.Update(guildConfig);
await db.SaveChangesAsync(ct);
await guildRepository.BanSystemAsync(evt.GuildID, pkSystem.Id, pkSystem.Uuid);
}
embed.AddField(

View file

@ -15,6 +15,7 @@
using Catalogger.Backend.Cache.InMemoryCache;
using Catalogger.Backend.Database;
using Catalogger.Backend.Database.Dapper.Repositories;
using Catalogger.Backend.Database.Queries;
using Catalogger.Backend.Extensions;
using Catalogger.Backend.Services;
@ -27,7 +28,7 @@ namespace Catalogger.Backend.Bot.Responders.Guilds;
public class GuildBanRemoveResponder(
ILogger logger,
DatabaseContext db,
GuildRepository guildRepository,
WebhookExecutorService webhookExecutor,
UserCache userCache,
AuditLogCache auditLogCache,
@ -38,7 +39,7 @@ public class GuildBanRemoveResponder(
public async Task<Result> RespondAsync(IGuildBanRemove evt, CancellationToken ct = default)
{
var guildConfig = await db.GetGuildAsync(evt.GuildID, false, ct);
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
// Delay 2 seconds for the audit log
await Task.Delay(2000, ct);
@ -68,10 +69,7 @@ public class GuildBanRemoveResponder(
var pkSystem = await pluralkitApi.GetPluralKitSystemAsync(evt.User.ID.Value, ct);
if (pkSystem != null)
{
guildConfig.BannedSystems.Remove(pkSystem.Id);
guildConfig.BannedSystems.Remove(pkSystem.Uuid.ToString());
db.Update(guildConfig);
await db.SaveChangesAsync(ct);
await guildRepository.UnbanSystemAsync(evt.GuildID, pkSystem.Id, pkSystem.Uuid);
embed.AddField(
"PluralKit system",

View file

@ -16,6 +16,7 @@
using Catalogger.Backend.Cache;
using Catalogger.Backend.Cache.InMemoryCache;
using Catalogger.Backend.Database;
using Catalogger.Backend.Database.Dapper.Repositories;
using Catalogger.Backend.Extensions;
using Catalogger.Backend.Services;
using Remora.Discord.API.Abstractions.Gateway.Events;
@ -29,7 +30,7 @@ namespace Catalogger.Backend.Bot.Responders.Guilds;
public class GuildCreateResponder(
Config config,
ILogger logger,
DatabaseContext db,
GuildRepository guildRepository,
GuildCache guildCache,
EmojiCache emojiCache,
ChannelCache channelCache,
@ -75,13 +76,9 @@ public class GuildCreateResponder(
guildId = unavailableGuild.ID.ToUlong();
}
var tx = await db.Database.BeginTransactionAsync(ct);
if (await db.Guilds.FindAsync([guildId], ct) != null)
if (await guildRepository.IsGuildKnown(guildId))
return Result.Success;
db.Add(new Guild { Id = guildId });
await db.SaveChangesAsync(ct);
await tx.CommitAsync(ct);
await guildRepository.AddGuildAsync(guildId);
_logger.Information("Joined new guild {GuildName} / {GuildId}", guildName, guildId);

View file

@ -15,6 +15,7 @@
using Catalogger.Backend.Cache.InMemoryCache;
using Catalogger.Backend.Database;
using Catalogger.Backend.Database.Dapper.Repositories;
using Catalogger.Backend.Database.Queries;
using Catalogger.Backend.Extensions;
using Catalogger.Backend.Services;
@ -29,7 +30,7 @@ namespace Catalogger.Backend.Bot.Responders.Guilds;
public class GuildEmojisUpdateResponder(
ILogger logger,
DatabaseContext db,
GuildRepository guildRepository,
EmojiCache emojiCache,
WebhookExecutorService webhookExecutor
) : IResponder<IGuildEmojisUpdate>
@ -111,7 +112,7 @@ public class GuildEmojisUpdateResponder(
return Result.Success;
}
var guildConfig = await db.GetGuildAsync(evt.GuildID, false, ct);
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
webhookExecutor.QueueLog(guildConfig, LogChannelType.GuildEmojisUpdate, embed);
return Result.Success;
}

View file

@ -15,6 +15,7 @@
using Catalogger.Backend.Cache.InMemoryCache;
using Catalogger.Backend.Database;
using Catalogger.Backend.Database.Dapper.Repositories;
using Catalogger.Backend.Database.Queries;
using Catalogger.Backend.Extensions;
using Catalogger.Backend.Services;
@ -28,7 +29,7 @@ namespace Catalogger.Backend.Bot.Responders.Guilds;
public class GuildUpdateResponder(
ILogger logger,
DatabaseContext db,
GuildRepository guildRepository,
GuildCache guildCache,
UserCache userCache,
WebhookExecutorService webhookExecutor
@ -97,7 +98,7 @@ public class GuildUpdateResponder(
if (embed.Fields.Count != 0)
{
var guildConfig = await db.GetGuildAsync(evt.ID, false, ct);
var guildConfig = await guildRepository.GetAsync(evt.ID);
webhookExecutor.QueueLog(
guildConfig,
LogChannelType.GuildUpdate,