writeFieldsRecursive writes fields that match the keepFieldIDs set
(buf *bytes.Buffer, fields []graph.Field, parentID int32, keepFieldIDs map[int32]bool)
| 615 | |
| 616 | // writeFieldsRecursive writes fields that match the keepFieldIDs set |
| 617 | func 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 |
| 670 | func writeNode(buf *bytes.Buffer, n *graph.Node) { |
no test coverage detected