package main

import (
	"fmt"
	"log"

	"speedtest/config"
	"speedtest/internal/db"
	"speedtest/internal/store"
	"speedtest/internal/web"
)

func main() {
	// 1. Load configuration
	cfg, err := config.LoadConfig()
	if err != nil {
		log.Fatalf("加载配置失败: %v", err)
	}
	fmt.Println("配置加载成功")

	// 2. Initialize database
	database, err := db.InitDB(cfg.Database)
	if err != nil {
		log.Fatalf("数据库初始化失败: %v", err)
	}
	fmt.Println("数据库初始化成功")

	// 3. Create Store layer
	stores := store.NewStores(database)

	// 4. Start Web server
	webServer, err := web.NewWebServer(*cfg, stores)
	if err != nil {
		log.Fatalf("Web 服务初始化失败: %v", err)
	}
	fmt.Printf("Web 服务启动在 %s\n", cfg.Web.Addr)
	go func() {
		if err := webServer.Start(); err != nil {
			log.Fatalf("Web 服务启动失败: %v", err)
		}
	}()

	fmt.Println("SpeedTest 网速测试服务启动完成")
	select {} // Block main goroutine
}
