github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/pkg/ociinstaller/db.go (about) 1 package ociinstaller 2 3 import ( 4 "context" 5 "log" 6 "path/filepath" 7 "time" 8 9 "github.com/turbot/steampipe/pkg/constants" 10 versionfile "github.com/turbot/steampipe/pkg/ociinstaller/versionfile" 11 ) 12 13 // InstallDB :: Install Postgres files fom OCI image 14 func InstallDB(ctx context.Context, dblocation string) (string, error) { 15 tempDir := NewTempDir(dblocation) 16 defer func() { 17 if err := tempDir.Delete(); err != nil { 18 log.Printf("[TRACE] Failed to delete temp dir '%s' after installing db files: %s", tempDir, err) 19 } 20 }() 21 22 imageDownloader := NewOciDownloader() 23 24 // Download the blobs 25 image, err := imageDownloader.Download(ctx, NewSteampipeImageRef(constants.PostgresImageRef), ImageTypeDatabase, tempDir.Path) 26 if err != nil { 27 return "", err 28 } 29 30 // install the files 31 if err = installDbFiles(image, tempDir.Path, dblocation); err != nil { 32 return "", err 33 } 34 35 if err := updateVersionFileDB(image); err != nil { 36 return string(image.OCIDescriptor.Digest), err 37 } 38 return string(image.OCIDescriptor.Digest), nil 39 } 40 41 func updateVersionFileDB(image *SteampipeImage) error { 42 timeNow := versionfile.FormatTime(time.Now()) 43 v, err := versionfile.LoadDatabaseVersionFile() 44 if err != nil { 45 return err 46 } 47 v.EmbeddedDB.Version = image.Config.Database.Version 48 v.EmbeddedDB.Name = "embeddedDB" 49 v.EmbeddedDB.ImageDigest = string(image.OCIDescriptor.Digest) 50 v.EmbeddedDB.InstalledFrom = image.ImageRef.requestedRef 51 v.EmbeddedDB.LastCheckedDate = timeNow 52 v.EmbeddedDB.InstallDate = timeNow 53 return v.Save() 54 } 55 56 func installDbFiles(image *SteampipeImage, tempDir string, dest string) error { 57 source := filepath.Join(tempDir, image.Database.ArchiveDir) 58 return moveFolderWithinPartition(source, dest) 59 }