package main

import (
	"fmt"
	"log"
	"os"

	"software-download-center/config"
	"software-download-center/database"
	"software-download-center/utils"

	"github.com/gin-gonic/gin"
)

func main() {
	// 初始化日志
	logger := utils.NewLogger()

	// 检测操作系统
	osInfo := utils.DetectOS()
	logger.System(fmt.Sprintf("🖥️  操作系统: %s (%s)", osInfo.OS, osInfo.Arch))
	
	// 尝试初始化数据库（允许失败，等待管理员配置）
	if err := database.InitDB(); err != nil {
		logger.Warn("⚠️  数据库初始化失败: " + err.Error())
		logger.System("ℹ️  系统将在管理员配置数据库后自动连接")
	} else {
		logger.System("✅ 数据库初始化成功")
	}

	// 初始化配置缓存
	if err := utils.InitConfigCache(); err != nil {
		logger.Warn("配置缓存初始化失败: " + err.Error())
	} else {
		logger.System("✅ 配置缓存初始化成功")
	}

	// 设置 Gin 模式
	if os.Getenv("GIN_MODE") == "" {
		gin.SetMode(gin.ReleaseMode)
	}

	// 创建 Gin 引擎
	r := gin.Default()

	// 注册所有路由
	config.RegisterRoutes(r, logger)

	// 启动服务器
	port := os.Getenv("PORT")
	if port == "" {
		port = "3355"
	}

	logger.System("=============================================")
	logger.System("✅ 服务器启动成功")
	logger.System("📡 访问地址: http://localhost:" + port)
	env := os.Getenv("GIN_MODE")
	if env == "" {
		env = "production"
	}
	logger.System("🌍 当前环境: " + env)
	logger.System("🔄 兼容旧版访问：支持 /tool-status.json /update-info.json /media-types.json")
	logger.System("=============================================")

	if err := r.Run(":" + port); err != nil {
		log.Fatal("服务器启动失败:", err)
	}
}
