Files
ClubPenguinClient/MareSynchronos/MareConfiguration/ConfigurationMigrator.cs
2025-02-16 04:21:02 +00:00

42 lines
1.4 KiB
C#

using MareSynchronos.WebAPI;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace MareSynchronos.MareConfiguration;
public class ConfigurationMigrator(ILogger<ConfigurationMigrator> logger,
NotesConfigService notesConfig) : IHostedService
{
private readonly ILogger<ConfigurationMigrator> _logger = logger;
public void Migrate()
{
var oldUri = ApiController.LoporritServiceUriOld;
var newUri = ApiController.LoporritServiceUri;
if (notesConfig.Current.ServerNotes.TryGetValue(oldUri, out var old))
{
_logger.LogDebug("Migrating server notes {old} => {new}", oldUri, newUri);
notesConfig.Current.ServerNotes.TryAdd(newUri, new());
var merged = notesConfig.Current.ServerNotes.GetValueOrDefault(newUri, new());
foreach (var (k, v) in old.GidServerComments)
merged.GidServerComments.TryAdd(k, v);
foreach (var (k, v) in old.UidServerComments)
merged.UidServerComments.TryAdd(k, v);
notesConfig.Current.ServerNotes.Remove(oldUri);
notesConfig.Save();
}
}
public Task StartAsync(CancellationToken cancellationToken)
{
Migrate();
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
}