From bed3001ce1b15cbbdc8c83dc61c8102e6d9050ea Mon Sep 17 00:00:00 2001 From: Master Kwoth Date: Thu, 22 Jun 2017 22:16:58 +0200 Subject: [PATCH] Database should be faster, disabled unit converter temporarily --- .../Utility/Commands/UnitConversion.cs | 180 +++++++++--------- src/NadekoBot/NadekoBot.cs | 4 +- src/NadekoBot/Services/DbService.cs | 11 ++ src/NadekoBot/Services/Impl/BotCredentials.cs | 2 +- 4 files changed, 104 insertions(+), 93 deletions(-) diff --git a/src/NadekoBot/Modules/Utility/Commands/UnitConversion.cs b/src/NadekoBot/Modules/Utility/Commands/UnitConversion.cs index 9b9c121c..603093c4 100644 --- a/src/NadekoBot/Modules/Utility/Commands/UnitConversion.cs +++ b/src/NadekoBot/Modules/Utility/Commands/UnitConversion.cs @@ -1,94 +1,94 @@ -using Discord; -using Discord.Commands; -using NadekoBot.Attributes; -using NadekoBot.Extensions; -using NadekoBot.Services.Utility; -using System; -using System.Linq; -using System.Threading.Tasks; +//using Discord; +//using Discord.Commands; +//using NadekoBot.Attributes; +//using NadekoBot.Extensions; +//using NadekoBot.Services.Utility; +//using System; +//using System.Linq; +//using System.Threading.Tasks; -namespace NadekoBot.Modules.Utility -{ - public partial class Utility - { - [Group] - public class UnitConverterCommands : NadekoSubmodule - { - private readonly ConverterService _service; +//namespace NadekoBot.Modules.Utility +//{ +// public partial class Utility +// { +// [Group] +// public class UnitConverterCommands : NadekoSubmodule +// { +// private readonly ConverterService _service; - public UnitConverterCommands(ConverterService service) - { - _service = service; - } +// public UnitConverterCommands(ConverterService service) +// { +// _service = service; +// } - [NadekoCommand, Usage, Description, Aliases] - public async Task ConvertList() - { - var res = _service.Units.GroupBy(x => x.UnitType) - .Aggregate(new EmbedBuilder().WithTitle(GetText("convertlist")) - .WithColor(NadekoBot.OkColor), - (embed, g) => embed.AddField(efb => - efb.WithName(g.Key.ToTitleCase()) - .WithValue(String.Join(", ", g.Select(x => x.Triggers.FirstOrDefault()) - .OrderBy(x => x))))); - await Context.Channel.EmbedAsync(res); - } - [NadekoCommand, Usage, Description, Aliases] - public async Task Convert(string origin, string target, decimal value) - { - var originUnit = _service.Units.Find(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(origin.ToLowerInvariant())); - var targetUnit = _service.Units.Find(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(target.ToLowerInvariant())); - if (originUnit == null || targetUnit == null) - { - await ReplyErrorLocalized("convert_not_found", Format.Bold(origin), Format.Bold(target)).ConfigureAwait(false); - return; - } - if (originUnit.UnitType != targetUnit.UnitType) - { - await ReplyErrorLocalized("convert_type_error", Format.Bold(originUnit.Triggers.First()), Format.Bold(targetUnit.Triggers.First())).ConfigureAwait(false); - return; - } - decimal res; - if (originUnit.Triggers == targetUnit.Triggers) res = value; - else if (originUnit.UnitType == "temperature") - { - //don't really care too much about efficiency, so just convert to Kelvin, then to target - switch (originUnit.Triggers.First().ToUpperInvariant()) - { - case "C": - res = value + 273.15m; //celcius! - break; - case "F": - res = (value + 459.67m) * (5m / 9m); - break; - default: - res = value; - break; - } - //from Kelvin to target - switch (targetUnit.Triggers.First().ToUpperInvariant()) - { - case "C": - res = res - 273.15m; //celcius! - break; - case "F": - res = res * (9m / 5m) - 459.67m; - break; - } - } - else - { - if (originUnit.UnitType == "currency") - { - res = (value * targetUnit.Modifier) / originUnit.Modifier; - } - else - res = (value * originUnit.Modifier) / targetUnit.Modifier; - } - res = Math.Round(res, 4); +// [NadekoCommand, Usage, Description, Aliases] +// public async Task ConvertList() +// { +// var res = _service.Units.GroupBy(x => x.UnitType) +// .Aggregate(new EmbedBuilder().WithTitle(GetText("convertlist")) +// .WithColor(NadekoBot.OkColor), +// (embed, g) => embed.AddField(efb => +// efb.WithName(g.Key.ToTitleCase()) +// .WithValue(String.Join(", ", g.Select(x => x.Triggers.FirstOrDefault()) +// .OrderBy(x => x))))); +// await Context.Channel.EmbedAsync(res); +// } +// [NadekoCommand, Usage, Description, Aliases] +// public async Task Convert(string origin, string target, decimal value) +// { +// var originUnit = _service.Units.Find(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(origin.ToLowerInvariant())); +// var targetUnit = _service.Units.Find(x => x.Triggers.Select(y => y.ToLowerInvariant()).Contains(target.ToLowerInvariant())); +// if (originUnit == null || targetUnit == null) +// { +// await ReplyErrorLocalized("convert_not_found", Format.Bold(origin), Format.Bold(target)).ConfigureAwait(false); +// return; +// } +// if (originUnit.UnitType != targetUnit.UnitType) +// { +// await ReplyErrorLocalized("convert_type_error", Format.Bold(originUnit.Triggers.First()), Format.Bold(targetUnit.Triggers.First())).ConfigureAwait(false); +// return; +// } +// decimal res; +// if (originUnit.Triggers == targetUnit.Triggers) res = value; +// else if (originUnit.UnitType == "temperature") +// { +// //don't really care too much about efficiency, so just convert to Kelvin, then to target +// switch (originUnit.Triggers.First().ToUpperInvariant()) +// { +// case "C": +// res = value + 273.15m; //celcius! +// break; +// case "F": +// res = (value + 459.67m) * (5m / 9m); +// break; +// default: +// res = value; +// break; +// } +// //from Kelvin to target +// switch (targetUnit.Triggers.First().ToUpperInvariant()) +// { +// case "C": +// res = res - 273.15m; //celcius! +// break; +// case "F": +// res = res * (9m / 5m) - 459.67m; +// break; +// } +// } +// else +// { +// if (originUnit.UnitType == "currency") +// { +// res = (value * targetUnit.Modifier) / originUnit.Modifier; +// } +// else +// res = (value * originUnit.Modifier) / targetUnit.Modifier; +// } +// res = Math.Round(res, 4); - await Context.Channel.SendConfirmAsync(GetText("convert", value, (originUnit.Triggers.First()).SnPl(value.IsInteger() ? (int)value : 2), res, (targetUnit.Triggers.First() + "s").SnPl(res.IsInteger() ? (int)res : 2))); - } - } - } -} \ No newline at end of file +// await Context.Channel.SendConfirmAsync(GetText("convert", value, (originUnit.Triggers.First()).SnPl(value.IsInteger() ? (int)value : 2), res, (targetUnit.Triggers.First() + "s").SnPl(res.IsInteger() ? (int)res : 2))); +// } +// } +// } +//} \ No newline at end of file diff --git a/src/NadekoBot/NadekoBot.cs b/src/NadekoBot/NadekoBot.cs index e6dc2d5c..8f6e926b 100644 --- a/src/NadekoBot/NadekoBot.cs +++ b/src/NadekoBot/NadekoBot.cs @@ -159,7 +159,7 @@ namespace NadekoBot #region utility var remindService = new RemindService(Client, BotConfig, Db, startingGuildIdList); var repeaterService = new MessageRepeaterService(this, Client, AllGuildConfigs); - var converterService = new ConverterService(Db); + //var converterService = new ConverterService(Db); var commandMapService = new CommandMapService(AllGuildConfigs); var patreonRewardsService = new PatreonRewardsService(Credentials, Db, Currency); var verboseErrorsService = new VerboseErrorsService(AllGuildConfigs, Db, CommandHandler, helpService); @@ -230,7 +230,7 @@ namespace NadekoBot .Add(commandMapService) .Add(remindService) .Add(repeaterService) - .Add(converterService) + //.Add(converterService) .Add(verboseErrorsService) .Add(patreonRewardsService) .Add(pruneService) diff --git a/src/NadekoBot/Services/DbService.cs b/src/NadekoBot/Services/DbService.cs index c8fab899..6e9532ca 100644 --- a/src/NadekoBot/Services/DbService.cs +++ b/src/NadekoBot/Services/DbService.cs @@ -36,6 +36,17 @@ namespace NadekoBot.Services context.Database.Migrate(); context.EnsureSeedData(); + //set important sqlite stuffs + var conn = context.Database.GetDbConnection(); + conn.Open(); + + context.Database.ExecuteSqlCommand("PRAGMA journal_mode=WAL"); + using (var com = conn.CreateCommand()) + { + com.CommandText = "PRAGMA journal_mode=WAL; PRAGMA synchronous=OFF"; + com.ExecuteNonQuery(); + } + return context; } diff --git a/src/NadekoBot/Services/Impl/BotCredentials.cs b/src/NadekoBot/Services/Impl/BotCredentials.cs index 3517a298..b54bed23 100644 --- a/src/NadekoBot/Services/Impl/BotCredentials.cs +++ b/src/NadekoBot/Services/Impl/BotCredentials.cs @@ -89,7 +89,7 @@ namespace NadekoBot.Services.Impl ? "sqlite" : dbSection["Type"], string.IsNullOrWhiteSpace(dbSection["ConnectionString"]) - ? "Filename=./data/NadekoBot.db" + ? "Filename=./data/NadekoBot.db" : dbSection["ConnectionString"]); } catch (Exception ex)