package cmd

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

func init() {
	cmd := &cobra.Command{
		Use:   "http",
		Short: "start http server",
		Run: func(cmd *cobra.Command, args []string) {
			version.LogInfo()
			startHTTPServer()
		},
	}
	rootCmd.AddCommand(cmd)
}

func startHTTPServer() {
	httpServer, err := bootstrap.NewDataflowHttpServer()
	if err != nil {
		log.L().Fatal("failed to setup", zap.Error(err))
		return
	}
	serveErr := httpServer.RunDataflowHttpServer()
	if serveErr != nil {
		log.Fatal("failed to serve HTTP server", zap.Error(serveErr))
	}
	log.L().Info("HTTP server exit now")
}
