package main

import (
	"github.com/gogf/gf/v2/frame/g"
	_ "link_homework/internal/packed"

	_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
	_ "github.com/gogf/gf/contrib/nosql/redis/v2"
	"github.com/gogf/gf/v2/os/gctx"

	"link_homework/internal/cmd"

	_ "link_homework/internal/logic"
)

func main() {
	ctx := gctx.GetInitCtx()

	//启动日志
	//g.Log().Info(ctx, "服务启动中")
	//检查数据库链接
	// 检查默认数据库链接
	db := g.DB()
	if err := db.PingMaster(); err != nil {
		//g.Log().Fatal(ctx, "默认数据库链接失败,请检查数据库链接配置")
		return
	}
	//g.Log().Info(ctx, "默认数据库链接成功")

	// 检查 CMS 数据库链接
	cmsDb := g.DB("cms")
	if err := cmsDb.PingMaster(); err != nil {
		//g.Log().Fatal(ctx, "CMS 数据库链接失败,请检查数据库链接配置")
		return
	}
	//g.Log().Info(ctx, "CMS 数据库链接成功")

	// 检查 Redis 配置并连接
	// 如果配置中存在 Redis 配置,初始化 Redis 客户端
	// 打印 Redis 配置,确保它加载正确
	//redisConfig, err := g.Cfg().Get(ctx, "redis.default")
	_, err := g.Cfg().Get(ctx, "redis.default")
	if err != nil {
		//fmt.Println("获取 Redis 配置失败:", err)
		return
	}
	//fmt.Printf("Redis 配置:%v\n", redisConfig)

	// 测试 Redis 连接
	_, err = g.Redis().Do(ctx, "PING")
	if err != nil {
		//g.Log().Fatal(ctx, fmt.Sprintf("Redis 链接失败: %v", err))
		return
	}
	//g.Log().Info(ctx, "Redis 链接成功")

	//启动主命令逻辑
	cmd.Main.Run(ctx)

	//服务启动完成日志
	//g.Log().Info(ctx, "服务启动完成")
}