using System; using System.Collections.Generic; using System.Threading.Tasks; using ErsatzTV.Core.Domain; using ErsatzTV.Core.Interfaces.Metadata; using ErsatzTV.Core.Interfaces.Repositories; using ErsatzTV.Core.Search; using LanguageExt; namespace ErsatzTV.Core.Interfaces.Search { public interface ISearchIndex : IDisposable { public int Version { get; } Task Initialize(ILocalFileSystem localFileSystem); Task Rebuild(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(); } }