Files
steampipe/pkg/migrate/migrate.go
kaidaguerre 404dd35e21 Update database code to use pgx interface so we can leverage the connection pool hook functions to pre-warm connections. Closes #2422 (#2438)
* Provide feedback for failed prepared statements
* Move error functions to error_helpers
* Make maintenance client retriable
2022-10-05 12:38:57 +01:00

38 lines
710 B
Go

package migrate
import (
"encoding/json"
"os"
"github.com/turbot/steampipe/pkg/error_helpers"
)
type Migrateable interface {
MigrateFrom() Migrateable
IsValid() bool
Save() error
}
func Migrate(migrateable Migrateable, oldPath string) error {
stateFileContent, err := os.ReadFile(oldPath)
if err != nil {
if os.IsNotExist(err) {
return nil
}
return err
}
// Deserialize into old struct
err = json.Unmarshal(stateFileContent, &migrateable)
if err != nil {
return err
}
// check whether we successfully derserialized into the new struct
if migrateable.IsValid() {
return nil
}
x := migrateable.MigrateFrom()
return error_helpers.CombineErrors(os.Remove(oldPath), x.Save())
}