package config

import (
	"database/sql"

	"git.jiaxianghudong.com/go/db"
)

var (
	MySQLMain 	*db.Database
	MySQLLog  	*db.Database
	MySQLExt  	*db.Database
	MySQLAgent  *db.Database
)

// InitMySQLMain 连接MYSQL main
func InitMySQLMain(mysqlDirver string, maxOpen, maxIdle int) error {
	MySQLMain = &db.Database{}
	return initMySQL(MySQLMain, mysqlDirver, maxOpen, maxIdle)
}

// InitMySQLLog 连接MYSQL LOG
func InitMySQLLog(mysqlDirver string, maxOpen, maxIdle int) error {
	MySQLLog = &db.Database{}
	return initMySQL(MySQLLog, mysqlDirver, maxOpen, maxIdle)
}

// InitMySQLExt 连接MYSQL Ext
func InitMySQLExt(mysqlDirver string, maxOpen, maxIdle int) error {
	MySQLExt = &db.Database{}
	return initMySQL(MySQLExt, mysqlDirver, maxOpen, maxIdle)
}

func InitMySQLAgent(mysqlDirver string, maxOpen, maxIdle int) error {
	MySQLAgent = &db.Database{}
	return initMySQL(MySQLAgent, mysqlDirver, maxOpen, maxIdle)
}

// initMySQL mysql
func initMySQL(mySQLDB *db.Database, mysqlDirver string, maxOpen, maxIdle int) error {
	var err error
	mySQLDB.DB, err = sql.Open("mysql", mysqlDirver)
	if err != nil {
		return err
	}

	if maxOpen > 0 {
		mySQLDB.DB.SetMaxIdleConns(maxIdle)
		mySQLDB.DB.SetConnMaxLifetime(-1)
	}
	if maxIdle > 0 {
		mySQLDB.DB.SetMaxOpenConns(maxOpen)
	}
	err = mySQLDB.DB.Ping()
	if err != nil {
		return err
	}
	return nil
}

// // GetMySQLMain 获取MYSQL DB操作实例
// func GetMySQLMain() *db.Database {
// 	return MySQLMain
// }

// // GetMySQLLog 获取MYSQL DB操作实例
// func GetMySQLLog() *db.Database {
// 	return MySQLLog
// }

// // GetMySQLExt 获取MYSQL DB操作实例
// func GetMySQLExt() *db.Database {
// 	return MySQLExt
// }
