package service

import (
	"github.com/fsnotify/fsnotify"
	"github.com/spf13/viper"
	"matrix-common/constants"
	"matrix-common/pkg/logger"
	_ "matrix-middle-service/docs"
	"matrix-middle-service/internel/app"
	"matrix-middle-service/pkg/config/toml"
)

func Main() {
	viper.SetConfigName(constants.ConfigFileName)
	viper.SetConfigType(constants.ConfigType)
	for _, path := range constants.ConfigPaths {
		viper.AddConfigPath(path)
	}

	if err := viper.ReadInConfig(); err != nil {
		if _, ok := err.(viper.ConfigFileNotFoundError); ok {
			_ = toml.GenerateConfig()
			logger.Log().Fatalf("未找到配置文件, 已生成示例配置文件于运行路径下")
		} else {
			logger.Log().Fatalf("配置解析失败 %s", err)
		}
	}

	viper.OnConfigChange(func(in fsnotify.Event) {
		logger.Log().Info(in.Name)
		app.Run()
	})
	viper.WatchConfig()

	app.Run()

	defer app.Shutdown()
}
