Split Transactions from the GeekbotCommandBase

This commit is contained in:
Daan Boerlage 2021-09-17 14:27:46 +02:00
parent d708525a2f
commit 833a8a0dd8
Signed by: daan
GPG key ID: FCE070E1E4956606
2 changed files with 46 additions and 34 deletions

View file

@ -1,22 +1,17 @@
using System.Collections.Generic;
using System.Globalization;
using System.Threading;
using System.Threading.Tasks;
using Discord;
using Discord.Commands;
using Geekbot.Core.Database.Models;
using Geekbot.Core.ErrorHandling;
using Geekbot.Core.GuildSettingsManager;
using Sentry;
namespace Geekbot.Core
{
public class GeekbotCommandBase : ModuleBase<ICommandContext>
public class GeekbotCommandBase : TransactionModuleBase
{
protected readonly IGuildSettingsManager GuildSettingsManager;
protected GuildSettingsModel GuildSettings;
protected readonly IErrorHandler ErrorHandler;
protected ITransaction Transaction;
protected GeekbotCommandBase(IErrorHandler errorHandler, IGuildSettingsManager guildSettingsManager)
{
@ -28,20 +23,6 @@ namespace Geekbot.Core
{
base.BeforeExecute(command);
// Transaction Setup
Transaction = SentrySdk.StartTransaction(new Transaction(command.Name, "Exec"));
Transaction.SetTags(new []
{
new KeyValuePair<string, string>("GuildId", Context.Guild.Id.ToString()),
new KeyValuePair<string, string>("Guild", Context.Guild.Name),
});
Transaction.User = new User()
{
Id = Context.User.Id.ToString(),
Username = Context.User.Username,
};
// Command Setup
var setupSpan = Transaction.StartChild("Setup");
GuildSettings = GuildSettingsManager.GetSettings(Context?.Guild?.Id ?? 0);
@ -50,19 +31,5 @@ namespace Geekbot.Core
setupSpan.Finish();
}
protected override void AfterExecute(CommandInfo command)
{
base.AfterExecute(command);
Transaction.Finish();
}
protected override Task<IUserMessage> ReplyAsync(string message = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null)
{
var replySpan = Transaction.StartChild("Reply");
var msg = base.ReplyAsync(message, isTTS, embed, options, allowedMentions, messageReference);
replySpan.Finish();
return msg;
}
}
}

View file

@ -0,0 +1,45 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Discord;
using Discord.Commands;
using Sentry;
namespace Geekbot.Core
{
public class TransactionModuleBase : ModuleBase<ICommandContext>
{
protected ITransaction Transaction;
protected override void BeforeExecute(CommandInfo command)
{
base.BeforeExecute(command);
// Transaction Setup
Transaction = SentrySdk.StartTransaction(new Transaction(command.Name, "Exec"));
Transaction.SetTags(new []
{
new KeyValuePair<string, string>("GuildId", Context.Guild.Id.ToString()),
new KeyValuePair<string, string>("Guild", Context.Guild.Name),
});
Transaction.User = new User()
{
Id = Context.User.Id.ToString(),
Username = Context.User.Username,
};
}
protected override void AfterExecute(CommandInfo command)
{
base.AfterExecute(command);
Transaction.Finish();
}
protected override Task<IUserMessage> ReplyAsync(string message = null, bool isTTS = false, Embed embed = null, RequestOptions options = null, AllowedMentions allowedMentions = null, MessageReference messageReference = null)
{
var replySpan = Transaction.StartChild("Reply");
var msg = base.ReplyAsync(message, isTTS, embed, options, allowedMentions, messageReference);
replySpan.Finish();
return msg;
}
}
}