package lib

import (
	"encoding/json"
	"fmt"
	"gitdxz.51daxuetong.cn/go_dev/bids_rpcx/config"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"sync"
	"time"
)

var Db *gorm.DB
var syncDb sync.Once

func GetDb() *gorm.DB {
	syncDb.Do(func() {
		cc := config.GetConfig()
		fmt.Println(cc.All())
		dbHost := cc.String("db_host")
		dbPort := cc.String("db_port")
		dbName := cc.String("db_database")
		dbUser := cc.String("db_username")
		dbPwd := cc.String("db_password")
		dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", dbUser, dbPwd, dbHost, dbPort, dbName)
		db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
		if err != nil {
			panic(err.Error() + dsn)
		}
		sqlDB, err := db.DB()
		if err != nil {
			panic(err)
		}
		sqlDB.SetMaxIdleConns(1)
		sqlDB.SetMaxOpenConns(5)
		sqlDB.SetConnMaxLifetime(time.Hour)
		data, _ := json.Marshal(sqlDB.Stats()) //获得当前的SQL配置情况
		fmt.Println(data)
		Db = db
	})
	return Db
}