42 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			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;
 | |
|     }
 | |
| }
 | 
