diff --git a/API.Tests/Services/ReaderServiceTests.cs b/API.Tests/Services/ReaderServiceTests.cs index 7e66c8a1e..5a7046a7e 100644 --- a/API.Tests/Services/ReaderServiceTests.cs +++ b/API.Tests/Services/ReaderServiceTests.cs @@ -381,6 +381,49 @@ public class ReaderServiceTests Assert.Equal("2", actualChapter.Range); } + [Fact] + public async Task GetNextChapterIdAsync_ShouldGetNextVolume_OnlyFloats() + { + // V1 -> V2 + await ResetDb(); + + var series = new SeriesBuilder("Test") + .WithVolume(new VolumeBuilder("1.0") + .WithChapter(new ChapterBuilder("1").Build()) + .Build()) + + .WithVolume(new VolumeBuilder("2.1") + .WithChapter(new ChapterBuilder("21").Build()) + .Build()) + + .WithVolume(new VolumeBuilder("2.2") + .WithChapter(new ChapterBuilder("31").Build()) + .Build()) + + .WithVolume(new VolumeBuilder("3.1") + .WithChapter(new ChapterBuilder("31").Build()) + .Build()) + + + .Build(); + series.Library = new LibraryBuilder("Test LIb", LibraryType.Manga).Build(); + + _context.Series.Add(series); + + _context.AppUser.Add(new AppUser() + { + UserName = "majora2007" + }); + + await _context.SaveChangesAsync(); + + + + var nextChapter = await _readerService.GetNextChapterIdAsync(1, 2, 2, 1); + var actualChapter = await _unitOfWork.ChapterRepository.GetChapterAsync(nextChapter); + Assert.Equal("31", actualChapter.Range); + } + [Fact] public async Task GetNextChapterIdAsync_ShouldRollIntoNextVolume() { diff --git a/API/Data/ManualMigrations/MigrateExistingRatings.cs b/API/Data/ManualMigrations/MigrateExistingRatings.cs new file mode 100644 index 000000000..4314c724b --- /dev/null +++ b/API/Data/ManualMigrations/MigrateExistingRatings.cs @@ -0,0 +1,32 @@ +using System.Linq; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; + +namespace API.Data.ManualMigrations; + +/// +/// Introduced in v0.7.5.6 and v0.7.6, Ratings > 0 need to have "HasRatingSet" +/// +/// Added in v0.7.5.6 +// ReSharper disable once InconsistentNaming +public static class MigrateExistingRatings +{ + public static async Task Migrate(DataContext context, ILogger logger) + { + logger.LogCritical("Running MigrateExistingRatings migration - Please be patient, this may take some time. This is not an error"); + + foreach (var r in context.AppUserRating.Where(r => r.Rating > 0f)) + { + r.HasBeenRated = true; + context.Entry(r).State = EntityState.Modified; + } + + if (context.ChangeTracker.HasChanges()) + { + await context.SaveChangesAsync(); + } + + logger.LogCritical("Running MigrateExistingRatings migration - Completed. This is not an error"); + } +} diff --git a/API/Startup.cs b/API/Startup.cs index 64f2a3f73..ed68f050e 100644 --- a/API/Startup.cs +++ b/API/Startup.cs @@ -247,6 +247,9 @@ public class Startup // v0.7.4 await MigrateDisableScrobblingOnComicLibraries.Migrate(unitOfWork, dataContext, logger); + // v0.7.6 + await MigrateExistingRatings.Migrate(dataContext, logger); + // Update the version in the DB after all migrations are run var installVersion = await unitOfWork.SettingsRepository.GetSettingAsync(ServerSettingKey.InstallVersion); installVersion.Value = BuildInfo.Version.ToString(); diff --git a/UI/Web/src/app/series-detail/_components/series-metadata-detail/series-metadata-detail.component.html b/UI/Web/src/app/series-detail/_components/series-metadata-detail/series-metadata-detail.component.html index 22e223adc..aa64662ad 100644 --- a/UI/Web/src/app/series-detail/_components/series-metadata-detail/series-metadata-detail.component.html +++ b/UI/Web/src/app/series-detail/_components/series-metadata-detail/series-metadata-detail.component.html @@ -13,10 +13,10 @@ - + @@ -45,10 +45,10 @@ - -   - (promoted) - + +   + (promoted) + {{item.title}} diff --git a/openapi.json b/openapi.json index 52586323c..066e15664 100644 --- a/openapi.json +++ b/openapi.json @@ -7,7 +7,7 @@ "name": "GPL-3.0", "url": "https://github.com/Kareadita/Kavita/blob/develop/LICENSE" }, - "version": "0.7.5.5" + "version": "0.7.5.7" }, "servers": [ {