Files
InfantrySkillCalculator/models/setup.go

86 lines
1.6 KiB
Go

package models
import (
"context"
"github.com/glebarez/sqlite"
"github.com/redis/go-redis/v9"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"log"
"os"
)
var DB *gorm.DB
var ctx = context.Background()
var Cache *redis.Client
func ConnectDatabase() {
database, err := gorm.Open(sqlite.Open("isc_data.db"), &gorm.Config{
Logger: logger.Default.LogMode(logger.Silent),
SkipDefaultTransaction: true,
PrepareStmt: true,
})
if err != nil {
panic("Failed to connect to database! " + err.Error())
}
err = database.AutoMigrate(&Clan{})
if err != nil {
log.Fatal(err)
}
err = database.AutoMigrate(&Player{})
if err != nil {
log.Fatal(err)
}
err = database.AutoMigrate(&User{})
if err != nil {
log.Fatal(err)
}
err = database.AutoMigrate(&ActivationCode{})
if err != nil {
log.Fatal(err)
}
err = database.AutoMigrate(&Game{})
if err != nil {
log.Fatal(err)
} else {
var game Game
if err := database.First(&game).Error; err != nil {
database.Create(&Game{Name: "Battlefield V", Tag: "BFV"})
database.Create(&Game{Name: "Battlefield 2042", Tag: "BF2042"})
log.Println("Created first games")
}
}
err = database.AutoMigrate(&UserSettings{})
if err != nil {
log.Fatal(err)
}
DB = database
}
func ConnectCache() {
address := os.Getenv("REDIS_ADDRESS")
if address == "" {
address = "127.0.0.1"
}
port := os.Getenv("REDIS_PORT")
if port == "" {
port = "6379"
}
Cache = redis.NewClient(&redis.Options{
Addr: address + ":" + port,
Password: "",
DB: 0,
})
_, err := Cache.Ping(ctx).Result()
if err != nil {
Cache = nil
log.Fatal("Failed to connect to Redis! " + err.Error())
}
}