package cmd

import (
	"fmt"

	"github.com/pingcap/log"
	"github.com/spf13/cobra"
	"github.com/tidbcloud/dataflow-service-ng/app/container"
	bootstarpSerer "github.com/tidbcloud/dataflow-service-ng/internal/cmd/bootstrap/server"
	"github.com/tidbcloud/dataflow-service-ng/migrate"
)

func init() {
	migrateCmd := &cobra.Command{
		Use:   "migrate",
		Short: "be careful when run this cmd, THIS IS DB MIGRATIONS!!!",
		RunE: func(cmd *cobra.Command, args []string) error {
			if _, err := bootstarpSerer.NewServer(cmd.Context(), bootstarpSerer.ServerOption{
				EnableEventBusConsumer: false,
			}); err != nil {
				return err
			}
			err := migrate.RunDataflowDBMigrate(container.Global().DB)
			if err != nil {
				panic(fmt.Sprintf("do DB migration failed: %s", err))
			}
			log.L().Info("migrate finished")
			return nil
		},
	}
	rootCmd.AddCommand(migrateCmd)
}
