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:
@@ -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"`
|
||||
}
|
||||
@@ -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
18
models/metrics_json.go
Normal 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
|
||||
}
|
||||
@@ -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
16
models/tracker_json.go
Normal 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:"-"`
|
||||
}
|
||||
Reference in New Issue
Block a user