mirror of
https://github.com/indig0fox/Arma3-AttendanceTracker.git/
synced 2025-12-08 09:51:47 -06:00
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
This commit is contained in:
62
extension/AttendanceTracker/internal/db/db.go
Normal file
62
extension/AttendanceTracker/internal/db/db.go
Normal file
@@ -0,0 +1,62 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user