Database should be faster, disabled unit converter temporarily
This commit is contained in:
		@@ -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)));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
//                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)));
 | 
			
		||||
//            }
 | 
			
		||||
//        }
 | 
			
		||||
//    }
 | 
			
		||||
//}
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user