feat: exorcise entity framework core from most responders
This commit is contained in:
parent
33b78a7ac5
commit
5891f28f7c
32 changed files with 743 additions and 145 deletions
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue