mirror of
https://github.com/turbot/steampipe.git
synced 2026-02-18 04:00:20 -05:00
* Provide feedback for failed prepared statements * Move error functions to error_helpers * Make maintenance client retriable
38 lines
710 B
Go
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())
|
|
}
|