diff --git a/Tranga/Migrator.cs b/Tranga/Migrator.cs index 2d81ed5..885bd5b 100644 --- a/Tranga/Migrator.cs +++ b/Tranga/Migrator.cs @@ -1,4 +1,5 @@ using System.Text.Json.Nodes; +using Logging; using Newtonsoft.Json; using Tranga.LibraryManagers; using Tranga.NotificationManagers; @@ -9,21 +10,22 @@ namespace Tranga; public static class Migrator { private static readonly ushort CurrentVersion = 17; - public static void Migrate(string settingsFilePath) + public static void Migrate(string settingsFilePath, Logger? logger) { if (!File.Exists(settingsFilePath)) return; JsonNode settingsNode = JsonNode.Parse(File.ReadAllText(settingsFilePath))!; ushort version = settingsNode["version"]!.GetValue(); + logger?.WriteLine("Migrator", $"Migrating {version} -> {CurrentVersion}"); switch (version) { case 15: - MoveToCommonObjects(settingsFilePath); + MoveToCommonObjects(settingsFilePath, logger); TrangaSettings.SettingsJsonObject sjo = JsonConvert.DeserializeObject(File.ReadAllText(settingsFilePath))!; - RemoveUpdateLibraryTask(sjo.ts!); + RemoveUpdateLibraryTask(sjo.ts!, logger); break; case 16: - MoveToCommonObjects(settingsFilePath); + MoveToCommonObjects(settingsFilePath, logger); break; } TrangaSettings.SettingsJsonObject sjo2 = JsonConvert.DeserializeObject(File.ReadAllText(settingsFilePath))!; @@ -31,27 +33,30 @@ public static class Migrator sjo2.ts!.ExportSettings(); } - private static void RemoveUpdateLibraryTask(TrangaSettings settings) + private static void RemoveUpdateLibraryTask(TrangaSettings settings, Logger? logger) { if (!File.Exists(settings.tasksFilePath)) return; + logger?.WriteLine("Migrator", "Removing old/deprecated UpdateLibraryTasks (v16)"); string tasksJsonString = File.ReadAllText(settings.tasksFilePath); HashSet tasks = JsonConvert.DeserializeObject>(tasksJsonString, new JsonSerializerSettings { Converters = { new TrangaTask.TrangaTaskJsonConverter() } })!; tasks.RemoveWhere(t => t.task == TrangaTask.Task.UpdateLibraries); File.WriteAllText(settings.tasksFilePath, JsonConvert.SerializeObject(tasks)); } - public static void MoveToCommonObjects(string settingsFilePath) + public static void MoveToCommonObjects(string settingsFilePath, Logger? logger) { if (!File.Exists(settingsFilePath)) return; + logger?.WriteLine("Migrator", "Moving Settings to commonObjects-structure (v17)"); JsonNode node = JsonNode.Parse(File.ReadAllText(settingsFilePath))!; - TrangaSettings settings = new( + TrangaSettings ts = new( node["downloadLocation"]!.GetValue(), node["workingDirectory"]!.GetValue()); JsonArray libraryManagers = node["libraryManagers"]!.AsArray(); + logger?.WriteLine("Migrator", $"\tGot {libraryManagers.Count} libraryManagers."); JsonNode? komgaNode = libraryManagers.FirstOrDefault(lm => lm["libraryType"].GetValue() == (byte)LibraryManager.LibraryType.Komga); JsonNode? kavitaNode = libraryManagers.FirstOrDefault(lm => lm["libraryType"].GetValue() == (byte)LibraryManager.LibraryType.Kavita); HashSet lms = new(); @@ -61,6 +66,7 @@ public static class Migrator lms.Add(new Kavita(kavitaNode["baseUrl"]!.GetValue(), kavitaNode["auth"]!.GetValue(), null)); JsonArray notificationManagers = node["notificationManagers"]!.AsArray(); + logger?.WriteLine("Migrator", $"\tGot {notificationManagers.Count} notificationManagers."); JsonNode? gotifyNode = notificationManagers.FirstOrDefault(nm => nm["notificationManagerType"].GetValue() == (byte)NotificationManager.NotificationManagerType.Gotify); JsonNode? lunaSeaNode = notificationManagers.FirstOrDefault(nm => @@ -73,7 +79,7 @@ public static class Migrator CommonObjects co = new (lms, nms, null, settingsFilePath); - TrangaSettings.SettingsJsonObject sjo = new(settings, co); + TrangaSettings.SettingsJsonObject sjo = new(ts, co); File.WriteAllText(settingsFilePath, JsonConvert.SerializeObject(sjo)); } } \ No newline at end of file diff --git a/Tranga/Tranga.cs b/Tranga/Tranga.cs index dc29b39..63a51ae 100644 --- a/Tranga/Tranga.cs +++ b/Tranga/Tranga.cs @@ -31,7 +31,7 @@ public static class Tranga " Starting Tranga-API\n"+ "-------------------------------------------"); logger.WriteLine("Tranga", "Migrating..."); - Migrator.Migrate(settingsFilePath); + Migrator.Migrate(settingsFilePath, logger); TrangaSettings settings; if (File.Exists(settingsFilePath))