mirror of
https://github.com/indig0fox/Arma3-AttendanceTracker.git/
synced 2025-12-08 01:41:49 -06:00
59 lines
920 B
Go
59 lines
920 B
Go
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
|
|
}
|