From c689a3a394b8650e22b4032a1df30d94254f8943 Mon Sep 17 00:00:00 2001
From: Octol1ttle <l1ttleofficial@outlook.com>
Date: Tue, 2 Apr 2024 00:09:47 +0500
Subject: [PATCH] split directory migration and language removal migration

---
 src/Data/Options/LanguageOption.cs |  3 +--
 src/Services/GuildDataService.cs   | 20 +++++++++++++-------
 2 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/src/Data/Options/LanguageOption.cs b/src/Data/Options/LanguageOption.cs
index 464c61b..22f98df 100644
--- a/src/Data/Options/LanguageOption.cs
+++ b/src/Data/Options/LanguageOption.cs
@@ -11,8 +11,7 @@ public sealed class LanguageOption : Option<CultureInfo>
     private static readonly Dictionary<string, CultureInfo> CultureInfoCache = new()
     {
         { "en", new CultureInfo("en-US") },
-        { "ru", new CultureInfo("ru-RU") },
-        { "mctaylors-ru", new CultureInfo("tt-RU") }
+        { "ru", new CultureInfo("ru-RU") }
     };
 
     public LanguageOption(string name, string defaultValue) : base(name, CultureInfoCache[defaultValue]) { }
diff --git a/src/Services/GuildDataService.cs b/src/Services/GuildDataService.cs
index 4647b11..e503d22 100644
--- a/src/Services/GuildDataService.cs
+++ b/src/Services/GuildDataService.cs
@@ -78,7 +78,7 @@ public sealed class GuildDataService : BackgroundService
         var settingsPath = $"{path}/Settings.json";
         var scheduledEventsPath = $"{path}/ScheduledEvents.json";
 
-        await MigrateGuildData(guildId, path, ct);
+        MigrateDataDirectory(guildId, path);
 
         Directory.CreateDirectory(path);
 
@@ -106,6 +106,11 @@ public sealed class GuildDataService : BackgroundService
             dataLoadFailed = true;
         }
 
+        if (jsonSettings is not null)
+        {
+            FixJsonSettings(jsonSettings);
+        }
+
         await using var eventsStream = File.OpenRead(scheduledEventsPath);
         Dictionary<ulong, ScheduledEventData>? events = null;
         try
@@ -155,7 +160,7 @@ public sealed class GuildDataService : BackgroundService
         return finalData;
     }
 
-    private async Task MigrateGuildData(Snowflake guildId, string newPath, CancellationToken ct)
+    private void MigrateDataDirectory(Snowflake guildId, string newPath)
     {
         var oldPath = $"{guildId}";
 
@@ -167,13 +172,14 @@ public sealed class GuildDataService : BackgroundService
             _logger.LogInformation("Moved guild data to separate folder: \"{OldPath}\" -> \"{NewPath}\"", oldPath,
                 newPath);
         }
+    }
 
-        var settings = (await GetData(guildId, ct)).Settings;
-
-        if (GuildSettings.Language.Get(settings).Name is "tt-RU")
+    private static void FixJsonSettings(JsonNode settings)
+    {
+        var language = settings[GuildSettings.Language.Name]?.GetValue<string>();
+        if (language is "mctaylors-ru")
         {
-            GuildSettings.Language.Set(settings, "ru");
-            _logger.LogInformation("Switched from unsupported language in \"{GuildID}\": mctaylors-ru -> ru", guildId.Value);
+            settings[GuildSettings.Language.Name] = "ru";
         }
     }