3
0

Refactor and simplify store upgrade proc running

This commit is contained in:
Denis Arh
2020-10-22 12:08:16 +02:00
parent 8cee9740ae
commit 02c2ffc195
6 changed files with 35 additions and 40 deletions

View File

@@ -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
}
}

View File

@@ -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)

View File

@@ -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)

View File

@@ -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
View 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)
}

View File

@@ -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)
}