Refactor and simplify store upgrade proc running
This commit is contained in:
@@ -33,12 +33,6 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type (
|
||||
storeUpgrader interface {
|
||||
Upgrade(context.Context, *zap.Logger) error
|
||||
}
|
||||
)
|
||||
|
||||
const (
|
||||
bootLevelWaiting = iota
|
||||
bootLevelSetup
|
||||
@@ -141,10 +135,7 @@ func (app *CortezaApp) InitStore(ctx context.Context) (err error) {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if upgradableStore, ok := app.Store.(storeUpgrader); !ok {
|
||||
app.Log.Debug("store does not support upgrades")
|
||||
} else if !app.Opt.Upgrade.Always {
|
||||
if !app.Opt.Upgrade.Always {
|
||||
app.Log.Debug("store upgrade skipped (UPGRADE_ALWAYS=false)")
|
||||
} else {
|
||||
ctx = actionlog.RequestOriginToContext(ctx, actionlog.RequestOrigin_APP_Upgrade)
|
||||
@@ -159,7 +150,7 @@ func (app *CortezaApp) InitStore(ctx context.Context) (err error) {
|
||||
|
||||
}
|
||||
|
||||
if err = upgradableStore.Upgrade(ctx, log); err != nil {
|
||||
if err = store.Upgrade(ctx, log, app.Store); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,14 +25,9 @@ func TestCharts(t *testing.T) {
|
||||
t.Fatalf("failed to init sqlite in-memory db: %v", err)
|
||||
}
|
||||
|
||||
func(s interface{}) {
|
||||
err = s.(interface {
|
||||
Upgrade(context.Context, *zap.Logger) error
|
||||
}).Upgrade(ctx, zap.NewNop())
|
||||
if err != nil {
|
||||
t.Fatalf("failed to upgrade store: %v", err)
|
||||
}
|
||||
}(s)
|
||||
if err = store.Upgrade(ctx, zap.NewNop(), s); err != nil {
|
||||
t.Fatalf("failed to upgrade store: %v", err)
|
||||
}
|
||||
|
||||
if err = s.TruncateComposeNamespaces(ctx); err != nil {
|
||||
t.Fatalf("failed to truncate compose namespaces: %v", err)
|
||||
|
||||
@@ -25,14 +25,9 @@ func TestModules(t *testing.T) {
|
||||
t.Fatalf("failed to init sqlite in-memory db: %v", err)
|
||||
}
|
||||
|
||||
func(s interface{}) {
|
||||
err = s.(interface {
|
||||
Upgrade(context.Context, *zap.Logger) error
|
||||
}).Upgrade(ctx, zap.NewNop())
|
||||
if err != nil {
|
||||
t.Fatalf("failed to upgrade store: %v", err)
|
||||
}
|
||||
}(s)
|
||||
if err = store.Upgrade(ctx, zap.NewNop(), s); err != nil {
|
||||
t.Fatalf("failed to upgrade store: %v", err)
|
||||
}
|
||||
|
||||
if err = s.TruncateComposeNamespaces(ctx); err != nil {
|
||||
t.Fatalf("failed to truncate compose namespaces: %v", err)
|
||||
|
||||
@@ -33,10 +33,6 @@ func Test_Store(t *testing.T) {
|
||||
dsnEnvKey string
|
||||
init store.ConnectorFn
|
||||
}
|
||||
|
||||
upgrader interface {
|
||||
Upgrade(context.Context, *zap.Logger) error
|
||||
}
|
||||
)
|
||||
|
||||
logger.Init()
|
||||
@@ -97,12 +93,10 @@ func Test_Store(t *testing.T) {
|
||||
return
|
||||
}
|
||||
|
||||
if up, ok := genericStore.(upgrader); ok {
|
||||
err = up.Upgrade(ctx, zap.NewNop())
|
||||
if err != nil {
|
||||
t.Errorf("failed to upgrade %s store: %s", s.name, err.Error())
|
||||
return
|
||||
}
|
||||
err = store.Upgrade(ctx, zap.NewNop(), genericStore)
|
||||
if err != nil {
|
||||
t.Errorf("failed to upgrade %s store: %s", s.name, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
testAllGenerated(t, genericStore)
|
||||
|
||||
22
store/upgrade.go
Normal file
22
store/upgrade.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package store
|
||||
|
||||
import (
|
||||
"context"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type (
|
||||
storeUpgrader interface {
|
||||
Upgrade(context.Context, *zap.Logger) error
|
||||
}
|
||||
)
|
||||
|
||||
func Upgrade(ctx context.Context, log *zap.Logger, s Storer) error {
|
||||
upgradableStore, ok := s.(storeUpgrader)
|
||||
if !ok {
|
||||
log.Debug("store does not support upgrades")
|
||||
return nil
|
||||
}
|
||||
|
||||
return upgradableStore.Upgrade(ctx, log)
|
||||
}
|
||||
@@ -37,9 +37,7 @@ func makeMockAuthService() *auth {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
if err = mem.(interface {
|
||||
Upgrade(context.Context, *zap.Logger) error
|
||||
}).Upgrade(ctx, zap.NewNop()); err != nil {
|
||||
if err = store.Upgrade(ctx, zap.NewNop(), mem); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user