MCPcopy Create free account
hub / github.com/ajitpratap0/GoSQLX / displayTree

Method displayTree

cmd/gosqlx/cmd/parser_cmd.go:254–299  ·  view source on GitHub ↗

displayTree displays AST in tree format

(astObj *ast.AST)

Source from the content-addressed store, hash-verified

252
253// displayTree displays AST in tree format
254func (p *Parser) displayTree(astObj *ast.AST) error {
255 fmt.Fprintf(p.Out, "🌳 AST Tree Structure:\n")
256 fmt.Fprintf(p.Out, "├── AST Root\n")
257
258 for i, stmt := range astObj.Statements {
259 isLast := i == len(astObj.Statements)-1
260 prefix := "├──"
261 childPrefix := "│ "
262 if isLast {
263 prefix = "└──"
264 childPrefix = " "
265 }
266
267 stmtType := fmt.Sprintf("%T", stmt)
268 if strings.Contains(stmtType, ".") {
269 parts := strings.Split(stmtType, ".")
270 stmtType = parts[len(parts)-1]
271 }
272
273 fmt.Fprintf(p.Out, "%s %s\n", prefix, stmtType)
274
275 // Add basic tree structure for SELECT statements
276 if s, ok := stmt.(*ast.SelectStatement); ok {
277 if len(s.Columns) > 0 {
278 fmt.Fprintf(p.Out, "%s├── Columns (%d items)\n", childPrefix, len(s.Columns))
279 }
280 if len(s.From) > 0 {
281 fmt.Fprintf(p.Out, "%s├── From (%d tables)\n", childPrefix, len(s.From))
282 }
283 if s.Where != nil {
284 fmt.Fprintf(p.Out, "%s├── Where\n", childPrefix)
285 }
286 if len(s.GroupBy) > 0 {
287 fmt.Fprintf(p.Out, "%s├── GroupBy\n", childPrefix)
288 }
289 if len(s.OrderBy) > 0 {
290 fmt.Fprintf(p.Out, "%s├── OrderBy\n", childPrefix)
291 }
292 if s.Limit != nil {
293 fmt.Fprintf(p.Out, "%s└── Limit\n", childPrefix)
294 }
295 }
296 }
297
298 return nil
299}
300
301// convertStatement converts an AST statement to a display format
302func convertStatement(stmt ast.Statement) StatementDisplay {

Callers 1

DisplayMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected