using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Kavita.Common.Helpers; using Kavita.Models.DTOs.Metadata; using Kavita.Models.DTOs.Metadata.Browse; using Kavita.Models.Entities; namespace Kavita.API.Repositories; public interface IGenreRepository { void Attach(Genre genre); void Remove(Genre genre); Task FindByNameAsync(string genreName, CancellationToken ct = default); Task> GetAllGenresAsync(CancellationToken ct = default); Task> GetAllGenresByNamesAsync(IEnumerable normalizedNames, CancellationToken ct = default); Task RemoveAllGenreNoLongerAssociated(bool removeExternal = false, CancellationToken ct = default); Task> GetAllGenreDtosForLibrariesAsync(int userId, IList? libraryIds = null, QueryContext context = QueryContext.None, CancellationToken ct = default); Task GetCountAsync(CancellationToken ct = default); Task GetRandomGenre(CancellationToken ct = default); Task GetGenreById(int id, CancellationToken ct = default); Task> GetAllGenresNotInListAsync(ICollection genreNames, CancellationToken ct = default); Task> GetBrowseableGenre(int userId, UserParams userParams, CancellationToken ct = default); }