package db import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" ) var db *gorm.DB var config ConfigStruct type ConfigStruct struct { MySQLHost string `json:"mysqlHost"` MySQLPort int `json:"mysqlPort"` MySQLUser string `json:"mysqlUser"` MySQLPassword string `json:"mysqlPassword"` MySQLDatabase string `json:"mysqlDatabase"` } func SetConfig(c ConfigStruct) { config = c } func Client() *gorm.DB { return db } func Connect() error { // connect to database var err error dsn := fmt.Sprintf( "%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True", config.MySQLUser, config.MySQLPassword, config.MySQLHost, config.MySQLPort, config.MySQLDatabase, ) db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { return err } // try ping sqlDB, err := db.DB() if err != nil { return err } err = sqlDB.Ping() if err != nil { return err } return nil }