package main

import (
	"fmt"
	"log"
	"os"
	"os/signal"
	"syscall"

	"mengyaping-backend/config"
	"mengyaping-backend/router"
	"mengyaping-backend/services"
)

func main() {
	// 获取配置
	cfg := config.GetConfig()

	// 确保数据目录存在
	os.MkdirAll(cfg.DataPath, 0755)

	// 启动监控服务
	monitorService := services.GetMonitorService()
	go monitorService.Start()

	// 设置路由
	r := router.SetupRouter()

	// 优雅关闭
	go func() {
		sigCh := make(chan os.Signal, 1)
		signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
		<-sigCh

		log.Println("正在关闭服务...")
		monitorService.Stop()
		os.Exit(0)
	}()

	// 启动服务器
	addr := fmt.Sprintf("%s:%s", cfg.Server.Host, cfg.Server.Port)
	log.Printf("🌱 萌芽Ping 监控服务已启动，监听地址: %s\n", addr)

	if err := r.Run(addr); err != nil {
		log.Fatalf("服务器启动失败: %v", err)
	}
}
