package main

import (
	"fmt"
	"github.com/gin-contrib/pprof"
	"github.com/gin-gonic/gin"
	"github.com/pingcap/dbaas/cost-metering-service/api"
	"github.com/pingcap/dbaas/cost-metering-service/config"
	"github.com/pingcap/dbaas/cost-metering-service/db"
	"github.com/pingcap/dbaas/cost-metering-service/handler/sqsmeasurehandler"
	"github.com/pingcap/dbaas/cost-metering-service/model/migrate"
	"github.com/pingcap/dbaas/cost-metering-service/utils/panicIf"
	"github.com/pingcap/dbaas/cost-metering-service/workers"
	"github.com/pingcap/log"
	"go.uber.org/zap"
	"time"
)

func main() {
	gin.DisableConsoleColor()
	//cfg
	panicIf.Error(config.Init())
	//db
	_, err := db.Initialize()
	panicIf.Error(err)
	//MigrateDB
	panicIf.Error(migrate.MigrateDB(db.GetDB(), true))
	//service
	engine, err := api.NewService()
	panicIf.Error(err)
	//sqs
	panicIf.Error(sqsmeasurehandler.Get().RunSqsMeasure())

	pprof.Register(engine)
	//worker
	workers.RunWorker(15 * time.Second)
	log.Fatal("start cost metering server failed", zap.Error(engine.Run(fmt.Sprintf(":%s", "19999"))))

}
