using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; using Kavita.Models.DTOs; using Kavita.Models.DTOs.Metadata; using Kavita.Models.DTOs.Reader; using Kavita.Models.DTOs.SeriesDetail; using Kavita.Models.Entities; using Kavita.Models.Entities.Enums; using Kavita.Models.Entities.Metadata; namespace Kavita.API.Repositories; [Flags] public enum ChapterIncludes { None = 1 << 0, Volumes = 1 << 1, Files = 1 << 2, People = 1 << 3, Genres = 1 << 4, Tags = 1 << 5, ExternalReviews = 1 << 6, ExternalRatings = 1 << 7 } public interface IChapterRepository { void Update(Chapter chapter); void Remove(Chapter chapter); void Remove(IList chapters); Task> GetChaptersByIdsAsync(IList chapterIds, ChapterIncludes includes = ChapterIncludes.None, CancellationToken ct = default); Task GetChapterInfoDtoAsync(int chapterId, CancellationToken ct = default); Task GetChapterTotalPagesAsync(int chapterId, CancellationToken ct = default); Task GetChapterAsync(int chapterId, ChapterIncludes includes = ChapterIncludes.Files, CancellationToken ct = default); Task GetChapterDtoAsync(int chapterId, int userId, CancellationToken ct = default); Task> GetChapterDtoByIdsAsync(IEnumerable chapterIds, int userId, CancellationToken ct = default); Task GetChapterMetadataDtoAsync(int chapterId, ChapterIncludes includes = ChapterIncludes.Files, CancellationToken ct = default); Task> GetFilesForChapterAsync(int chapterId, CancellationToken ct = default); Task> GetChaptersAsync(int volumeId, ChapterIncludes includes = ChapterIncludes.None, CancellationToken ct = default); Task> GetChapterDtosAsync(int volumeId, int userId, CancellationToken ct = default); Task> GetFilesForChaptersAsync(IReadOnlyList chapterIds, CancellationToken ct = default); Task GetFilesizeAsync(int chapterId, CancellationToken ct = default); Task> GetFilesizesAsync(IList chapterIds, CancellationToken ct = default); Task GetChapterCoverImageAsync(int chapterId, CancellationToken ct = default); Task> GetAllCoverImagesAsync(CancellationToken ct = default); Task> GetAllChaptersWithCoversInDifferentEncoding(EncodeFormat format, CancellationToken ct = default); Task> GetCoverImagesForLockedChaptersAsync(CancellationToken ct = default); IQueryable GetChaptersForSeries(int seriesId, CancellationToken ct = default); Task> GetAllChaptersForSeries(int seriesId, CancellationToken ct = default); Task GetAverageUserRating(int chapterId, int userId, CancellationToken ct = default); Task> GetExternalChapterReviewDtos(int chapterId, CancellationToken ct = default); Task> GetExternalChapterReview(int chapterId, CancellationToken ct = default); Task> GetExternalChapterRatingDtos(int chapterId, CancellationToken ct = default); Task> GetExternalChapterRatings(int chapterId, CancellationToken ct = default); Task GetCurrentlyReadingChapterAsync(int seriesId, int userId, CancellationToken ct = default); Task GetFirstChapterForSeriesAsync(int seriesId, int userId, CancellationToken ct = default); Task GetFirstChapterForVolumeAsync(int volumeId, int userId, CancellationToken ct = default); Task> GetChapterDtosAsync(IEnumerable chapterIds, int userId, CancellationToken ct = default); Task GetSeriesIdForChapter(int chapterId, CancellationToken ct = default); }