using ErsatzTV.Core.Domain; using ErsatzTV.Core.Interfaces.Metadata; using ErsatzTV.Core.Interfaces.Repositories; using ErsatzTV.Core.Search; namespace ErsatzTV.Core.Interfaces.Search; public interface ISearchIndex : IDisposable { public int Version { get; } Task Initialize(ILocalFileSystem localFileSystem); Task Rebuild(ISearchRepository searchRepository, List itemIds); Task RebuildItems(ISearchRepository searchRepository, List itemIds); Task AddItems(ISearchRepository searchRepository, List items); Task UpdateItems(ISearchRepository searchRepository, List items); Task RemoveItems(List ids); Task Search(string query, int skip, int limit, string searchField = ""); void Commit(); }