package main

import (
	"flag"
	"fmt"

	"github.com/gin-gonic/gin"
	"github.com/pingcap/log"
	"github.com/prometheus/client_golang/prometheus/promhttp"
	"github.com/tidbcloud/tiinf/transport/http/tigin"
	"go.uber.org/zap"
)

const (
	defaultConfigPath = "/etc/ecosystem-service/config.yaml"
)

var (
	localMode = flag.Bool("local-mode", false, "Start ecosystem-service worker in local mode")
)

func main() {
	var configPath string
	flag.StringVar(&configPath, "config-path", defaultConfigPath, "dbaas configuration file path")
	flag.Parse()

	globalWorker, err := initializeWorker(configPath, *localMode)
	if err != nil {
		log.Fatal("Failed to init globalWorker", zap.Error(err))
	}

	globalWorker.Start()
	log.Info("workers run in background now")

	runMetricsServer(*localMode)
}

func runMetricsServer(localMode bool) {
	eng := tigin.Default()
	eng.Any("/metrics", gin.WrapH(promhttp.Handler()))
	// avoid conflict with server
	if localMode {
		err := eng.Run("0.0.0.0:8081")
		if err != nil {
			panic(fmt.Sprintf("start metrics server failed %+v", err))
		}
	}
	err := eng.Run("0.0.0.0:8080")
	if err != nil {
		panic(fmt.Sprintf("start metrics server failed %+v", err))
	}
}
