package main

import (
	"context"
	"flag"

	"github.com/tidbcloud/core-portal/internal/central/config"
	"github.com/tidbcloud/core-portal/internal/central/dbinit"
	"github.com/tidbcloud/pkgv2/log"
	"github.com/tidbcloud/pkgv2/logid"
	"go.uber.org/zap"
	"k8s.io/utils/pointer"
)

const (
	defaultConfigPath = "/etc/core-portal/config.yaml"
)

var (
	cmd        = ""
	configPath = ""
)

func init() {
	flag.StringVar(&configPath, "config-path", defaultConfigPath, "dbaas configuration file path")
	flag.StringVar(&cmd, "cmd", "", "sub command")
	flag.Parse()
}

func main() {
	ctx := context.Background()
	ctx = logid.WithLogid(ctx, logid.GenLogid())
	logger := log.WithContextS(ctx)
	logger.Info("initialize configuration")
	err := config.InitConfig(configPath)
	if err != nil {
		logger.Fatal("Initialize configuration failed", zap.Error(err))
	}

	logger.Info("initialize MySQL connection")
	config.Global().ServerConfig.ManagementPortalInitUserEmail = pointer.StringPtr("cloud@pingcap.com")
	_, err = dbinit.Initialize(config.Global().MysqlConfig, false)
	if err != nil {
		logger.Fatal("failed to initialize the database", zap.Error(err))
	}

	switch cmd {
	default:
		logger.Info("invalid cmd", zap.String("cmd", cmd))
	}
	if err != nil {
		logger.Error("failed to migrate", zap.Error(err))
	}
}
