package common

import (
	"fmt"
	"github.com/go-redis/redis/v8"
	_ "github.com/go-sql-driver/mysql"
	"github.com/jmoiron/sqlx"
	"github.com/spf13/viper"
)

var DB *sqlx.DB
var Redis *redis.Client

func initMySQL() {
	host := viper.GetString("mysql.host")
	port := viper.GetString("mysql.port")
	database := viper.GetString("mysql.database")
	username := viper.GetString("mysql.username")
	password := viper.GetString("mysql.password")
	charset := viper.GetString("mysql.charset")
	dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&parseTime=true",
		username,
		password,
		host,
		port,
		database,
		charset)
	db, err := sqlx.Open("mysql", dsn)
	if err != nil {
		fmt.Printf("err:%#v", err)
		return
	}
	db.SetMaxOpenConns(20)
	db.SetMaxIdleConns(20)
	DB = db
}

func initRedis() {
	addr := viper.GetString("redis.addr")
	password := viper.GetString("redis.password")
	db := viper.GetInt("redis.db")
	poolsize := viper.GetInt("redis.poolsize")
	rdb := redis.NewClient(&redis.Options{
		Addr:     addr,
		Password: password, // 密码
		DB:       db,       // 数据库
		PoolSize: poolsize, // 连接池大小
	})
	Redis = rdb
}