@@ -25,14 +25,9 @@ func (referencesTable) Name() string {
25
25
26
26
func (referencesTable ) Schema () sql.Schema {
27
27
return sql.Schema {
28
+ {Name : "repository_id" , Type : sql .Text , Nullable : false },
28
29
{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 },
36
31
}
37
32
}
38
33
@@ -60,7 +55,8 @@ func (referencesTable) Children() []sql.Node {
60
55
}
61
56
62
57
type referenceIter struct {
63
- iter storer.ReferenceIter
58
+ repositoryID string
59
+ iter storer.ReferenceIter
64
60
}
65
61
66
62
func (i * referenceIter ) NewIterator (repo * Repository ) (RowRepoIter , error ) {
@@ -69,16 +65,30 @@ func (i *referenceIter) NewIterator(repo *Repository) (RowRepoIter, error) {
69
65
return nil , err
70
66
}
71
67
72
- return & referenceIter {iter : iter }, nil
68
+ return & referenceIter {
69
+ repositoryID : repo .ID ,
70
+ iter : iter ,
71
+ }, nil
73
72
}
74
73
75
74
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
+ }
79
89
}
80
90
81
- return referenceToRow (o ), nil
91
+ return referenceToRow (i . repositoryID , o ), nil
82
92
}
83
93
84
94
func (i * referenceIter ) Close () error {
@@ -89,29 +99,12 @@ func (i *referenceIter) Close() error {
89
99
return nil
90
100
}
91
101
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
+
107
105
return sql .NewRow (
106
+ repositoryID ,
108
107
c .Name ().String (),
109
- refType ,
110
108
hash ,
111
- target ,
112
- c .Name ().IsBranch (),
113
- c .Name ().IsNote (),
114
- c .Name ().IsRemote (),
115
- c .Name ().IsTag (),
116
109
)
117
110
}
0 commit comments