using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Kavita.Models.DTOs; using Kavita.Models.DTOs.Filtering; using Kavita.Models.DTOs.JumpBar; using Kavita.Models.DTOs.Metadata; using Kavita.Models.Entities; using Kavita.Models.Entities.Enums; namespace Kavita.API.Repositories; [Flags] public enum LibraryIncludes { None = 1 << 0, Series = 1 << 1, AppUser = 1 << 2, Folders = 1 << 3, FileTypes = 1 << 4, ExcludePatterns = 1 << 5 } public interface ILibraryRepository { void Add(Library library); void Update(Library library); void Delete(Library? library); Task> GetLibraryDtosAsync(CancellationToken ct = default); Task GetLibraryDtoByIdAsync(int libraryId, CancellationToken ct = default); Task GetLiteLibraryDtoByIdAsync(int libraryId, CancellationToken ct = default); Task LibraryExists(string libraryName, CancellationToken ct = default); Task GetLibraryForIdAsync(int libraryId, LibraryIncludes includes = LibraryIncludes.None, CancellationToken ct = default); Task> GetLibraryDtosForUsernameAsync(string userName, CancellationToken ct = default); Task> GetLibrariesAsync(LibraryIncludes includes = LibraryIncludes.None, bool track = true, CancellationToken ct = default); Task> GetLibrariesForUserIdAsync(int userId, CancellationToken ct = default); Task> GetLibraryIdsForUserIdAsync(int userId, QueryContext queryContext = QueryContext.None, CancellationToken ct = default); Task GetLibraryTypeAsync(int libraryId, CancellationToken ct = default); Task GetLibraryTypeBySeriesIdAsync(int seriesId, CancellationToken ct = default); Task> GetLibraryForIdsAsync(IEnumerable libraryIds, LibraryIncludes includes = LibraryIncludes.None, CancellationToken ct = default); Task GetTotalFiles(CancellationToken ct = default); IEnumerable GetJumpBarAsync(int libraryId, CancellationToken ct = default); Task> GetAllAgeRatingsDtosForLibrariesAsync(List libraryIds, CancellationToken ct = default); Task> GetAllLanguagesForLibrariesAsync(List? libraryIds, CancellationToken ct = default); IEnumerable GetAllPublicationStatusesDtosForLibrariesAsync(List libraryIds, CancellationToken ct = default); Task DoAnySeriesFoldersMatch(IEnumerable folders, CancellationToken ct = default); Task GetLibraryCoverImageAsync(int libraryId, CancellationToken ct = default); Task> GetAllCoverImagesAsync(CancellationToken ct = default); Task> GetAllWithCoversInDifferentEncoding(EncodeFormat encodeFormat, CancellationToken ct = default); Task GetAllowsScrobblingBySeriesId(int seriesId, CancellationToken ct = default); Task> GetLibraryTypesBySeriesIdsAsync(IList seriesIds, CancellationToken ct = default); }