using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Kavita.Common.Helpers; using Kavita.Models.DTOs.Person; using Kavita.Models.DTOs.ReadingLists; using Kavita.Models.Entities; using Kavita.Models.Entities.Enums; namespace Kavita.API.Repositories; [Flags] public enum ReadingListIncludes { None = 1 << 0, Items = 1 << 1, ItemChapter = 1 << 2, } public interface IReadingListRepository { void Remove(ReadingListItem item); void Add(ReadingList list); void BulkRemove(IEnumerable items); void Update(ReadingList list); Task> GetReadingListDtosForUserAsync(int userId, bool includePromoted, UserParams userParams, bool sortByLastModified = true, CancellationToken ct = default); Task GetReadingListByIdAsync(int readingListId, ReadingListIncludes includes = ReadingListIncludes.None, CancellationToken ct = default); Task> GetReadingListItemDtosByIdAsync(int readingListId, int userId, UserParams? userParams = null, CancellationToken ct = default); Task GetReadingListDtoByIdAsync(int readingListId, int userId, CancellationToken ct = default); Task GetReadingListDtoByTitleAsync(int userId, string title, CancellationToken ct = default); Task> GetReadingListItemsByIdAsync(int readingListId, CancellationToken ct = default); Task> GetReadingListDtosForSeriesAndUserAsync(int userId, int seriesId, bool includePromoted, CancellationToken ct = default); Task> GetReadingListDtosForChapterAndUserAsync(int userId, int chapterId, bool includePromoted, CancellationToken ct = default); Task Count(CancellationToken ct = default); Task GetCoverImageAsync(int readingListId, CancellationToken ct = default); Task> GetRandomCoverImagesAsync(int readingListId, CancellationToken ct = default); Task> GetAllCoverImagesAsync(CancellationToken ct = default); Task ReadingListExists(string name, int? readingListId = null, CancellationToken ct = default); Task ReadingListExistsForUser(string name, int userId, CancellationToken ct = default); IEnumerable GetReadingListPeopleAsync(int readingListId, PersonRole role, CancellationToken ct = default); Task GetReadingListAllPeopleAsync(int readingListId, CancellationToken ct = default); Task> GetAllWithCoversInDifferentEncoding(EncodeFormat encodeFormat, CancellationToken ct = default); Task RemoveReadingListsWithoutSeries(CancellationToken ct = default); Task GetReadingListByTitleAsync(string name, int userId, ReadingListIncludes includes = ReadingListIncludes.Items, CancellationToken ct = default); Task> GetReadingListsByIds(IList ids, ReadingListIncludes includes = ReadingListIncludes.Items, CancellationToken ct = default); Task> GetReadingListsBySeriesId(int seriesId, ReadingListIncludes includes = ReadingListIncludes.Items, CancellationToken ct = default); Task GetReadingListInfoAsync(int readingListId, CancellationToken ct = default); Task AnyUserReadingProgressAsync(int readingListId, int userId, CancellationToken ct = default); Task GetContinueReadingPoint(int readingListId, int userId, CancellationToken ct = default); Task GetReadingListItemCountAsync(int readingListId, int userId, CancellationToken ct = default); Task GetFilesizeAsync(int readingListId, int userId, CancellationToken ct = default); Task> GetFilesizesAsync(IList readingListIds, int userId, CancellationToken ct = default); }