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 { int Version { get; } Task IndexExists(); Task Initialize( ILocalFileSystem localFileSystem, IConfigElementRepository configElementRepository, CancellationToken cancellationToken); Task Rebuild( ISearchRepository searchRepository, IFallbackMetadataProvider fallbackMetadataProvider, ILanguageCodeService languageCodeService, CancellationToken cancellationToken); Task RebuildItems( ISearchRepository searchRepository, IFallbackMetadataProvider fallbackMetadataProvider, ILanguageCodeService languageCodeService, IEnumerable itemIds, CancellationToken cancellationToken); Task UpdateItems( ISearchRepository searchRepository, IFallbackMetadataProvider fallbackMetadataProvider, ILanguageCodeService languageCodeService, List items); Task RemoveItems(IEnumerable ids); Task Search( string query, string smartCollectionName, int skip, int limit, CancellationToken cancellationToken); Task Search( string query, string smartCollectionName, int skip, int limit, List defaultFields, CancellationToken cancellationToken); void Commit(); }