diff --git a/FictionArchive.Service.NovelService/GraphQL/Query.cs b/FictionArchive.Service.NovelService/GraphQL/Query.cs index 2c572bb..9b2930c 100644 --- a/FictionArchive.Service.NovelService/GraphQL/Query.cs +++ b/FictionArchive.Service.NovelService/GraphQL/Query.cs @@ -153,12 +153,12 @@ public class Query public IQueryable GetChapter( NovelServiceDbContext dbContext, uint novelId, - uint volumeId, + uint volumeOrder, uint chapterOrder, Language preferredLanguage = Language.En) { return dbContext.Chapters - .Where(c => c.Volume.Novel.Id == novelId && c.Volume.Id == volumeId && c.Order == chapterOrder) + .Where(c => c.Volume.Novel.Id == novelId && c.Volume.Order == volumeOrder && c.Order == chapterOrder) .Select(chapter => new ChapterReaderDto { Id = chapter.Id, @@ -210,16 +210,16 @@ public class Query TotalChaptersInVolume = chapter.Volume.Chapters.Count, // Previous chapter: first try same volume, then last chapter of previous volume - PrevChapterVolumeId = chapter.Volume.Chapters + PrevChapterVolumeOrder = chapter.Volume.Chapters .Where(c => c.Order < chapterOrder) .OrderByDescending(c => c.Order) - .Select(c => (uint?)chapter.Volume.Id) + .Select(c => (int?)chapter.Volume.Order) .FirstOrDefault() ?? chapter.Volume.Novel.Volumes .Where(v => v.Order < chapter.Volume.Order) .OrderByDescending(v => v.Order) .SelectMany(v => v.Chapters.OrderByDescending(c => c.Order).Take(1)) - .Select(c => (uint?)c.Volume.Id) + .Select(c => (int?)c.Volume.Order) .FirstOrDefault(), PrevChapterOrder = chapter.Volume.Chapters @@ -235,16 +235,16 @@ public class Query .FirstOrDefault(), // Next chapter: first try same volume, then first chapter of next volume - NextChapterVolumeId = chapter.Volume.Chapters + NextChapterVolumeOrder = chapter.Volume.Chapters .Where(c => c.Order > chapterOrder) .OrderBy(c => c.Order) - .Select(c => (uint?)chapter.Volume.Id) + .Select(c => (int?)chapter.Volume.Order) .FirstOrDefault() ?? chapter.Volume.Novel.Volumes .Where(v => v.Order > chapter.Volume.Order) .OrderBy(v => v.Order) .SelectMany(v => v.Chapters.OrderBy(c => c.Order).Take(1)) - .Select(c => (uint?)c.Volume.Id) + .Select(c => (int?)c.Volume.Order) .FirstOrDefault(), NextChapterOrder = chapter.Volume.Chapters diff --git a/FictionArchive.Service.NovelService/Models/DTOs/ChapterReaderDto.cs b/FictionArchive.Service.NovelService/Models/DTOs/ChapterReaderDto.cs index e976bd9..ca20dee 100644 --- a/FictionArchive.Service.NovelService/Models/DTOs/ChapterReaderDto.cs +++ b/FictionArchive.Service.NovelService/Models/DTOs/ChapterReaderDto.cs @@ -19,9 +19,9 @@ public class ChapterReaderDto : BaseDto public int VolumeOrder { get; init; } public int TotalChaptersInVolume { get; init; } - // Cross-volume navigation (VolumeId + Order identify a chapter) - public uint? PrevChapterVolumeId { get; init; } + // Cross-volume navigation (VolumeOrder + ChapterOrder identify a chapter) + public int? PrevChapterVolumeOrder { get; init; } public uint? PrevChapterOrder { get; init; } - public uint? NextChapterVolumeId { get; init; } + public int? NextChapterVolumeOrder { get; init; } public uint? NextChapterOrder { get; init; } } diff --git a/fictionarchive-web-astro/src/lib/components/ChapterNavigation.svelte b/fictionarchive-web-astro/src/lib/components/ChapterNavigation.svelte index 088b8e6..6f547fc 100644 --- a/fictionarchive-web-astro/src/lib/components/ChapterNavigation.svelte +++ b/fictionarchive-web-astro/src/lib/components/ChapterNavigation.svelte @@ -6,31 +6,31 @@ interface Props { novelId: string; - prevChapterVolumeId: number | null | undefined; + prevChapterVolumeOrder: number | null | undefined; prevChapterOrder: number | null | undefined; - nextChapterVolumeId: number | null | undefined; + nextChapterVolumeOrder: number | null | undefined; nextChapterOrder: number | null | undefined; showKeyboardHints?: boolean; } let { novelId, - prevChapterVolumeId, + prevChapterVolumeOrder, prevChapterOrder, - nextChapterVolumeId, + nextChapterVolumeOrder, nextChapterOrder, showKeyboardHints = true }: Props = $props(); - const hasPrev = $derived(prevChapterOrder != null && prevChapterVolumeId != null); - const hasNext = $derived(nextChapterOrder != null && nextChapterVolumeId != null); + const hasPrev = $derived(prevChapterOrder != null && prevChapterVolumeOrder != null); + const hasNext = $derived(nextChapterOrder != null && nextChapterVolumeOrder != null);