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()) } }