1
- package store
1
+ package sqlite
2
2
3
3
import (
4
4
"context"
5
5
"database/sql"
6
6
"fmt"
7
7
8
8
_ "github.com/mattn/go-sqlite3"
9
- "github.com/operator-framework/operator-lifecycle-manager /pkg/controller /registry"
9
+ "github.com/operator-framework/operator-registry /pkg/registry"
10
10
)
11
11
12
- type ChannelEntry struct {
13
- packageName string
14
- channelName string
15
- bundleName string
16
- replaces string
17
- }
18
-
19
- type Query interface {
20
- ListPackages (context context.Context ) ([]string , error )
21
- GetPackage (context context.Context , name string ) (* registry.PackageManifest , error )
22
- GetBundleForChannel (context context.Context , pkgName string , channelName string ) (string , error )
23
- GetBundleForName (context context.Context , name string ) (string , error )
24
- // Get all channel entries that say they replace this one
25
- GetChannelEntriesThatReplace (context context.Context , name string ) (entries []ChannelEntry , err error )
26
- // Get the bundle in a package/channel that replace this one
27
- GetBundleThatReplaces (context context.Context , name , pkgName , channelName string ) (string , error )
28
- // Get all channel entries that provide an api
29
- GetChannelEntriesThatProvide (context context.Context , groupOrName , version , kind string ) (entries []ChannelEntry , err error )
30
- // Get latest channel entries that provide an api
31
- GetLatestChannelEntriesThatProvide (context context.Context , groupOrName , version , kind string ) (entries []ChannelEntry , err error )
32
- // Get the the latest bundle that provides the API in a default channel
33
- GetBundleThatProvides (context context.Context , groupOrName , version , kind string ) (string , error )
34
- }
35
12
36
13
type SQLQuerier struct {
37
14
db * sql.DB
38
15
}
39
16
40
- var _ Query = & SQLQuerier {}
17
+ var _ registry. Query = & SQLQuerier {}
41
18
42
19
func NewSQLLiteQuerier (dbFilename string ) (* SQLQuerier , error ) {
43
20
db , err := sql .Open ("sqlite3" , "file:" + dbFilename + "?immutable=true" )
@@ -145,7 +122,7 @@ func (s *SQLQuerier) GetBundleForName(context context.Context, name string) (str
145
122
return bundle .String , nil
146
123
}
147
124
148
- func (s * SQLQuerier ) GetChannelEntriesThatReplace (context context.Context , name string ) (entries []ChannelEntry , err error ) {
125
+ func (s * SQLQuerier ) GetChannelEntriesThatReplace (context context.Context , name string ) (entries []registry. ChannelEntry , err error ) {
149
126
query := `SELECT DISTINCT channel_entry.package_name, channel_entry.channel_name, channel_entry.operatorbundle_name
150
127
FROM channel_entry
151
128
LEFT OUTER JOIN channel_entry replaces ON channel_entry.replaces = replaces.entry_id
@@ -155,7 +132,7 @@ func (s *SQLQuerier) GetChannelEntriesThatReplace(context context.Context, name
155
132
return
156
133
}
157
134
158
- entries = []ChannelEntry {}
135
+ entries = []registry. ChannelEntry {}
159
136
160
137
for rows .Next () {
161
138
var pkgNameSQL sql.NullString
@@ -165,12 +142,11 @@ func (s *SQLQuerier) GetChannelEntriesThatReplace(context context.Context, name
165
142
if err = rows .Scan (& pkgNameSQL , & channelNameSQL , & bundleNameSQL ); err != nil {
166
143
return
167
144
}
168
-
169
- entries = append (entries , ChannelEntry {
170
- packageName : pkgNameSQL .String ,
171
- channelName : channelNameSQL .String ,
172
- bundleName : bundleNameSQL .String ,
173
- replaces : name ,
145
+ entries = append (entries , registry.ChannelEntry {
146
+ PackageName : pkgNameSQL .String ,
147
+ ChannelName : channelNameSQL .String ,
148
+ BundleName : bundleNameSQL .String ,
149
+ Replaces : name ,
174
150
})
175
151
}
176
152
if len (entries ) == 0 {
@@ -201,7 +177,7 @@ func (s *SQLQuerier) GetBundleThatReplaces(context context.Context, name, pkgNam
201
177
return bundle .String , nil
202
178
}
203
179
204
- func (s * SQLQuerier ) GetChannelEntriesThatProvide (context context.Context , groupOrName , version , kind string ) (entries []ChannelEntry , err error ) {
180
+ func (s * SQLQuerier ) GetChannelEntriesThatProvide (context context.Context , groupOrName , version , kind string ) (entries []registry. ChannelEntry , err error ) {
205
181
query := `SELECT DISTINCT channel_entry.package_name, channel_entry.channel_name, channel_entry.operatorbundle_name, replaces.operatorbundle_name
206
182
FROM channel_entry
207
183
INNER JOIN api_provider ON channel_entry.entry_id = api_provider.channel_entry_id
@@ -213,7 +189,7 @@ func (s *SQLQuerier) GetChannelEntriesThatProvide(context context.Context, group
213
189
return
214
190
}
215
191
216
- entries = []ChannelEntry {}
192
+ entries = []registry. ChannelEntry {}
217
193
218
194
for rows .Next () {
219
195
var pkgNameSQL sql.NullString
@@ -224,11 +200,11 @@ func (s *SQLQuerier) GetChannelEntriesThatProvide(context context.Context, group
224
200
return
225
201
}
226
202
227
- entries = append (entries , ChannelEntry {
228
- packageName : pkgNameSQL .String ,
229
- channelName : channelNameSQL .String ,
230
- bundleName : bundleNameSQL .String ,
231
- replaces : replacesSQL .String ,
203
+ entries = append (entries , registry. ChannelEntry {
204
+ PackageName : pkgNameSQL .String ,
205
+ ChannelName : channelNameSQL .String ,
206
+ BundleName : bundleNameSQL .String ,
207
+ Replaces : replacesSQL .String ,
232
208
})
233
209
}
234
210
if len (entries ) == 0 {
@@ -239,7 +215,7 @@ func (s *SQLQuerier) GetChannelEntriesThatProvide(context context.Context, group
239
215
}
240
216
241
217
// Get latest channel entries that provide an api
242
- func (s * SQLQuerier ) GetLatestChannelEntriesThatProvide (context context.Context , groupOrName , version , kind string ) (entries []ChannelEntry , err error ) {
218
+ func (s * SQLQuerier ) GetLatestChannelEntriesThatProvide (context context.Context , groupOrName , version , kind string ) (entries []registry. ChannelEntry , err error ) {
243
219
query := `SELECT DISTINCT channel_entry.package_name, channel_entry.channel_name, channel_entry.operatorbundle_name, replaces.operatorbundle_name, MIN(channel_entry.depth)
244
220
FROM channel_entry
245
221
INNER JOIN api_provider ON channel_entry.entry_id = api_provider.channel_entry_id
@@ -251,7 +227,7 @@ func (s *SQLQuerier) GetLatestChannelEntriesThatProvide(context context.Context,
251
227
return nil , err
252
228
}
253
229
254
- entries = []ChannelEntry {}
230
+ entries = []registry. ChannelEntry {}
255
231
256
232
for rows .Next () {
257
233
var pkgNameSQL sql.NullString
@@ -263,11 +239,11 @@ func (s *SQLQuerier) GetLatestChannelEntriesThatProvide(context context.Context,
263
239
return nil , err
264
240
}
265
241
266
- entries = append (entries , ChannelEntry {
267
- packageName : pkgNameSQL .String ,
268
- channelName : channelNameSQL .String ,
269
- bundleName : bundleNameSQL .String ,
270
- replaces : replacesSQL .String ,
242
+ entries = append (entries , registry. ChannelEntry {
243
+ PackageName : pkgNameSQL .String ,
244
+ ChannelName : channelNameSQL .String ,
245
+ BundleName : bundleNameSQL .String ,
246
+ Replaces : replacesSQL .String ,
271
247
})
272
248
}
273
249
if len (entries ) == 0 {
0 commit comments