Files
Arma3-AttendanceTracker/extension/AttendanceTracker/internal/db/db.go
IndigoFox 29228bd192 add hemtt support, major refactor
- 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
2023-09-20 01:15:13 -07:00

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
}