Skip to content

Commit 558f9ed

Browse files
committed
use in-memory database to convert package manifest directory
Signed-off-by: Joe Lanford <[email protected]>
1 parent a413d20 commit 558f9ed

File tree

1 file changed

+17
-21
lines changed

1 file changed

+17
-21
lines changed

internal/action/render.go

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,13 @@ func (r Render) renderReference(ctx context.Context, ref string) (*declcfg.Decla
144144
if !r.AllowedRefMask.Allowed(RefSqliteFile) {
145145
return nil, fmt.Errorf("cannot render sqlite file: %w", ErrNotAllowed)
146146
}
147-
return sqliteToDeclcfg(ctx, ref)
147+
148+
db, err := sqlite.Open(ref)
149+
if err != nil {
150+
return nil, err
151+
}
152+
defer db.Close()
153+
return sqliteToDeclcfg(ctx, db)
148154
}
149155

150156
func (r Render) imageToDeclcfg(ctx context.Context, imageRef string) (*declcfg.DeclarativeConfig, error) {
@@ -170,7 +176,12 @@ func (r Render) imageToDeclcfg(ctx context.Context, imageRef string) (*declcfg.D
170176
if !r.AllowedRefMask.Allowed(RefSqliteImage) {
171177
return nil, fmt.Errorf("cannot render sqlite image: %w", ErrNotAllowed)
172178
}
173-
cfg, err = sqliteToDeclcfg(ctx, filepath.Join(tmpDir, dbFile))
179+
db, err := sqlite.Open(filepath.Join(tmpDir, dbFile))
180+
if err != nil {
181+
return nil, err
182+
}
183+
defer db.Close()
184+
cfg, err = sqliteToDeclcfg(ctx, db)
174185
if err != nil {
175186
return nil, err
176187
}
@@ -222,13 +233,7 @@ func checkDBFile(ref string) error {
222233
return nil
223234
}
224235

225-
func sqliteToDeclcfg(ctx context.Context, dbFile string) (*declcfg.DeclarativeConfig, error) {
226-
db, err := sqlite.Open(dbFile)
227-
if err != nil {
228-
return nil, err
229-
}
230-
defer db.Close()
231-
236+
func sqliteToDeclcfg(ctx context.Context, db *sql.DB) (*declcfg.DeclarativeConfig, error) {
232237
migrator, err := sqlite.NewSQLLiteMigrator(db)
233238
if err != nil {
234239
return nil, err
@@ -419,26 +424,17 @@ func isPackageManifest(entries []os.DirEntry) bool {
419424
}
420425

421426
func renderPackageManifest(ctx context.Context, ref string) (*declcfg.DeclarativeConfig, error) {
422-
tmpDB, err := os.CreateTemp("", "opm-render-pm-")
423-
if err != nil {
424-
return nil, err
425-
}
426-
if err := tmpDB.Close(); err != nil {
427-
return nil, err
428-
}
429-
430-
db, err := sqlite.Open(tmpDB.Name())
427+
db, err := sql.Open("sqlite3", fmt.Sprintf("file:%s?mode=memory&cache=shared&_foreign_keys=on", ref))
431428
if err != nil {
432429
return nil, err
433430
}
434431
defer db.Close()
435-
defer os.RemoveAll(tmpDB.Name())
436432

437433
dbLoader, err := sqlite.NewSQLLiteLoader(db)
438434
if err != nil {
439435
return nil, err
440436
}
441-
if err := dbLoader.Migrate(context.TODO()); err != nil {
437+
if err := dbLoader.Migrate(ctx); err != nil {
442438
return nil, err
443439
}
444440

@@ -447,5 +443,5 @@ func renderPackageManifest(ctx context.Context, ref string) (*declcfg.Declarativ
447443
return nil, fmt.Errorf("error loading manifests from directory: %s", err)
448444
}
449445

450-
return sqliteToDeclcfg(ctx, tmpDB.Name())
446+
return sqliteToDeclcfg(ctx, db)
451447
}

0 commit comments

Comments
 (0)