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

@ -14,8 +14,7 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>.
using Catalogger.Backend.Cache.InMemoryCache;
using Catalogger.Backend.Database;
using Catalogger.Backend.Database.Queries;
using Catalogger.Backend.Database.Dapper.Repositories;
using Catalogger.Backend.Extensions;
using Catalogger.Backend.Services;
using Remora.Discord.API.Abstractions.Gateway.Events;
@ -27,7 +26,7 @@ using Remora.Results;
namespace Catalogger.Backend.Bot.Responders.Channels;
public class ChannelCreateResponder(
DatabaseContext db,
GuildRepository guildRepository,
RoleCache roleCache,
ChannelCache channelCache,
UserCache userCache,
@ -96,7 +95,7 @@ public class ChannelCreateResponder(
}
}
var guildConfig = await db.GetGuildAsync(ch.GuildID.Value, false, ct);
var guildConfig = await guildRepository.GetAsync(ch.GuildID);
webhookExecutor.QueueLog(
guildConfig,
LogChannelType.ChannelCreate,

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.Channels;
public class ChannelDeleteResponder(
ILogger logger,
DatabaseContext db,
GuildRepository guildRepository,
ChannelCache channelCache,
WebhookExecutorService webhookExecutor
) : IResponder<IChannelDelete>
@ -49,7 +50,7 @@ public class ChannelDeleteResponder(
return Result.Success;
}
var guildConfig = await db.GetGuildAsync(evt.GuildID.Value, false, ct);
var guildConfig = await guildRepository.GetAsync(evt.GuildID.Value);
var embed = new EmbedBuilder()
.WithTitle("Channel deleted")
.WithColour(DiscordUtils.Red)

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;
@ -30,7 +31,7 @@ namespace Catalogger.Backend.Bot.Responders.Channels;
public class ChannelUpdateResponder(
ILogger logger,
DatabaseContext db,
GuildRepository guildRepository,
ChannelCache channelCache,
RoleCache roleCache,
UserCache userCache,
@ -49,7 +50,7 @@ public class ChannelUpdateResponder(
return Result.Success;
}
var guildConfig = await db.GetGuildAsync(evt.GuildID.Value, false, ct);
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
var builder = new EmbedBuilder()
.WithTitle(

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,

View file

@ -15,6 +15,7 @@
using Catalogger.Backend.Cache;
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.Invites;
public class InviteCreateResponder(
ILogger logger,
DatabaseContext db,
GuildRepository guildRepository,
IInviteCache inviteCache,
IDiscordRestGuildAPI guildApi,
WebhookExecutorService webhookExecutor
@ -74,7 +75,7 @@ public class InviteCreateResponder(
inline: true
);
var guildConfig = await db.GetGuildAsync(guildId, false, ct);
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
webhookExecutor.QueueLog(
guildConfig,
LogChannelType.InviteCreate,

View file

@ -15,6 +15,8 @@
using Catalogger.Backend.Cache;
using Catalogger.Backend.Database;
using Catalogger.Backend.Database.Dapper;
using Catalogger.Backend.Database.Dapper.Repositories;
using Catalogger.Backend.Database.Queries;
using Catalogger.Backend.Extensions;
using Catalogger.Backend.Services;
@ -29,6 +31,7 @@ namespace Catalogger.Backend.Bot.Responders.Invites;
public class InviteDeleteResponder(
ILogger logger,
GuildRepository guildRepository,
DatabaseContext db,
IInviteCache inviteCache,
WebhookExecutorService webhookExecutor,
@ -89,7 +92,7 @@ public class InviteDeleteResponder(
inline: true
);
var guildConfig = await db.GetGuildAsync(guildId, false, ct);
var guildConfig = await guildRepository.GetAsync(guildId);
webhookExecutor.QueueLog(
guildConfig,
LogChannelType.InviteDelete,

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.Database.Queries;
using Catalogger.Backend.Extensions;
using Catalogger.Backend.Services;
@ -35,6 +36,7 @@ namespace Catalogger.Backend.Bot.Responders.Members;
public class GuildMemberAddResponder(
ILogger logger,
DatabaseContext db,
GuildRepository guildRepository,
IMemberCache memberCache,
IInviteCache inviteCache,
UserCache userCache,
@ -62,7 +64,7 @@ public class GuildMemberAddResponder(
.WithCurrentTimestamp()
.WithFooter($"ID: {user.ID}");
var guildConfig = await db.GetGuildAsync(member.GuildID, false, ct);
var guildConfig = await guildRepository.GetAsync(member.GuildID);
var guildRes = await guildApi.GetGuildAsync(member.GuildID, withCounts: true, ct);
if (guildRes.IsSuccess && guildRes.Entity.ApproximateMemberCount.IsDefined())
builder.Description +=

View file

@ -15,8 +15,7 @@
using Catalogger.Backend.Cache;
using Catalogger.Backend.Cache.InMemoryCache;
using Catalogger.Backend.Database;
using Catalogger.Backend.Database.Queries;
using Catalogger.Backend.Database.Dapper.Repositories;
using Catalogger.Backend.Extensions;
using Catalogger.Backend.Services;
using Remora.Discord.API.Abstractions.Gateway.Events;
@ -28,7 +27,7 @@ namespace Catalogger.Backend.Bot.Responders.Members;
public class GuildMemberRemoveResponder(
ILogger logger,
DatabaseContext db,
GuildRepository guildRepository,
IMemberCache memberCache,
RoleCache roleCache,
UserCache userCache,
@ -50,7 +49,7 @@ public class GuildMemberRemoveResponder(
.WithFooter($"ID: {evt.User.ID}")
.WithCurrentTimestamp();
var guildConfig = await db.GetGuildAsync(evt.GuildID, false, ct);
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
var member = await memberCache.TryGetAsync(evt.GuildID, evt.User.ID);
if (member == null)

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.Database.Queries;
using Catalogger.Backend.Extensions;
using Catalogger.Backend.Services;
@ -30,7 +31,7 @@ namespace Catalogger.Backend.Bot.Responders.Members;
public class GuildMemberUpdateResponder(
ILogger logger,
DatabaseContext db,
GuildRepository guildRepository,
UserCache userCache,
RoleCache roleCache,
IMemberCache memberCache,
@ -145,7 +146,7 @@ public class GuildMemberUpdateResponder(
.GetOrThrow();
}
var guildConfig = await db.GetGuildAsync(newMember.GuildID, false, ct);
var guildConfig = await guildRepository.GetAsync(newMember.GuildID);
webhookExecutor.QueueLog(guildConfig, LogChannelType.GuildMemberAvatarUpdate, embed);
return Result.Success;
}
@ -204,7 +205,7 @@ public class GuildMemberUpdateResponder(
);
}
var guildConfig = await db.GetGuildAsync(newMember.GuildID, false, ct);
var guildConfig = await guildRepository.GetAsync(newMember.GuildID);
webhookExecutor.QueueLog(
guildConfig,
LogChannelType.GuildMemberNickUpdate,
@ -253,7 +254,7 @@ public class GuildMemberUpdateResponder(
embed.AddField("Reason", "*(unknown)*");
}
var guildConfig = await db.GetGuildAsync(member.GuildID, false, ct);
var guildConfig = await guildRepository.GetAsync(member.GuildID);
webhookExecutor.QueueLog(
guildConfig,
LogChannelType.GuildMemberTimeout,
@ -268,7 +269,7 @@ public class GuildMemberUpdateResponder(
CancellationToken ct = default
)
{
var guildConfig = await db.GetGuildAsync(member.GuildID, false, ct);
var guildConfig = await guildRepository.GetAsync(member.GuildID);
var guildRoles = roleCache.GuildRoles(member.GuildID).ToList();
var keyRoleUpdate = new EmbedBuilder()

View file

@ -15,9 +15,7 @@
using System.Text.RegularExpressions;
using Catalogger.Backend.Cache.InMemoryCache;
using Catalogger.Backend.Database;
using Catalogger.Backend.Database.Models;
using Catalogger.Backend.Database.Queries;
using Catalogger.Backend.Database.Dapper.Repositories;
using Catalogger.Backend.Extensions;
using Catalogger.Backend.Services;
using Humanizer;
@ -30,8 +28,8 @@ namespace Catalogger.Backend.Bot.Responders.Messages;
public class MessageCreateResponder(
ILogger logger,
Config config,
DatabaseContext db,
MessageRepository messageRepository,
GuildRepository guildRepository,
DapperMessageRepository messageRepository,
UserCache userCache,
PkMessageHandler pkMessageHandler
) : IResponder<IMessageCreate>
@ -52,13 +50,12 @@ public class MessageCreateResponder(
return Result.Success;
}
var guild = await db.GetGuildAsync(msg.GuildID, false, ct);
var guild = await guildRepository.GetAsync(msg.GuildID);
// The guild needs to have enabled at least one of the message logging events,
// and the channel must not be ignored, to store the message.
if (guild.IsMessageIgnored(msg.ChannelID, msg.Author.ID))
{
db.IgnoredMessages.Add(new IgnoredMessage(msg.ID.ToUlong()));
await db.SaveChangesAsync(ct);
await messageRepository.IgnoreMessageAsync(msg.ID.Value);
return Result.Success;
}
@ -68,8 +65,7 @@ public class MessageCreateResponder(
_ = pkMessageHandler.HandleProxiedMessageAsync(msg.ID.Value);
else if (msg.ApplicationID.HasValue && msg.ApplicationID.Is(config.Discord.ApplicationId))
{
db.IgnoredMessages.Add(new IgnoredMessage(msg.ID.Value));
await db.SaveChangesAsync(ct);
await messageRepository.IgnoreMessageAsync(msg.ID.Value);
return Result.Success;
}
@ -149,19 +145,19 @@ public partial class PkMessageHandler(ILogger logger, IServiceProvider services)
}
await using var scope = services.CreateAsyncScope();
await using var db = scope.ServiceProvider.GetRequiredService<DatabaseContext>();
var messageRepository = scope.ServiceProvider.GetRequiredService<MessageRepository>();
await using var messageRepository =
scope.ServiceProvider.GetRequiredService<DapperMessageRepository>();
await messageRepository.SetProxiedMessageDataAsync(
msgId,
originalId,
authorId,
systemId: match.Groups[1].Value,
memberId: match.Groups[2].Value
await Task.WhenAll(
messageRepository.SetProxiedMessageDataAsync(
msgId,
originalId,
authorId,
systemId: match.Groups[1].Value,
memberId: match.Groups[2].Value
),
messageRepository.IgnoreMessageAsync(originalId)
);
db.IgnoredMessages.Add(new IgnoredMessage(originalId));
await db.SaveChangesAsync();
}
public async Task HandleProxiedMessageAsync(ulong msgId)
@ -169,8 +165,8 @@ public partial class PkMessageHandler(ILogger logger, IServiceProvider services)
await Task.Delay(3.Seconds());
await using var scope = services.CreateAsyncScope();
await using var db = scope.ServiceProvider.GetRequiredService<DatabaseContext>();
var messageRepository = scope.ServiceProvider.GetRequiredService<MessageRepository>();
await using var messageRepository =
scope.ServiceProvider.GetRequiredService<DapperMessageRepository>();
var pluralkitApi = scope.ServiceProvider.GetRequiredService<PluralkitApiService>();
var (isStored, hasProxyInfo) = await messageRepository.HasProxyInfoAsync(msgId);
@ -193,15 +189,15 @@ public partial class PkMessageHandler(ILogger logger, IServiceProvider services)
return;
}
await messageRepository.SetProxiedMessageDataAsync(
msgId,
pkMessage.Original,
pkMessage.Sender,
pkMessage.System?.Id,
pkMessage.Member?.Id
await Task.WhenAll(
messageRepository.SetProxiedMessageDataAsync(
msgId,
pkMessage.Original,
pkMessage.Sender,
pkMessage.System?.Id,
pkMessage.Member?.Id
),
messageRepository.IgnoreMessageAsync(pkMessage.Original)
);
db.IgnoredMessages.Add(new IgnoredMessage(pkMessage.Original));
await db.SaveChangesAsync();
}
}

View file

@ -15,8 +15,7 @@
using System.Text;
using Catalogger.Backend.Cache.InMemoryCache;
using Catalogger.Backend.Database;
using Catalogger.Backend.Database.Queries;
using Catalogger.Backend.Database.Dapper.Repositories;
using Catalogger.Backend.Extensions;
using Catalogger.Backend.Services;
using NodaTime.Extensions;
@ -32,8 +31,8 @@ namespace Catalogger.Backend.Bot.Responders.Messages;
public class MessageDeleteBulkResponder(
ILogger logger,
DatabaseContext db,
MessageRepository messageRepository,
GuildRepository guildRepository,
DapperMessageRepository messageRepository,
WebhookExecutorService webhookExecutor,
ChannelCache channelCache
) : IResponder<IMessageDeleteBulk>
@ -42,7 +41,7 @@ public class MessageDeleteBulkResponder(
public async Task<Result> RespondAsync(IMessageDeleteBulk evt, CancellationToken ct = default)
{
var guild = await db.GetGuildAsync(evt.GuildID, false, ct);
var guild = await guildRepository.GetAsync(evt.GuildID);
if (guild.IsMessageIgnored(evt.ChannelID, null))
return Result.Success;
@ -77,7 +76,7 @@ public class MessageDeleteBulkResponder(
foreach (var msgId in evt.IDs.Order())
{
if (await messageRepository.IsMessageIgnoredAsync(msgId.Value, ct))
if (await messageRepository.IsMessageIgnoredAsync(msgId.Value))
{
ignoredMessages++;
continue;
@ -129,7 +128,7 @@ public class MessageDeleteBulkResponder(
return Result.Success;
}
private string RenderMessage(Snowflake messageId, MessageRepository.Message? message)
private string RenderMessage(Snowflake messageId, DapperMessageRepository.Message? message)
{
var timestamp = messageId.Timestamp.ToOffsetDateTime().ToString();

View file

@ -14,8 +14,7 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>.
using Catalogger.Backend.Cache.InMemoryCache;
using Catalogger.Backend.Database;
using Catalogger.Backend.Database.Queries;
using Catalogger.Backend.Database.Dapper.Repositories;
using Catalogger.Backend.Extensions;
using Catalogger.Backend.Services;
using Humanizer;
@ -33,8 +32,8 @@ namespace Catalogger.Backend.Bot.Responders.Messages;
public class MessageDeleteResponder(
ILogger logger,
DatabaseContext db,
MessageRepository messageRepository,
GuildRepository guildRepository,
DapperMessageRepository messageRepository,
WebhookExecutorService webhookExecutor,
ChannelCache channelCache,
UserCache userCache,
@ -61,10 +60,10 @@ public class MessageDeleteResponder(
await Task.Delay(5.Seconds(), ct);
}
if (await messageRepository.IsMessageIgnoredAsync(evt.ID.Value, ct))
if (await messageRepository.IsMessageIgnoredAsync(evt.ID.Value))
return Result.Success;
var guild = await db.GetGuildAsync(evt.GuildID, false, ct);
var guild = await guildRepository.GetAsync(evt.GuildID);
if (guild.IsMessageIgnored(evt.ChannelID, evt.ID))
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;
@ -34,7 +35,7 @@ public class MessageUpdateResponder(
DatabaseContext db,
ChannelCache channelCache,
UserCache userCache,
MessageRepository messageRepository,
DapperMessageRepository messageRepository,
WebhookExecutorService webhookExecutor,
PluralkitApiService pluralkitApi
) : IResponder<IMessageUpdate>
@ -58,7 +59,7 @@ public class MessageUpdateResponder(
var guildConfig = await db.GetGuildAsync(msg.GuildID.Value, false, ct);
if (await messageRepository.IsMessageIgnoredAsync(msg.ID.Value, ct))
if (await messageRepository.IsMessageIgnoredAsync(msg.ID.Value))
{
_logger.Debug("Message {MessageId} should be ignored", msg.ID);
return Result.Success;
@ -176,7 +177,7 @@ public class MessageUpdateResponder(
)
{
if (
!await messageRepository.UpdateMessageAsync(msg, ct)
!await messageRepository.SaveMessageAsync(msg, ct)
&& msg.ApplicationID.Is(DiscordUtils.PkUserId)
)
{

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.Roles;
public class RoleCreateResponder(
ILogger logger,
DatabaseContext db,
GuildRepository guildRepository,
RoleCache roleCache,
WebhookExecutorService webhookExecutor
) : IResponder<IGuildRoleCreate>
@ -39,7 +40,7 @@ public class RoleCreateResponder(
_logger.Debug("Received new role {RoleId} in guild {GuildId}", evt.Role.ID, evt.GuildID);
roleCache.Set(evt.Role, evt.GuildID);
var guildConfig = await db.GetGuildAsync(evt.GuildID, false, ct);
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
var embed = new EmbedBuilder()
.WithTitle("Role created")

View file

@ -14,8 +14,7 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>.
using Catalogger.Backend.Cache.InMemoryCache;
using Catalogger.Backend.Database;
using Catalogger.Backend.Database.Queries;
using Catalogger.Backend.Database.Dapper.Repositories;
using Catalogger.Backend.Extensions;
using Catalogger.Backend.Services;
using Remora.Discord.API.Abstractions.Gateway.Events;
@ -27,7 +26,7 @@ namespace Catalogger.Backend.Bot.Responders.Roles;
public class RoleDeleteResponder(
ILogger logger,
DatabaseContext db,
GuildRepository guildRepository,
RoleCache roleCache,
WebhookExecutorService webhookExecutor
) : IResponder<IGuildRoleDelete>
@ -47,7 +46,7 @@ public class RoleDeleteResponder(
return Result.Success;
}
var guildConfig = await db.GetGuildAsync(evt.GuildID, false, ct);
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
var embed = new EmbedBuilder()
.WithTitle($"Role \"{role.Name}\" deleted")

View file

@ -14,8 +14,7 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>.
using Catalogger.Backend.Cache.InMemoryCache;
using Catalogger.Backend.Database;
using Catalogger.Backend.Database.Queries;
using Catalogger.Backend.Database.Dapper.Repositories;
using Catalogger.Backend.Extensions;
using Catalogger.Backend.Services;
using Humanizer;
@ -29,7 +28,7 @@ namespace Catalogger.Backend.Bot.Responders.Roles;
public class RoleUpdateResponder(
ILogger logger,
DatabaseContext db,
GuildRepository guildRepository,
RoleCache roleCache,
WebhookExecutorService webhookExecutor
) : IResponder<IGuildRoleUpdate>
@ -95,7 +94,7 @@ public class RoleUpdateResponder(
if (embed.Fields.Count == 0)
return Result.Success;
var guildConfig = await db.GetGuildAsync(evt.GuildID, false, ct);
var guildConfig = await guildRepository.GetAsync(evt.GuildID);
webhookExecutor.QueueLog(
guildConfig,
LogChannelType.GuildRoleUpdate,