using Raven.Client.Documents; using Raven.Client.Documents.Indexes; namespace Finch.Raven; public class FinchTreeHierarchyIndexResult : FinchIdEntity, ISupportsDbConventions { public List Path { get; set; } = new List(); } public abstract class FinchTreeHierarchyIndex : FinchIndex where T : FinchIdEntity, ISupportsTrees { protected override void Create() { Map = items => items.Select(item => new FinchTreeHierarchyIndexResult { Id = item.Id, Path = Recurse(item, x => LoadDocument(x.ParentId)) .Where(x => x != null && x.Id != null && x.Id != item.Id) .Reverse() .Select(current => current.Id) .ToList() }); StoreAllFields(FieldStorage.Yes); //Index(x => x.ChannelId, FieldIndexing.Exact); } }