using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Kavita.Models.DTOs; using Kavita.Models.Entities; using Kavita.Models.Entities.Enums; namespace Kavita.API.Repositories; [Flags] public enum VolumeIncludes { None = 1 << 0, Chapters = 1 << 1, People = 1 << 2, Tags = 1 << 3, /// /// This will include Chapters by default /// Files = 1 << 4 } public interface IVolumeRepository { void Add(Volume volume); void Update(Volume volume); void Remove(Volume volume); void Remove(IList volumes); Task> GetFilesForVolume(int volumeId, CancellationToken ct = default); Task GetVolumeCoverImageAsync(int volumeId, CancellationToken ct = default); Task> GetChapterIdsByVolumeIds(IReadOnlyList volumeIds, CancellationToken ct = default); Task> GetVolumesDtoAsync(int seriesId, int userId, VolumeIncludes includes = VolumeIncludes.Chapters, CancellationToken ct = default); Task GetVolumeByIdAsync(int volumeId, VolumeIncludes includes = VolumeIncludes.Files, CancellationToken ct = default); Task GetVolumeDtoAsync(int volumeId, int userId, CancellationToken ct = default); Task> GetVolumesForSeriesAsync(IList seriesIds, bool includeChapters = false, CancellationToken ct = default); Task> GetVolumes(int seriesId, CancellationToken ct = default); Task> GetVolumesById(IList volumeIds, VolumeIncludes includes = VolumeIncludes.None, CancellationToken ct = default); Task> GetAllWithCoversInDifferentEncoding(EncodeFormat encodeFormat, CancellationToken ct = default); Task> GetCoverImagesForLockedVolumesAsync(CancellationToken ct = default); Task GetFilesizeForVolumeAsync(int volumeId, CancellationToken ct = default); Task> GetFilesizeForVolumesAsync(IList volumeIds, CancellationToken ct = default); }