using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Kavita.Models.DTOs.ReadingLists.CBL.RemapRules; using Kavita.Models.Entities; using Kavita.Models.Entities.ReadingLists; namespace Kavita.API.Repositories; public interface IReadingListRemapRuleRepository { /// /// Returns all remap rules matching the given normalized CBL series names, /// ordered with user-specific rules before global rules. /// Task> GetRulesForNamesAsync(IList normalizedNames, int userId, CancellationToken ct = default); Task> GetRulesForUserAsync(int userId, CancellationToken ct = default); Task GetByIdAsync(int id, CancellationToken ct = default); Task GetDtoByIdAsync(int id, CancellationToken ct = default); /// /// Admin-only: returns all rules across all users, with user names. /// Task> GetAllRulesAsync(CancellationToken ct = default); /// /// Finds an existing rule for the same user with the same CBL matching key (normalized name + volume + number). /// Task GetExactRuleAsync(string normalizedCblSeriesName, string? cblVolume, string? cblNumber, int userId, CancellationToken ct = default); void Add(ReadingListRemapRule rule); void Remove(ReadingListRemapRule rule); }