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

@@ -2,9 +2,10 @@ package controllers
import (
"InfantrySkillCalculator/models"
"InfantrySkillCalculator/utils"
"errors"
"github.com/gin-gonic/gin"
"net/http"
"session"
)
type UpdateSettingsInput struct {
@@ -18,9 +19,11 @@ type UpdateSettingsInput struct {
func GetSettings(c *gin.Context) {
var settings models.UserSettings
session, _ := utils.Store.Get(c.Request, utils.LoginSessionName)
var username string
username, _ = session.Values["username"].(string)
username, ok := session.GetUsername(c)
if !ok {
c.JSON(http.StatusBadRequest, gin.H{"error": "Not logged in!"})
return
}
if err := models.DB.Where("username = ?", username).First(&settings).Error; err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "No settings available!"})
@@ -37,13 +40,39 @@ func GetSettings(c *gin.Context) {
c.JSON(http.StatusOK, sanitizedSettings)
}
func GetActiveGame(c *gin.Context) (models.Game, error) {
var settings models.UserSettings
var game models.Game
username, ok := session.GetUsername(c)
if !ok {
err := errors.New("not logged in")
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return models.Game{}, err
}
if err := models.DB.Where("username = ?", username).First(&settings).Error; err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "No settings available!"})
return models.Game{}, err
}
if err := models.DB.Where("id = ?", settings.ActiveGameID).First(&game).Error; err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "No active game available!"})
return models.Game{}, err
}
return game, nil
}
// UpdateSettings PATCH /settings
func UpdateSettings(c *gin.Context) {
var settings models.UserSettings
session, _ := utils.Store.Get(c.Request, utils.LoginSessionName)
var username string
username, _ = session.Values["username"].(string)
username, ok := session.GetUsername(c)
if !ok {
c.JSON(http.StatusBadRequest, gin.H{"error": "Not logged in!"})
return
}
if err := models.DB.Where("username = ?", username).First(&settings).Error; err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "No settings available!"})