using Bugsnag; using ErsatzTV.Core.Domain; using ErsatzTV.Core.Interfaces.Metadata; using ErsatzTV.Core.Interfaces.Repositories; using ErsatzTV.Core.Interfaces.Repositories.Caching; using ErsatzTV.Core.Search; namespace ErsatzTV.Core.Interfaces.Search; public interface ISearchIndex : IDisposable { public int Version { get; } Task IndexExists(); Task Initialize(ILocalFileSystem localFileSystem, IConfigElementRepository configElementRepository); Task Rebuild(ICachingSearchRepository searchRepository, IFallbackMetadataProvider fallbackMetadataProvider); Task RebuildItems( ICachingSearchRepository searchRepository, IFallbackMetadataProvider fallbackMetadataProvider, IEnumerable itemIds); Task UpdateItems( ICachingSearchRepository searchRepository, IFallbackMetadataProvider fallbackMetadataProvider, List items); Task RemoveItems(IEnumerable ids); Task Search(IClient client, string query, int skip, int limit); void Commit(); }