MCPcopy
hub / github.com/dosco/graphjin / writeFieldsRecursive

Function writeFieldsRecursive

core/database_join.go:617–667  ·  view source on GitHub ↗

writeFieldsRecursive writes fields that match the keepFieldIDs set

(buf *bytes.Buffer, fields []graph.Field, parentID int32, keepFieldIDs map[int32]bool)

Source from the content-addressed store, hash-verified

615
616// writeFieldsRecursive writes fields that match the keepFieldIDs set
617func writeFieldsRecursive(buf *bytes.Buffer, fields []graph.Field, parentID int32, keepFieldIDs map[int32]bool) {
618 first := true
619 for _, f := range fields {
620 if f.ParentID != parentID || !keepFieldIDs[f.ID] {
621 continue
622 }
623
624 if !first {
625 buf.WriteString(" ")
626 }
627 first = false
628
629 // Write alias if present
630 if f.Alias != "" {
631 buf.WriteString(f.Alias)
632 buf.WriteString(": ")
633 }
634
635 // Write field name
636 buf.WriteString(f.Name)
637
638 // Write arguments if present
639 if len(f.Args) > 0 {
640 buf.WriteString("(")
641 for i, arg := range f.Args {
642 if i > 0 {
643 buf.WriteString(", ")
644 }
645 buf.WriteString(arg.Name)
646 buf.WriteString(": ")
647 writeNode(buf, arg.Val)
648 }
649 buf.WriteString(")")
650 }
651
652 // Check if this field has children
653 hasChildren := false
654 for _, child := range fields {
655 if child.ParentID == f.ID && keepFieldIDs[child.ID] {
656 hasChildren = true
657 break
658 }
659 }
660
661 if hasChildren {
662 buf.WriteString(" { ")
663 writeFieldsRecursive(buf, fields, f.ID, keepFieldIDs)
664 buf.WriteString(" }")
665 }
666 }
667}
668
669// writeNode writes a Node value to the buffer
670func writeNode(buf *bytes.Buffer, n *graph.Node) {

Callers 1

buildDatabaseQueryMethod · 0.85

Calls 2

writeNodeFunction · 0.85
WriteStringMethod · 0.65

Tested by

no test coverage detected