Skip to content

Commit 41bb133

Browse files
committed
Moved Open/Close outside of exported calls
This requires that the calling code handles the lifetime of the storage
1 parent 44fe305 commit 41bb133

File tree

4 files changed

+19
-101
lines changed

4 files changed

+19
-101
lines changed

osin.go

Lines changed: 1 addition & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,6 @@ const (
5858
)
5959

6060
func bootstrapOsin(r repo) error {
61-
if err := r.Open(); err != nil {
62-
return err
63-
}
64-
defer r.Close()
65-
6661
exec := func(conn *sql.DB, qRaw string, par ...any) error {
6762
qSql := fmt.Sprintf(qRaw, par...)
6863
r.logFn("Executing %s", stringClean(qSql))
@@ -127,10 +122,6 @@ const getClients = "SELECT code, secret, redirect_uri, extra FROM clients;"
127122

128123
// ListClients
129124
func (r *repo) ListClients() ([]osin.Client, error) {
130-
if err := r.Open(); err != nil {
131-
return nil, err
132-
}
133-
defer r.Close()
134125

135126
result := make([]osin.Client, 0)
136127

@@ -192,10 +183,6 @@ func (r *repo) GetClient(id string) (osin.Client, error) {
192183
if id == "" {
193184
return nil, errors.NotFoundf("Empty client id")
194185
}
195-
if err := r.Open(); err != nil {
196-
return nil, err
197-
}
198-
defer r.Close()
199186

200187
ctx, _ := context.WithTimeout(context.Background(), defaultTimeout)
201188

@@ -212,10 +199,6 @@ func (r *repo) UpdateClient(c osin.Client) error {
212199
if c == nil {
213200
return nilClientErr
214201
}
215-
if err := r.Open(); err != nil {
216-
return err
217-
}
218-
defer r.Close()
219202

220203
data, err := assertToBytes(c.GetUserData())
221204
if err != nil {
@@ -250,10 +233,6 @@ func (r *repo) CreateClient(c osin.Client) error {
250233
if c == nil {
251234
return nilClientErr
252235
}
253-
if err := r.Open(); err != nil {
254-
return err
255-
}
256-
defer r.Close()
257236

258237
data, err := assertToBytes(c.GetUserData())
259238
if err != nil {
@@ -283,11 +262,6 @@ const removeClient = "DELETE FROM clients WHERE code=?"
283262

284263
// RemoveClient
285264
func (r *repo) RemoveClient(id string) error {
286-
if err := r.Open(); err != nil {
287-
return err
288-
}
289-
defer r.Close()
290-
291265
ctx, _ := context.WithTimeout(context.Background(), defaultTimeout)
292266
if _, err := r.conn.ExecContext(ctx, removeClient, id); err != nil {
293267
r.errFn("Failed deleting client id %s: %+s", id, err)
@@ -308,10 +282,7 @@ func (r *repo) SaveAuthorize(data *osin.AuthorizeData) error {
308282
if data == nil {
309283
return errors.Newf("invalid nil authorize to save")
310284
}
311-
if err := r.Open(); err != nil {
312-
return err
313-
}
314-
defer r.Close()
285+
315286
extra, err := assertToBytes(data.UserData)
316287
if err != nil {
317288
r.errFn("Authorize id %s: %+s", data.Client.GetId(), err)
@@ -384,10 +355,6 @@ func (r *repo) LoadAuthorize(code string) (*osin.AuthorizeData, error) {
384355
if code == "" {
385356
return nil, errors.Newf("Empty authorize code")
386357
}
387-
if err := r.Open(); err != nil {
388-
return nil, err
389-
}
390-
defer r.Close()
391358

392359
ctx, _ := context.WithTimeout(context.Background(), defaultTimeout)
393360
return loadAuthorize(r.conn, ctx, code)
@@ -397,11 +364,6 @@ const removeAuthorize = "DELETE FROM authorize WHERE code=?"
397364

398365
// RemoveAuthorize revokes or deletes the authorization code.
399366
func (r *repo) RemoveAuthorize(code string) error {
400-
if err := r.Open(); err != nil {
401-
return err
402-
}
403-
defer r.Close()
404-
405367
ctx, _ := context.WithTimeout(context.Background(), defaultTimeout)
406368
if _, err := r.conn.ExecContext(ctx, removeAuthorize, code); err != nil {
407369
r.errFn("Failed deleting authorize data code %s: %+s", code, err)
@@ -434,10 +396,6 @@ func (r *repo) SaveAccess(data *osin.AccessData) error {
434396
r.errFn("Authorize id %s: %+s", data.Client.GetId(), err)
435397
return err
436398
}
437-
if err = r.Open(); err != nil {
438-
return err
439-
}
440-
defer r.Close()
441399

442400
ctx, _ := context.WithTimeout(context.TODO(), defaultTimeout)
443401
params := []interface{}{
@@ -529,10 +487,6 @@ func (r *repo) LoadAccess(code string) (*osin.AccessData, error) {
529487
if code == "" {
530488
return nil, errors.Newf("Empty access code")
531489
}
532-
if err := r.Open(); err != nil {
533-
return nil, err
534-
}
535-
defer r.Close()
536490

537491
ctx, _ := context.WithTimeout(context.Background(), defaultTimeout)
538492
return loadAccess(r.conn, ctx, code)
@@ -542,11 +496,6 @@ const removeAccess = "DELETE FROM access WHERE token=?"
542496

543497
// RemoveAccess revokes or deletes an AccessData.
544498
func (r *repo) RemoveAccess(code string) error {
545-
if err := r.Open(); err != nil {
546-
return err
547-
}
548-
defer r.Close()
549-
550499
ctx, _ := context.WithTimeout(context.Background(), defaultTimeout)
551500
_, err := r.conn.ExecContext(ctx, removeAccess, code)
552501
if err != nil {
@@ -564,10 +513,6 @@ func (r *repo) LoadRefresh(code string) (*osin.AccessData, error) {
564513
if code == "" {
565514
return nil, errors.Newf("Empty refresh code")
566515
}
567-
if err := r.Open(); err != nil {
568-
return nil, err
569-
}
570-
defer r.Close()
571516

572517
ctx, _ := context.WithTimeout(context.Background(), defaultTimeout)
573518
var access sql.NullString
@@ -586,11 +531,6 @@ const removeRefresh = "DELETE FROM refresh WHERE token=?"
586531

587532
// RemoveRefresh revokes or deletes refresh AccessData.
588533
func (r *repo) RemoveRefresh(code string) error {
589-
if err := r.Open(); err != nil {
590-
return err
591-
}
592-
defer r.Close()
593-
594534
ctx, _ := context.WithTimeout(context.Background(), defaultTimeout)
595535

596536
_, err := r.conn.ExecContext(ctx, removeRefresh, code)

osin_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ type initFn func(db *sql.DB) error
1616
func initializeOsinDb(t *testing.T, fns ...initFn) repo {
1717
dbPath := filepath.Join(t.TempDir(), "storage.sqlite")
1818
r := repo{path: dbPath, logFn: t.Logf, errFn: t.Errorf}
19+
_ = r.Open()
20+
1921
be.NilErr(t, bootstrapOsin(r))
2022

21-
be.NilErr(t, r.Open())
2223
for _, fn := range fns {
2324
be.NilErr(t, fn(r.conn))
2425
}
@@ -173,6 +174,8 @@ func Test_repo_ListClients(t *testing.T) {
173174
for _, tt := range tests {
174175
t.Run(tt.name, func(t *testing.T) {
175176
s := initializeOsinDb(t, tt.init...)
177+
defer s.Close()
178+
176179
got, err := s.ListClients()
177180
checkErrorsEqual(t, tt.err, err)
178181
be.DeepEqual(t, tt.want, got)

repository.go

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -162,11 +162,6 @@ func getCollectionTableFromFilter(f *filters.Filters) vocab.CollectionPath {
162162

163163
// Load
164164
func (r *repo) Load(i vocab.IRI, ff ...filters.Check) (vocab.Item, error) {
165-
if err := r.Open(); err != nil {
166-
return nil, err
167-
}
168-
defer r.Close()
169-
170165
f, err := filters.FiltersFromIRI(i)
171166
if err != nil {
172167
return nil, err
@@ -189,10 +184,6 @@ var (
189184

190185
// Save
191186
func (r *repo) Save(it vocab.Item) (vocab.Item, error) {
192-
if err := r.Open(); err != nil {
193-
return nil, err
194-
}
195-
defer r.Close()
196187
return save(r, it)
197188
}
198189

@@ -206,10 +197,6 @@ func (r *repo) Create(col vocab.CollectionInterface) (vocab.CollectionInterface,
206197
if col.GetLink() == "" {
207198
return col, nilItemIRIErr
208199
}
209-
if err := r.Open(); err != nil {
210-
return col, err
211-
}
212-
defer r.Close()
213200
return r.createCollection(col)
214201
}
215202

@@ -301,10 +288,6 @@ func (r *repo) queryRow(query string, args ...any) *sql.Row {
301288

302289
// RemoveFrom
303290
func (r *repo) RemoveFrom(col vocab.IRI, it vocab.Item) error {
304-
if err := r.Open(); err != nil {
305-
return err
306-
}
307-
defer r.Close()
308291
return r.removeFrom(col, it)
309292
}
310293

@@ -392,11 +375,6 @@ func (r *repo) addTo(col vocab.IRI, it vocab.Item) error {
392375

393376
// AddTo
394377
func (r *repo) AddTo(col vocab.IRI, it vocab.Item) error {
395-
if err := r.Open(); err != nil {
396-
return err
397-
}
398-
defer r.Close()
399-
400378
return r.addTo(col, it)
401379
}
402380

@@ -405,11 +383,6 @@ func (r *repo) Delete(it vocab.Item) error {
405383
if vocab.IsNil(it) {
406384
return nil
407385
}
408-
err := r.Open()
409-
defer r.Close()
410-
if err != nil {
411-
return err
412-
}
413386

414387
if it.IsCollection() {
415388
err := vocab.OnCollectionIntf(it, func(c vocab.CollectionInterface) error {
@@ -455,12 +428,6 @@ func (r *repo) PasswordCheck(it vocab.Item, pw []byte) error {
455428

456429
// LoadMetadata
457430
func (r *repo) LoadMetadata(iri vocab.IRI) (*Metadata, error) {
458-
err := r.Open()
459-
if err != nil {
460-
return nil, err
461-
}
462-
defer r.Close()
463-
464431
m := new(Metadata)
465432
raw, err := loadMetadataFromTable(r.conn, iri)
466433
if err != nil {
@@ -475,12 +442,6 @@ func (r *repo) LoadMetadata(iri vocab.IRI) (*Metadata, error) {
475442

476443
// SaveMetadata
477444
func (r *repo) SaveMetadata(m Metadata, iri vocab.IRI) error {
478-
err := r.Open()
479-
if err != nil {
480-
return err
481-
}
482-
defer r.Close()
483-
484445
entryBytes, err := encodeFn(m)
485446
if err != nil {
486447
return errors.Annotatef(err, "Could not marshal metadata")

repository_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,9 @@ func Test_repo_Load(t *testing.T) {
229229
logFn: t.Logf,
230230
errFn: t.Errorf,
231231
}
232+
_ = r.Open()
233+
defer r.Close()
234+
232235
got, err := r.Load(tt.arg)
233236
checkErrorsEqual(t, tt.err, err)
234237

@@ -280,6 +283,8 @@ func Test_repo_Save(t *testing.T) {
280283
path := saveMocks(t, base, tt.root)
281284

282285
r := repo{path: path, logFn: t.Logf, errFn: t.Errorf}
286+
_ = r.Open()
287+
defer r.Close()
283288

284289
got, err := r.Save(tt.arg)
285290
checkErrorsEqual(t, tt.err, err)
@@ -372,6 +377,9 @@ func Test_repo_Create(t *testing.T) {
372377
path := saveMocks(t, base, tt.root)
373378

374379
r := repo{path: path, logFn: t.Logf, errFn: t.Errorf}
380+
_ = r.Open()
381+
defer r.Close()
382+
375383
got, err := r.Create(tt.arg)
376384
checkErrorsEqual(t, tt.err, err)
377385
be.True(t, vocab.ItemsEqual(tt.want, got))
@@ -421,6 +429,9 @@ func Test_repo_AddTo(t *testing.T) {
421429
mockCol := orderedCollection(tt.args.col)
422430

423431
r := repo{path: path, logFn: t.Logf, errFn: t.Errorf}
432+
_ = r.Open()
433+
defer r.Close()
434+
424435
col, err := r.Create(mockCol)
425436
be.NilErr(t, err)
426437
be.Equal(t, tt.args.col, col.GetLink())
@@ -518,6 +529,9 @@ func Test_repo_Delete(t *testing.T) {
518529
path := saveMocks(t, base, tt.root)
519530

520531
r := repo{path: path, logFn: t.Logf, errFn: t.Errorf}
532+
_ = r.Open()
533+
defer r.Close()
534+
521535
err := r.Delete(tt.arg)
522536
checkErrorsEqual(t, tt.err, err)
523537
if tt.arg == nil {

0 commit comments

Comments
 (0)