← history for render.go
0b9f6e49render.go42 lines⬡ raw↓ download
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package main

import (
	"fmt"
	"os"
	"strings"
	"text/tabwriter"
)

func PrintTable(result *QueryResult) {
	if len(result.Columns) == 0 {
		fmt.Println("query ok, no columns returned")
		return
	}

	if len(result.Rows) == 0 {
		fmt.Println("0 rows returned")
		return
	}

	w := tabwriter.NewWriter(os.Stdout, 0, 4, 2, ' ', 0)

	header := strings.Join(result.Columns, "\t")
	fmt.Fprintln(w, header)

	sep := make([]string, len(result.Columns))
	for i, c := range result.Columns {
		sep[i] = strings.Repeat("-", len(c))
	}
	fmt.Fprintln(w, strings.Join(sep, "\t"))

	for _, row := range result.Rows {
		fmt.Fprintln(w, strings.Join(row, "\t"))
	}

	w.Flush()
	fmt.Printf("(%d rows)\n", len(result.Rows))
}

func PrintError(err error) {
	fmt.Fprintf(os.Stderr, "error: %v\n", err)
}