mirror of
https://github.com/zitadel/zitadel.git
synced 2024-12-12 02:54:20 +00:00
c8c5cf3c5f
* feat(cli): add `setup cleanup` sub command * chore: logging * chore: logging
52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
package setup
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/spf13/cobra"
|
|
"github.com/spf13/viper"
|
|
"github.com/zitadel/logging"
|
|
|
|
"github.com/zitadel/zitadel/internal/database"
|
|
"github.com/zitadel/zitadel/internal/eventstore"
|
|
"github.com/zitadel/zitadel/internal/migration"
|
|
)
|
|
|
|
func NewCleanup() *cobra.Command {
|
|
return &cobra.Command{
|
|
Use: "cleanup",
|
|
Short: "cleans up migration if they got stuck",
|
|
Long: `cleans up migration if they got stuck`,
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
config := MustNewConfig(viper.GetViper())
|
|
Cleanup(config)
|
|
},
|
|
}
|
|
}
|
|
|
|
func Cleanup(config *Config) {
|
|
ctx := context.Background()
|
|
|
|
logging.Info("cleanup started")
|
|
|
|
dbClient, err := database.Connect(config.Database, false)
|
|
logging.OnError(err).Fatal("unable to connect to database")
|
|
|
|
es, err := eventstore.Start(&eventstore.Config{Client: dbClient})
|
|
logging.OnError(err).Fatal("unable to start eventstore")
|
|
migration.RegisterMappers(es)
|
|
|
|
step, err := migration.LatestStep(ctx, es)
|
|
logging.OnError(err).Fatal("unable to query latest migration")
|
|
|
|
if step.BaseEvent.EventType != migration.StartedType {
|
|
logging.Info("there is no stuck migration please run `zitadel setup`")
|
|
return
|
|
}
|
|
|
|
logging.WithFields("name", step.Name).Info("cleanup migration")
|
|
|
|
err = migration.CancelStep(ctx, es, step)
|
|
logging.OnError(err).Fatal("cleanup migration failed please retry")
|
|
}
|