diff --git a/API/Data/ManualMigrations/v0.8.5/ManualMigrateNeedsManualMatch.cs b/API/Data/ManualMigrations/v0.8.5/ManualMigrateNeedsManualMatch.cs new file mode 100644 index 000000000..30e4a6d8e --- /dev/null +++ b/API/Data/ManualMigrations/v0.8.5/ManualMigrateNeedsManualMatch.cs @@ -0,0 +1,55 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using API.DTOs.KavitaPlus.Manage; +using API.Entities.History; +using API.Entities.Metadata; +using API.Extensions.QueryExtensions; +using Kavita.Common.EnvironmentInfo; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; + +namespace API.Data.ManualMigrations; + +/// +/// v0.8.5 - After user testing, the needs manual match has some edge cases from migrations and for best user experience, +/// should be reset to allow the upgraded system to process better. +/// +public static class ManualMigrateNeedsManualMatch +{ + public static async Task Migrate(DataContext context, ILogger logger) + { + if (await context.ManualMigrationHistory.AnyAsync(m => m.Name == "ManualMigrateNeedsManualMatch")) + { + return; + } + + logger.LogCritical("Running ManualMigrateNeedsManualMatch migration - Please be patient, this may take some time. This is not an error"); + + // Get all series in the Blacklist table and set their IsBlacklist = true + var series = await context.Series + .FilterMatchState(MatchStateOption.Error) + .ToListAsync(); + + foreach (var seriesEntry in series) + { + seriesEntry.IsBlacklisted = false; + context.Series.Update(seriesEntry); + } + + if (context.ChangeTracker.HasChanges()) + { + await context.SaveChangesAsync(); + } + + await context.ManualMigrationHistory.AddAsync(new ManualMigrationHistory() + { + Name = "ManualMigrateNeedsManualMatch", + ProductVersion = BuildInfo.Version.ToString(), + RanAt = DateTime.UtcNow + }); + await context.SaveChangesAsync(); + + logger.LogCritical("Running ManualMigrateNeedsManualMatch migration - Completed. This is not an error"); + } +} diff --git a/API/Data/ManualMigrations/v0.8.5/ManualMigrateScrobbleErrors.cs b/API/Data/ManualMigrations/v0.8.5/ManualMigrateScrobbleErrors.cs index 2bc22ca11..b0d483de6 100644 --- a/API/Data/ManualMigrations/v0.8.5/ManualMigrateScrobbleErrors.cs +++ b/API/Data/ManualMigrations/v0.8.5/ManualMigrateScrobbleErrors.cs @@ -38,7 +38,7 @@ public static class ManualMigrateScrobbleErrors await context.ManualMigrationHistory.AddAsync(new ManualMigrationHistory() { - Name = "ManualMigrateInvalidBlacklistSeries", + Name = "ManualMigrateScrobbleErrors", ProductVersion = BuildInfo.Version.ToString(), RanAt = DateTime.UtcNow }); diff --git a/API/Startup.cs b/API/Startup.cs index 92280f9ca..31b0836c3 100644 --- a/API/Startup.cs +++ b/API/Startup.cs @@ -281,6 +281,7 @@ public class Startup await ManualMigrateBlacklistTableToSeries.Migrate(dataContext, logger); await ManualMigrateInvalidBlacklistSeries.Migrate(dataContext, logger); await ManualMigrateScrobbleErrors.Migrate(dataContext, logger); + await ManualMigrateNeedsManualMatch.Migrate(dataContext, logger); // Update the version in the DB after all migrations are run var installVersion = await unitOfWork.SettingsRepository.GetSettingAsync(ServerSettingKey.InstallVersion);