Skip to content

Commit 9d42845

Browse files
committed
Modify references table to match the document
From the doc: > All the references will be resolved to a commit. If the reference is not pointing to a commit, it will not be on the table. Schema: * repository_id: not null, string * name: not null, string * hash: not null, string Signed-off-by: Javi Fontan <[email protected]>
1 parent 00e570d commit 9d42845

File tree

2 files changed

+33
-42
lines changed

2 files changed

+33
-42
lines changed

references.go

Lines changed: 27 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,9 @@ func (referencesTable) Name() string {
2525

2626
func (referencesTable) Schema() sql.Schema {
2727
return sql.Schema{
28+
{Name: "repository_id", Type: sql.Text, Nullable: false},
2829
{Name: "name", Type: sql.Text, Nullable: false},
29-
{Name: "type", Type: sql.Text, Nullable: false},
30-
{Name: "hash", Type: sql.Text, Nullable: true},
31-
{Name: "target", Type: sql.Text, Nullable: true},
32-
{Name: "is_branch", Type: sql.Boolean, Nullable: false},
33-
{Name: "is_note", Type: sql.Boolean, Nullable: false},
34-
{Name: "is_remote", Type: sql.Boolean, Nullable: false},
35-
{Name: "is_tag", Type: sql.Boolean, Nullable: false},
30+
{Name: "hash", Type: sql.Text, Nullable: false},
3631
}
3732
}
3833

@@ -60,7 +55,8 @@ func (referencesTable) Children() []sql.Node {
6055
}
6156

6257
type referenceIter struct {
63-
iter storer.ReferenceIter
58+
repositoryID string
59+
iter storer.ReferenceIter
6460
}
6561

6662
func (i *referenceIter) NewIterator(repo *Repository) (RowRepoIter, error) {
@@ -69,16 +65,30 @@ func (i *referenceIter) NewIterator(repo *Repository) (RowRepoIter, error) {
6965
return nil, err
7066
}
7167

72-
return &referenceIter{iter: iter}, nil
68+
return &referenceIter{
69+
repositoryID: repo.ID,
70+
iter: iter,
71+
}, nil
7372
}
7473

7574
func (i *referenceIter) Next() (sql.Row, error) {
76-
o, err := i.iter.Next()
77-
if err != nil {
78-
return nil, err
75+
var (
76+
o *plumbing.Reference
77+
err error
78+
)
79+
80+
for {
81+
o, err = i.iter.Next()
82+
if err != nil {
83+
return nil, err
84+
}
85+
86+
if o.Type() == plumbing.HashReference {
87+
break
88+
}
7989
}
8090

81-
return referenceToRow(o), nil
91+
return referenceToRow(i.repositoryID, o), nil
8292
}
8393

8494
func (i *referenceIter) Close() error {
@@ -89,29 +99,12 @@ func (i *referenceIter) Close() error {
8999
return nil
90100
}
91101

92-
func referenceToRow(c *plumbing.Reference) sql.Row {
93-
var (
94-
target, hash interface{}
95-
refType string
96-
)
97-
switch c.Type() {
98-
case plumbing.SymbolicReference:
99-
target = c.Target().String()
100-
refType = "symbolic-reference"
101-
case plumbing.HashReference:
102-
hash = c.Hash().String()
103-
refType = "hash-reference"
104-
case plumbing.InvalidReference:
105-
refType = "invalid-reference"
106-
}
102+
func referenceToRow(repositoryID string, c *plumbing.Reference) sql.Row {
103+
hash := c.Hash().String()
104+
107105
return sql.NewRow(
106+
repositoryID,
108107
c.Name().String(),
109-
refType,
110108
hash,
111-
target,
112-
c.Name().IsBranch(),
113-
c.Name().IsNote(),
114-
c.Name().IsRemote(),
115-
c.Name().IsTag(),
116109
)
117110
}

references_test.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,13 @@ func TestReferencesTable_RowIter(t *testing.T) {
3939
require.Nil(err)
4040

4141
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),
42+
sql.NewRow("repo", "refs/heads/branch", "e8d3ffab552895c19b9fcf7aa264d277cde33881"),
43+
sql.NewRow("repo", "refs/heads/master", "6ecf0ef2c2dffb796033e5a02219af86ec6584e5"),
44+
sql.NewRow("repo", "refs/remotes/origin/branch", "e8d3ffab552895c19b9fcf7aa264d277cde33881"),
45+
sql.NewRow("repo", "refs/remotes/origin/master", "6ecf0ef2c2dffb796033e5a02219af86ec6584e5"),
46+
sql.NewRow("repo", "refs/tags/v1.0.0", "6ecf0ef2c2dffb796033e5a02219af86ec6584e5"),
4947
}
50-
require.Equal(expected, rows)
48+
require.ElementsMatch(expected, rows)
5149

5250
schema := table.Schema()
5351
for idx, row := range rows {

0 commit comments

Comments
 (0)