using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Kavita.Models.DTOs;
using Kavita.Models.Entities.User;
namespace Kavita.API.Repositories;
public interface IAppUserReadingProfileRepository
{
///
/// Returns the reading profile to use for the given series
///
///
///
///
///
///
///
///
Task GetProfileForSeries(int userId, int libraryId, int seriesId, int? activeDeviceId = null, bool skipImplicit = false, CancellationToken ct = default);
///
/// Get all profiles assigned to a library
///
///
///
///
///
Task> GetProfilesForLibrary(int userId, int libraryId, CancellationToken ct = default);
///
/// Return the profile if it belongs to the user
///
///
///
///
///
Task GetUserProfile(int userId, int profileId, CancellationToken ct = default);
///
/// Returns all reading profiles for the user
///
///
///
///
///
Task> GetProfilesForUser(int userId, bool skipImplicit = false, CancellationToken ct = default);
///
/// Returns all reading profiles for the user
///
///
///
///
///
Task> GetProfilesDtoForUser(int userId, bool skipImplicit = false, CancellationToken ct = default);
///
/// Is there a user reading profile with this name (normalized)?
///
///
///
///
///
Task IsProfileNameInUse(int userId, string name, CancellationToken ct = default);
void Add(AppUserReadingProfile readingProfile);
void Update(AppUserReadingProfile readingProfile);
void Remove(AppUserReadingProfile readingProfile);
void RemoveRange(IEnumerable readingProfiles);
}