MCPcopy
hub / github.com/perkeep/perkeep / EdgesTo

Method EdgesTo

pkg/index/index.go:1537–1563  ·  view source on GitHub ↗
(ref blob.Ref, opts *camtypes.EdgesToOpts)

Source from the content-addressed store, hash-verified

1535}
1536
1537func (x *Index) EdgesTo(ref blob.Ref, opts *camtypes.EdgesToOpts) (edges []*camtypes.Edge, err error) {
1538 it := x.queryPrefix(keyEdgeBackward, ref)
1539 defer closeIterator(it, &err)
1540 permanodeParents := make(map[string]*camtypes.Edge)
1541 for it.Next() {
1542 edge, ok := kvEdgeBackward(it.Key(), it.Value())
1543 if !ok {
1544 continue
1545 }
1546 if x.IsDeleted(edge.From) {
1547 continue
1548 }
1549 if x.IsDeleted(edge.BlobRef) {
1550 continue
1551 }
1552 edge.To = ref
1553 if edge.FromType == schema.TypePermanode {
1554 permanodeParents[edge.From.String()] = edge
1555 } else {
1556 edges = append(edges, edge)
1557 }
1558 }
1559 for _, e := range permanodeParents {
1560 edges = append(edges, e)
1561 }
1562 return edges, nil
1563}
1564
1565func kvEdgeBackward(k, v string) (edge *camtypes.Edge, ok bool) {
1566 // TODO(bradfitz): garbage

Callers

nothing calls this directly

Calls 8

queryPrefixMethod · 0.95
IsDeletedMethod · 0.95
closeIteratorFunction · 0.85
kvEdgeBackwardFunction · 0.85
NextMethod · 0.65
KeyMethod · 0.65
ValueMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected