Bugfixes. Optimizations/refactor. Add redis for player-cache. Add docker files. Replace sqlite dep. Single-Calc for existing players. Game-Metrics in JSON.

This commit is contained in:
MaxJa4
2024-01-21 00:49:20 +01:00
parent 069d76520e
commit 16d782fbe8
41 changed files with 1154 additions and 203 deletions

View File

@@ -1,11 +0,0 @@
package models
import "time"
type PlayerCache struct {
CacheID uint `json:"cache_id" gorm:"primary_key"`
PlayerID uint `json:"player_id"`
CacheDate time.Time `json:"date"`
Score float32 `json:"score" gorm:"default:-1.0"`
Game string `json:"game"`
}

View File

@@ -1,9 +0,0 @@
package models
type MetricSetting struct {
ID uint `json:"id" gorm:"primary_key"`
Name string `json:"name" binding:"required"`
WeaponCategory string `json:"weapon_category" binding:"required"`
Value float64 `json:"value" binding:"required"`
Game string `json:"game" binding:"required"`
}

18
models/metrics_json.go Normal file
View File

@@ -0,0 +1,18 @@
package models
type GameMetrics struct {
GameMetrics []GameMetric
}
type GameMetric struct {
NormalizeFactor float64
TopWeaponCount int
GameName string
WeaponMetrics []WeaponMetric
}
type WeaponMetric struct {
WeaponCategory string
AccuracyFactor float64
KpmFactor float64
}

View File

@@ -1,13 +1,13 @@
package models
import (
"InfantrySkillCalculator/utils"
"context"
"github.com/glebarez/sqlite"
"github.com/redis/go-redis/v9"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"log"
"os"
)
var DB *gorm.DB
@@ -33,10 +33,6 @@ func ConnectDatabase() {
if err != nil {
log.Fatal(err)
}
err = database.AutoMigrate(&PlayerCache{})
if err != nil {
log.Fatal(err)
}
err = database.AutoMigrate(&User{})
if err != nil {
log.Fatal(err)
@@ -44,13 +40,6 @@ func ConnectDatabase() {
err = database.AutoMigrate(&ActivationCode{})
if err != nil {
log.Fatal(err)
} else {
var code ActivationCode
if err := database.First(&code).Error; err != nil {
firstCode := utils.GenerateActivationCode()
database.Create(&ActivationCode{Code: firstCode, UserRole: AdminRole})
log.Println("Created first activation code with ADMIN role:\n" + firstCode)
}
}
err = database.AutoMigrate(&Game{})
if err != nil {
@@ -64,10 +53,6 @@ func ConnectDatabase() {
}
}
err = database.AutoMigrate(&MetricSetting{})
if err != nil {
log.Fatal(err)
}
err = database.AutoMigrate(&UserSettings{})
if err != nil {
log.Fatal(err)
@@ -77,8 +62,17 @@ func ConnectDatabase() {
}
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: "127.0.0.1:6379",
Addr: address + ":" + port,
Password: "",
DB: 0,
})

16
models/tracker_json.go Normal file
View File

@@ -0,0 +1,16 @@
package models
type TrackerWeaponJSON struct {
Weapons []Weapon `json:"weapons"`
}
type Weapon struct {
Type string `json:"type"`
Name string `json:"weaponName"`
ID string `json:"id"`
Kills int `json:"kills"`
KPM float64 `json:"killsPerMinute"`
ShotsFired int `json:"shotsFired"`
ShotsHit int `json:"shotsHit"`
Accuracy float64 `json:"-"`
}