func writePartialEdges(ctx context.Context, sorter disksort.Interface, idx table.BufferedInverted, src *ipb.Source) error { edges := assemble.PartialReverseEdges(src) for _, pe := range edges { if err := sorter.Add(pe); err != nil { return err } } return nil }
func createDecorationFragments(ctx context.Context, edges <-chan *srvpb.Edge, fragments disksort.Interface) error { fdb := &assemble.DecorationFragmentBuilder{ Output: func(ctx context.Context, file string, fragment *srvpb.FileDecorations) error { return fragments.Add(&decorationFragment{fileTicket: file, decoration: fragment}) }, } for e := range edges { if err := fdb.AddEdge(ctx, e); err != nil { for range edges { // drain input channel } return err } } return fdb.Flush(ctx) }
func writeCompletedEdges(ctx context.Context, edges disksort.Interface, e *srvpb.Edge) error { if err := edges.Add(&srvpb.Edge{ Source: &srvpb.Node{Ticket: e.Source.Ticket}, Kind: e.Kind, Target: e.Target, }); err != nil { return fmt.Errorf("error writing complete edge: %v", err) } if err := edges.Add(&srvpb.Edge{ Source: &srvpb.Node{Ticket: e.Target.Ticket}, Kind: schema.MirrorEdge(e.Kind), Target: assemble.FilterTextFacts(e.Source), }); err != nil { return fmt.Errorf("error writing complete edge mirror: %v", err) } return nil }