using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Kavita.Models.DTOs.Progress; using Kavita.Models.Entities.Enums; using Kavita.Models.Entities.Progress; namespace Kavita.API.Repositories; public interface IAppUserProgressRepository { void Update(AppUserProgress userProgress); void Remove(AppUserProgress userProgress); Task CleanupAbandonedChapters(CancellationToken ct = default); Task UserHasProgress(LibraryType libraryType, int userId, CancellationToken ct = default); Task GetUserProgressAsync(int chapterId, int userId, CancellationToken ct = default); Task HasAnyProgressOnSeriesAsync(int seriesId, int userId, CancellationToken ct = default); Task> GetUserProgressForSeriesAsync(int seriesId, int userId, CancellationToken ct = default); Task> GetAllProgress(CancellationToken ct = default); Task GetLatestProgress(CancellationToken ct = default); Task GetUserProgressDtoAsync(int chapterId, int userId, CancellationToken ct = default); Task AnyUserProgressForSeriesAsync(int seriesId, int userId, CancellationToken ct = default); Task GetHighestFullyReadChapterForSeries(int seriesId, int userId, CancellationToken ct = default); Task GetHighestFullyReadVolumeForSeries(int seriesId, int userId, CancellationToken ct = default); Task GetLatestProgressForSeries(int seriesId, int userId, CancellationToken ct = default); Task GetLatestProgressForVolume(int volumeId, int userId, CancellationToken ct = default); Task GetLatestProgressForChapter(int chapterId, int userId, CancellationToken ct = default); Task GetFirstProgressForSeries(int seriesId, int userId, CancellationToken ct = default); Task GetFirstProgressForUser(int userId, CancellationToken ct = default); Task UpdateAllProgressThatAreMoreThanChapterPages(CancellationToken ct = default); Task> GetUserProgressForChapter(int chapterId, int userId = 0, CancellationToken ct = default); }