Skip to content

Commit da2b280

Browse files
authored
update to latest sqle.v0 api (NULL support) (#121)
* adapt to latest sqle.v0 api (NULL support) * use NULL for target/hash in references table * cmd: in pretty printing, print strings quoted to distinguish NULL and "NULL"
1 parent 4ba8413 commit da2b280

File tree

9 files changed

+82
-40
lines changed

9 files changed

+82
-40
lines changed

Diff for: blobs.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ func (blobsTable) Name() string {
2525

2626
func (blobsTable) Schema() sql.Schema {
2727
return sql.Schema{
28-
sql.Column{"hash", sql.String},
29-
sql.Column{"size", sql.BigInteger},
28+
{Name: "hash", Type: sql.String, Nullable: false},
29+
{Name: "size", Type: sql.BigInteger, Nullable: false},
3030
}
3131
}
3232

Diff for: commits.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ func (commitsTable) Name() string {
2525

2626
func (commitsTable) Schema() sql.Schema {
2727
return sql.Schema{
28-
sql.Column{"hash", sql.String},
29-
sql.Column{"author_name", sql.String},
30-
sql.Column{"author_email", sql.String},
31-
sql.Column{"author_when", sql.TimestampWithTimezone},
32-
sql.Column{"comitter_name", sql.String},
33-
sql.Column{"comitter_email", sql.String},
34-
sql.Column{"comitter_when", sql.TimestampWithTimezone},
35-
sql.Column{"message", sql.String},
28+
{Name: "hash", Type: sql.String, Nullable: false},
29+
{Name: "author_name", Type: sql.String, Nullable: false},
30+
{Name: "author_email", Type: sql.String, Nullable: false},
31+
{Name: "author_when", Type: sql.TimestampWithTimezone, Nullable: false},
32+
{Name: "comitter_name", Type: sql.String, Nullable: false},
33+
{Name: "comitter_email", Type: sql.String, Nullable: false},
34+
{Name: "comitter_when", Type: sql.TimestampWithTimezone, Nullable: false},
35+
{Name: "message", Type: sql.String, Nullable: false},
3636
}
3737
}
3838

Diff for: internal/format/pretty.go

+6
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ func (pf *PrettyFormat) WriteHeader(headers []string) error {
2626
func (pf *PrettyFormat) Write(line []interface{}) error {
2727
rowStrings := []string{}
2828
for _, v := range line {
29+
if tv, ok := v.(string); ok {
30+
v = fmt.Sprintf(`"%s"`, tv)
31+
} else if v == nil {
32+
v = "NULL"
33+
}
34+
2935
rowStrings = append(rowStrings, fmt.Sprintf("%v", v))
3036
}
3137
pf.tw.Append(rowStrings)

Diff for: internal/format/pretty_test.go

+12-6
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,20 @@ func TestNewPrettyFormat(t *testing.T) {
99
w := bytes.NewBuffer(nil)
1010
testFormat(&formatSpec{
1111
Format: NewPrettyFormat(w),
12-
Result: "+----+----+----+\n| A | B | C |" +
13-
"\n+----+----+----+\n| a1 | b1 | c1 |" +
14-
"\n+----+----+----+\n",
12+
Result: `` +
13+
`+------+------+------+
14+
| A | B | C |
15+
+------+------+------+
16+
| "a1" | "b1" | "c1" |
17+
| "a1" | "b1" | NULL |
18+
| "a1" | "b1" | 1 |
19+
+------+------+------+
20+
`,
1521
Headers: []string{"a", "b", "c"},
1622
Lines: [][]interface{}{
17-
[]interface{}{
18-
"a1", "b1", "c1",
19-
},
23+
{"a1", "b1", "c1"},
24+
{"a1", "b1", nil},
25+
{"a1", "b1", 1},
2026
},
2127
}, w, t)
2228
}

Diff for: objects.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ func (objectsTable) Name() string {
2525

2626
func (objectsTable) Schema() sql.Schema {
2727
return sql.Schema{
28-
sql.Column{"id", sql.String},
29-
sql.Column{"type", sql.String},
28+
{Name: "id", Type: sql.String, Nullable: false},
29+
{Name: "type", Type: sql.String, Nullable: false},
3030
}
3131
}
3232

Diff for: references.go

+25-9
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,14 @@ func (referencesTable) Name() string {
2626

2727
func (referencesTable) Schema() sql.Schema {
2828
return sql.Schema{
29-
sql.Column{"hash", sql.String},
30-
sql.Column{"name", sql.String},
31-
sql.Column{"is_branch", sql.Boolean},
32-
sql.Column{"is_note", sql.Boolean},
33-
sql.Column{"is_remote", sql.Boolean},
34-
sql.Column{"is_tag", sql.Boolean},
35-
sql.Column{"target", sql.String},
29+
{Name: "name", Type: sql.String, Nullable: false},
30+
{Name: "type", Type: sql.String, Nullable: false},
31+
{Name: "hash", Type: sql.String, Nullable: true},
32+
{Name: "target", Type: sql.String, Nullable: true},
33+
{Name: "is_branch", Type: sql.Boolean, Nullable: false},
34+
{Name: "is_note", Type: sql.Boolean, Nullable: false},
35+
{Name: "is_remote", Type: sql.Boolean, Nullable: false},
36+
{Name: "is_tag", Type: sql.Boolean, Nullable: false},
3637
}
3738
}
3839

@@ -76,13 +77,28 @@ func (i *referenceIter) Close() error {
7677
}
7778

7879
func referenceToRow(c *plumbing.Reference) sql.Row {
80+
var (
81+
target, hash interface{}
82+
refType string
83+
)
84+
switch c.Type() {
85+
case plumbing.SymbolicReference:
86+
target = c.Target().String()
87+
refType = "symbolic-reference"
88+
case plumbing.HashReference:
89+
hash = c.Hash().String()
90+
refType = "hash-reference"
91+
case plumbing.InvalidReference:
92+
refType = "invalid-reference"
93+
}
7994
return sql.NewRow(
80-
c.Hash().String(),
8195
c.Name().String(),
96+
refType,
97+
hash,
98+
target,
8299
c.IsBranch(),
83100
c.IsNote(),
84101
c.IsRemote(),
85102
c.IsTag(),
86-
c.Target().String(),
87103
)
88104
}

Diff for: references_test.go

+16-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import (
44
"testing"
55

66
"gopkg.in/sqle/sqle.v0/sql"
7+
"gopkg.in/sqle/sqle.v0/sql/expression"
8+
"gopkg.in/sqle/sqle.v0/sql/plan"
79

810
"github.com/src-d/go-git-fixtures"
911
"github.com/stretchr/testify/assert"
@@ -31,9 +33,21 @@ func TestReferencesTable_RowIter(t *testing.T) {
3133
f := fixtures.Basic().One()
3234
table := getTable(assert, f, referencesTableName)
3335

34-
rows, err := sql.NodeToRows(table)
36+
rows, err := sql.NodeToRows(plan.NewSort(
37+
[]plan.SortField{{Column: expression.NewGetField(0, sql.String, "name", false), Order: plan.Ascending}},
38+
table))
3539
assert.Nil(err)
36-
assert.Len(rows, 7)
40+
41+
expected := []sql.Row{
42+
sql.NewRow("HEAD", "symbolic-reference", nil, "refs/heads/master", false, false, false, false),
43+
sql.NewRow("refs/heads/branch", "hash-reference", "e8d3ffab552895c19b9fcf7aa264d277cde33881", nil, true, false, false, false),
44+
sql.NewRow("refs/heads/master", "hash-reference", "6ecf0ef2c2dffb796033e5a02219af86ec6584e5", nil, true, false, false, false),
45+
sql.NewRow("refs/remotes/origin/HEAD", "symbolic-reference", nil, "refs/remotes/origin/master", false, false, true, false),
46+
sql.NewRow("refs/remotes/origin/branch", "hash-reference", "e8d3ffab552895c19b9fcf7aa264d277cde33881", nil, false, false, true, false),
47+
sql.NewRow("refs/remotes/origin/master", "hash-reference", "6ecf0ef2c2dffb796033e5a02219af86ec6584e5", nil, false, false, true, false),
48+
sql.NewRow("refs/tags/v1.0.0", "hash-reference", "6ecf0ef2c2dffb796033e5a02219af86ec6584e5", nil, false, false, false, true),
49+
}
50+
assert.Equal(expected, rows)
3751

3852
schema := table.Schema()
3953
for idx, row := range rows {

Diff for: tags.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ func (tagsTable) Name() string {
2525

2626
func (tagsTable) Schema() sql.Schema {
2727
return sql.Schema{
28-
sql.Column{"hash", sql.String},
29-
sql.Column{"name", sql.String},
30-
sql.Column{"tagger_email", sql.String},
31-
sql.Column{"tagger_name", sql.String},
32-
sql.Column{"tagger_when", sql.TimestampWithTimezone},
33-
sql.Column{"message", sql.String},
34-
sql.Column{"target", sql.String},
28+
{Name: "hash", Type: sql.String, Nullable: false},
29+
{Name: "name", Type: sql.String, Nullable: false},
30+
{Name: "tagger_email", Type: sql.String, Nullable: false},
31+
{Name: "tagger_name", Type: sql.String, Nullable: false},
32+
{Name: "tagger_when", Type: sql.TimestampWithTimezone, Nullable: false},
33+
{Name: "message", Type: sql.String, Nullable: false},
34+
{Name: "target", Type: sql.String, Nullable: false},
3535
}
3636
}
3737

Diff for: tree_entries.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ func (treeEntriesTable) Name() string {
2727

2828
func (treeEntriesTable) Schema() sql.Schema {
2929
return sql.Schema{
30-
sql.Column{"tree_hash", sql.String},
31-
sql.Column{"entry_hash", sql.String},
32-
sql.Column{"mode", sql.String},
33-
sql.Column{"name", sql.String},
30+
{Name: "tree_hash", Type: sql.String, Nullable: false},
31+
{Name: "entry_hash", Type: sql.String, Nullable: false},
32+
{Name: "mode", Type: sql.String, Nullable: false},
33+
{Name: "name", Type: sql.String, Nullable: false},
3434
}
3535
}
3636

0 commit comments

Comments
 (0)