mirror of
https://github.com/indig0fox/Arma3-AttendanceTracker.git/
synced 2025-12-08 09:51:47 -06:00
- no longer supports server events - can now more easily build using hemtt - extension vastly improved in both structure and functionality - tested on listen server - includes schema change
63 lines
1.1 KiB
Go
63 lines
1.1 KiB
Go
package db
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/indig0fox/a3go/a3interface"
|
|
"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
|
|
}
|
|
|
|
a3interface.WriteArmaCallback("connectDB", `["Database connected", "INFO"]`)
|
|
a3interface.WriteArmaCallback("connectDB", `["SUCCESS", "INFO"]`)
|
|
|
|
return nil
|
|
}
|