-
Notifications
You must be signed in to change notification settings - Fork 4
/
cql.go
96 lines (89 loc) · 3.34 KB
/
cql.go
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/*===----------- cql.go - c* utility written in go -------------===
*
*
* This file is licensed under the Apache 2 License. See LICENSE for details.
*
* Copyright (c) 2018 Andrew Grosser. All Rights Reserved.
*
* `...
* yNMMh`
* dMMMh`
* dMMMh`
* dMMMh`
* dMMMd`
* dMMMm.
* dMMMm.
* dMMMm. /hdy.
* ohs+` yMMMd. yMMM-
* .mMMm. yMMMm. oMMM/
* :MMMd` sMMMN. oMMMo
* +MMMd` oMMMN. oMMMy
* sMMMd` /MMMN. oMMMh
* sMMMd` /MMMN- oMMMd
* oMMMd` :NMMM- oMMMd
* /MMMd` -NMMM- oMMMm
* :MMMd` .mMMM- oMMMm`
* -NMMm. `mMMM: oMMMm`
* .mMMm. dMMM/ +MMMm`
* `hMMm. hMMM/ /MMMm`
* yMMm. yMMM/ /MMMm`
* oMMm. oMMMo -MMMN.
* +MMm. +MMMo .MMMN-
* +MMm. /MMMo .NMMN-
* ` +MMm. -MMMs .mMMN: `.-.
* /hys:` +MMN- -NMMy `hMMN: .yNNy
* :NMMMy` sMMM/ .NMMy yMMM+-dMMMo
* +NMMMh-hMMMo .mMMy +MMMmNMMMh`
* /dMMMNNMMMs .dMMd -MMMMMNm+`
* .+mMMMMMN: .mMMd `NMNmh/`
* `/yhhy: `dMMd /+:`
* `hMMm`
* `hMMm.
* .mMMm:
* :MMMd-
* -NMMh.
* ./:.
*
*===----------------------------------------------------------------------===
*/
package main
import (
"context"
"fmt"
"os"
"reflect"
"text/tabwriter"
"github.com/gocql/gocql"
)
func printCStarQuery(ctx context.Context, session *gocql.Session, stmt string, values ...interface{}) error {
iter := session.Query(stmt, values...).WithContext(ctx).Iter()
fmt.Println(stmt)
w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ',
0)
for i, columnInfo := range iter.Columns() {
if i > 0 {
fmt.Fprint(w, "\t| ")
}
fmt.Fprintf(w, "%s (%s)", columnInfo.Name, columnInfo.TypeInfo)
}
for {
rd, err := iter.RowData()
if err != nil {
return err
}
if !iter.Scan(rd.Values...) {
break
}
fmt.Fprint(w, "\n")
for i, val := range rd.Values {
if i > 0 {
fmt.Fprint(w, "\t| ")
}
fmt.Fprint(w, reflect.Indirect(reflect.ValueOf(val)).Interface())
}
}
fmt.Fprint(w, "\n")
w.Flush()
fmt.Println()
return iter.Close()
}