package cmd

import (
	"github.com/pingcap/log"
	"github.com/spf13/cobra"
	"github.com/tidbcloud/dataflow-service/internal/cmd/bootstrap"
	"github.com/tidbcloud/dataflow-service/pkg/version"
	"go.uber.org/zap"
)

func init() {
	cmd := &cobra.Command{
		Use:   "worker",
		Short: "start background db workers",
		Run: func(cmd *cobra.Command, args []string) {
			version.LogInfo()
			startWorker()
		},
	}
	rootCmd.AddCommand(cmd)
}

func startWorker() {
	dataflowWorker, err := bootstrap.NewDataflowWorker()
	if err != nil {
		log.L().Fatal("failed to setup", zap.Error(err))
		return
	}

	serveErr := dataflowWorker.RunDataflowWorker()
	if serveErr != nil {
		log.L().Fatal("failed to run dataflow worker", zap.Error(serveErr))
	}
	log.L().Info("run dataflow worker exit now")
}
