diff --git a/SIVA/Core/Bot/Internal/DataMigrate/Program.cs b/SIVA/Core/Bot/Internal/DataMigrate/Program.cs new file mode 100644 index 00000000..551bed6e --- /dev/null +++ b/SIVA/Core/Bot/Internal/DataMigrate/Program.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.IO; +using Newtonsoft.Json; +using SIVA.Core.JsonFiles; + +namespace SIVA.Core.Bot.Internal.DataMigrate +{ + public class Program + { + private static ConsoleColor _color; + internal static void MigratorMain(string[] args) + { + //data/UAccounts.json + _color = Console.ForegroundColor; + Console.WriteLine("SIVA Data Migration Utility"); + Console.WriteLine(); + Console.Write("Starting engine..."); + Database.SetupStorage(); + WriteOk(); + Console.Write("Loading Guild Configs..."); + var guildConfigs = JsonConvert.DeserializeObject>(File.ReadAllText("data/GuildConfigs.json")); + WriteOk(); + int guildCount = 0; + foreach (var guild in guildConfigs) + { + Console.Write("Migrating "+guild.ServerId+"..."); + Database.I.Guilds.Add(guild); + WriteOk(); + guildCount++; + } + Console.Write("Loading User Accounts..."); + var userAccounts = JsonConvert.DeserializeObject>(File.ReadAllText("data/UAccounts.json")); + WriteOk(); + int userCount = 0; + foreach (var user in userAccounts) + { + Console.Write("Migrating "+user.Id+"..."); + Database.I.Users.Add(user); + WriteOk(); + userCount++; + } + Console.WriteLine(); + Console.WriteLine(); + Console.WriteLine(); + Console.WriteLine(); + Console.WriteLine(); + Console.WriteLine("Migration Report"); + Console.WriteLine("================"); + Console.WriteLine("Successfully migrated "+userCount+" users..."); + Console.WriteLine("Successfully migrated "+guildCount+" guilds..."); + Console.WriteLine(); + Console.WriteLine("Press any key to continue..."); + Console.Read(); + } + + static void WriteOk() + { + Console.ForegroundColor = ConsoleColor.Green; + Console.WriteLine("OK"); + } + } +} \ No newline at end of file diff --git a/SIVA/Core/Bot/Internal/Program.cs b/SIVA/Core/Bot/Internal/Program.cs index 141e5821..752de282 100644 --- a/SIVA/Core/Bot/Internal/Program.cs +++ b/SIVA/Core/Bot/Internal/Program.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using System.Threading.Tasks; using Discord; using Discord.Commands; @@ -11,8 +12,13 @@ internal class Program public static DiscordSocketClient _client; public static EventHandler _handler; - private static void Main() + private static void Main(string[] args) { + if (args.FirstOrDefault()?.ToLower() == "--migrate") + { + DataMigrate.Program.MigratorMain(args); + return; + } Console.Title = "SIVA"; Console.CursorVisible = false; Console.ForegroundColor = ConsoleColor.Green; diff --git a/SIVA/Core/Bot/ScarszDebug.cs b/SIVA/Core/Bot/ScarszDebug.cs index e42f9623..74053563 100644 --- a/SIVA/Core/Bot/ScarszDebug.cs +++ b/SIVA/Core/Bot/ScarszDebug.cs @@ -74,6 +74,7 @@ await Helpers.SendMessage(Context, private static string CreateConfigString(Guild config) { + // TODO: Please oh god please rewrite this var customCommands = ""; var blacklistedWords = ""; var selfRoles = ""; diff --git a/SIVA/Core/JsonFiles/Database.cs b/SIVA/Core/JsonFiles/Database.cs new file mode 100644 index 00000000..6d3432c9 --- /dev/null +++ b/SIVA/Core/JsonFiles/Database.cs @@ -0,0 +1,21 @@ +using Ultz.BeagleFramework; +using Ultz.BeagleFramework.Common; +using Ultz.BeagleFramework.Common.Models; +using Ultz.BeagleFramework.SQLite; + +namespace SIVA.Core.JsonFiles +{ + public class Database : DataStore + { + public static DataContext Context { get; private set; } + public static Database I => Context.Store; + + public static void SetupStorage() + { + Context = Beagle.CreateContext(new SqliteEngine("Filename=./data/siva.db")); + + } + public Table Guilds { get; set; } + public Table Users { get; set; } + } +} \ No newline at end of file diff --git a/SIVA/Core/JsonFiles/GuildConfig.cs b/SIVA/Core/JsonFiles/GuildConfig.cs index 82d1eeef..c25c2ff9 100644 --- a/SIVA/Core/JsonFiles/GuildConfig.cs +++ b/SIVA/Core/JsonFiles/GuildConfig.cs @@ -5,10 +5,11 @@ using Discord; using Discord.Commands; using Newtonsoft.Json; +using Ultz.BeagleFramework.Common.Models; namespace SIVA.Core.JsonFiles { - public class Guild + public class Guild : DataModel { #region JSONValueDeclaration diff --git a/SIVA/Core/JsonFiles/TruthOrDare.cs b/SIVA/Core/JsonFiles/TruthOrDare.cs index 24fae2ee..192e54dd 100644 --- a/SIVA/Core/JsonFiles/TruthOrDare.cs +++ b/SIVA/Core/JsonFiles/TruthOrDare.cs @@ -5,6 +5,7 @@ using Discord; using Discord.Commands; using Newtonsoft.Json; +using Ultz.BeagleFramework.Common.Models; namespace SIVA.Core.JsonFiles { diff --git a/SIVA/Core/JsonFiles/UserAccounts.cs b/SIVA/Core/JsonFiles/UserAccounts.cs index af9c9b5d..1b32a761 100644 --- a/SIVA/Core/JsonFiles/UserAccounts.cs +++ b/SIVA/Core/JsonFiles/UserAccounts.cs @@ -6,6 +6,7 @@ using Discord.Commands; using Discord.WebSocket; using Newtonsoft.Json; +using Ultz.BeagleFramework.Common.Models; namespace SIVA.Core.JsonFiles { @@ -30,7 +31,7 @@ public static bool SaveExists(string filePath) } } - public class UserAccount + public class UserAccount : DataModel { /*public UserAccount() { diff --git a/SIVA/SIVA.csproj b/SIVA/SIVA.csproj index b3088cf0..a4717336 100644 --- a/SIVA/SIVA.csproj +++ b/SIVA/SIVA.csproj @@ -27,6 +27,7 @@ +