package main

import (
	"database/sql"
	"fmt"
	"github.com/beego/beego/v2/server/web"
	"gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/application/crontab"
	"gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/constant"
	_ "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/constant"
	"gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/pg"
	"gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/redis"
	_ "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/redis"
	"gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/infrastructure/starrocks"
	"gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/log"
	_ "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/log"
	_ "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/port/beego"
	"gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/port/event"
)

const Version = "v1.4.0"

func main() {
	defer func() {
		if r := recover(); r != nil {
			log.Logger.Error(fmt.Sprintf("%v", r))
		}
	}()

	log.InitLogHook(constant.ENABLE_KAFKA_LOG, true)
	redis.InitRedis()
	redis.InitZeroCoreRedis()
	pg.Init()
	if err := starrocks.Init(); err != nil {
		log.Logger.Error(err.Error())
	}
	cron := crontab.NewCrontabService(nil)
	cron.StartCrontabTask()
	defer cron.StopCrontabTask()
	event.Start()
	log.Logger.Info("Service:" + constant.SERVICE_NAME)
	log.Logger.Info("Version:" + Version)
	log.Logger.Info("server start!")
	log.Logger.Info("db driver", map[string]interface{}{"drivers": sql.Drivers()})
	web.Run()
	log.Logger.Info("server stop!")
}