package db

import (
	"app.yhyue.com/moapp/jybase/mysql"
	"app.yhyue.com/moapp/jybase/redis"
	"database/sql"
	"github.com/gogf/gf/v2/os/gcfg"
	"github.com/gogf/gf/v2/os/gctx"
	"log"
)

type Mysql struct {
	Address      string  //数据库地址:端口
	UserName     string  //用户名
	PassWord     string  //密码
	DBName       string  //数据库名
	DB           *sql.DB //数据库连接池对象
	MaxOpenConns int     //用于设置最大打开的连接数，默认值为0表示不限制。
	MaxIdleConns int     //用于设置闲置的连接数。
}

var GateWatMySql *mysql.Mysql

// InitDatabases 初始化数据库
func InitDatabases() {
	initDbCtx := gctx.New()
	//初始化redis数据库
	redisAddr := gcfg.Instance().MustGet(initDbCtx, "databases.redis", "session=127.0.0.1:6379,other=127.0.0.1:6379").String()
	redis.InitRedis(redisAddr)
	log.Printf("初始化redis完成 %s\n", redisAddr)
	//初始化mysql数据库
	var mysqlConf Mysql
	err := gcfg.Instance().MustGet(initDbCtx, "databases.mysql").Scan(&mysqlConf)
	if err != nil {
		log.Printf("mysql配置异常 %v\n", err)
		log.Fatal(err)
	}
	GateWatMySql = &mysql.Mysql{
		Address:      mysqlConf.Address,
		UserName:     mysqlConf.UserName,
		PassWord:     mysqlConf.PassWord,
		DBName:       mysqlConf.DBName,
		MaxOpenConns: mysqlConf.MaxOpenConns,
		MaxIdleConns: mysqlConf.MaxIdleConns,
	}
	GateWatMySql.Init()
	log.Printf("初始化Mysql完成 %+v\n", mysqlConf)
}
