gsm skill DB methods

fixed field name typo Initialkeitswert
This commit is contained in:
2025-01-18 20:59:35 +01:00
parent b27d511e13
commit 358e89b47d
6 changed files with 84 additions and 69 deletions
+43 -48
View File
@@ -2,7 +2,9 @@ package gsmaster
import (
"bamort/database"
"fmt"
"net/http"
"strconv"
"github.com/gin-gonic/gin"
)
@@ -65,69 +67,62 @@ func GetMDSkills(c *gin.Context) {
}
func GetMDSkill(c *gin.Context) {
type dtaStruct struct {
Skills []Skill `json:"skills"`
Weaponskills []WeaponSkill `json:"weaponskills"`
Spell []Spell `json:"spells"`
Equipment []Equipment `json:"equipment"`
Weapons []Weapon `json:"weapons"`
SkillCategories []string `json:"skillcategories"`
}
var dta dtaStruct
if err := database.DB.Find(&dta.Skills).Error; err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to retrieve characters"})
id := c.Param("id")
intId, err := strconv.Atoi(id)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to retrieve character"})
return
}
c.JSON(http.StatusOK, dta)
sk := Skill{}
err = sk.FirstId(uint(intId))
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to retrieve character"})
return
}
c.JSON(http.StatusOK, sk)
}
func UpdateMDSkill(c *gin.Context) {
type dtaStruct struct {
Skills []Skill `json:"skills"`
Weaponskills []WeaponSkill `json:"weaponskills"`
Spell []Spell `json:"spells"`
Equipment []Equipment `json:"equipment"`
Weapons []Weapon `json:"weapons"`
SkillCategories []string `json:"skillcategories"`
}
var dta dtaStruct
if err := database.DB.Find(&dta.Skills).Error; err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to retrieve characters"})
var sk Skill
if err := c.ShouldBindJSON(&sk); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, dta)
if sk.System == "" {
sk.System = "midgard"
}
fmt.Printf("UpdateMDSkill: %v\n", sk)
if err := sk.Save(); err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to save skill" + err.Error()})
return
}
c.JSON(http.StatusOK, sk)
}
func AddSkill(c *gin.Context) {
type dtaStruct struct {
Skills []Skill `json:"skills"`
Weaponskills []WeaponSkill `json:"weaponskills"`
Spell []Spell `json:"spells"`
Equipment []Equipment `json:"equipment"`
Weapons []Weapon `json:"weapons"`
SkillCategories []string `json:"skillcategories"`
}
var dta dtaStruct
if err := database.DB.Find(&dta.Skills).Error; err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to retrieve characters"})
var sk Skill
if err := c.ShouldBindJSON(&sk); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, dta)
if err := sk.Save(); err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to save skill" + err.Error()})
return
}
c.JSON(http.StatusCreated, sk)
}
func DeleteMDSkill(c *gin.Context) {
type dtaStruct struct {
Skills []Skill `json:"skills"`
Weaponskills []WeaponSkill `json:"weaponskills"`
Spell []Spell `json:"spells"`
Equipment []Equipment `json:"equipment"`
Weapons []Weapon `json:"weapons"`
SkillCategories []string `json:"skillcategories"`
}
var dta dtaStruct
if err := database.DB.Find(&dta.Skills).Error; err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to retrieve characters"})
var sk Skill
if err := c.ShouldBindJSON(&sk); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, dta)
if err := sk.Delete(); err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to save skill" + err.Error()})
return
}
c.JSON(http.StatusOK, sk)
}
+13 -1
View File
@@ -19,7 +19,7 @@ type LookupList struct {
type Skill struct {
LookupList
Initialkeitswert int `json:"initialwert"`
Initialwert int `json:"initialwert"`
Bonuseigenschaft string `json:"bonuseigenschaft,omitempty"`
Improvable bool `json:"improvable"`
InnateSkill bool `json:"innateskill"`
@@ -152,6 +152,18 @@ func (object *Skill) Save() error {
}
return nil
}
func (object *Skill) Delete() error {
result := database.DB.Delete(&object, object.ID)
if result.Error != nil {
return result.Error
}
if result.RowsAffected == 0 {
return fmt.Errorf("no record found with ID %v", object.ID)
}
return nil
}
func (object *Skill) GetSkillCategories() ([]string, error) {
var categories []string
gameSystem := "midgard"
+2 -2
View File
@@ -27,9 +27,9 @@ func CheckSkill(fertigkeit *Fertigkeit, autocreate bool) (*gsmaster.Skill, error
stammF.Beschreibung = fertigkeit.Beschreibung
}
if fertigkeit.Fertigkeitswert < 12 {
stammF.Initialkeitswert = 5
stammF.Initialwert = 5
} else {
stammF.Initialkeitswert = 12
stammF.Initialwert = 12
}
stammF.Bonuseigenschaft = "keine"
stammF.Quelle = fertigkeit.Quelle
+2 -2
View File
@@ -217,7 +217,7 @@ func TransformImportFertigkeit2GSDMaster(object *Fertigkeit) (*gsmaster.Skill, e
// if not found insert to masterdata
gsmobj.Name = object.Name
gsmobj.Beschreibung = object.Beschreibung
gsmobj.Initialkeitswert = object.Fertigkeitswert
gsmobj.Initialwert = object.Fertigkeitswert
gsmobj.Quelle = object.Quelle
gsmobj.Bonuseigenschaft = "check"
gsmobj.Improvable = false
@@ -247,7 +247,7 @@ func TransformImportWaffenFertigkeit2GSDMaster(object *Waffenfertigkeit) (*gsmas
// if not found insert to masterdata
gsmobj.Name = object.Name
gsmobj.Beschreibung = object.Beschreibung
gsmobj.Initialkeitswert = object.Fertigkeitswert
gsmobj.Initialwert = object.Fertigkeitswert
gsmobj.Quelle = object.Quelle
gsmobj.Bonuseigenschaft = "check"
gsmobj.Improvable = true
+20 -12
View File
@@ -118,9 +118,7 @@ func TestGetMDSkillCategories(t *testing.T) {
assert.Equal(t, "Allgemein", categories[0])
}
func TestGetMDSkills(t *testing.T) {
SetupTestDB()
//TestCreateChar(t)
//TestRegisterUser(t)
SetupTestDB(false)
// Initialize a Gin router
r := gin.Default()
router.SetupGin(r)
@@ -128,10 +126,12 @@ func TestGetMDSkills(t *testing.T) {
// Routes
protected := router.BaseRouterGrp(r)
// Character routes
rCharGrp := router.CharRouterGrp(protected)
rCharGrp := router.MaintenanceRouterGrp(protected)
rCharGrp.GET("/test", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"status": "Test OK"})
})
u := user.User{}
u.FirstId(1)
// Create a test HTTP request
req, _ := http.NewRequest("GET", "/api/characters/9", nil)
@@ -164,7 +164,8 @@ func TestGetMDSkills(t *testing.T) {
}
// TestCreateCharacter tests the POST /characters endpoint
func TestGetMDSkill(t *testing.T) {
func TestUpdateMDSkill(t *testing.T) {
SetupTestDB(false)
// Initialize a Gin router
r := gin.Default()
router.SetupGin(r)
@@ -172,20 +173,27 @@ func TestGetMDSkill(t *testing.T) {
// Routes
protected := router.BaseRouterGrp(r)
// Character routes
rCharGrp := router.CharRouterGrp(protected)
rCharGrp := router.MaintenanceRouterGrp(protected)
rCharGrp.GET("/test", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"status": "Test OK"})
})
u := user.User{}
u.FirstId(1)
// Define the test case input
testCharacter := Character{
Name: "Aragorn",
Race: "Human",
sk := gsmaster.Skill{}
sk.Name = "Geländekunde"
sk.ID = 64
jsonData, err := json.Marshal(sk)
if err != nil {
t.Fatalf("Failed to marshal skill: %v", err)
}
jsonData, _ := json.Marshal(testCharacter)
// Create a test HTTP request
req, _ := http.NewRequest("POST", "/characters", bytes.NewBuffer(jsonData))
req, _ := http.NewRequest("PUT", "/api/maintenance/skills/64", bytes.NewBuffer(jsonData))
req.Header.Set("Content-Type", "application/json")
token := user.GenerateToken(&u)
req.Header.Set("Authorization", "Bearer "+token)
// Create a response recorder to capture the handler's response
respRecorder := httptest.NewRecorder()
@@ -198,7 +206,7 @@ func TestGetMDSkill(t *testing.T) {
// Assert the response body
var createdCharacter Character
err := json.Unmarshal(respRecorder.Body.Bytes(), &createdCharacter)
err = json.Unmarshal(respRecorder.Body.Bytes(), &createdCharacter)
assert.NoError(t, err)
assert.Equal(t, "Aragorn", createdCharacter.Name)
assert.Equal(t, "Human", createdCharacter.Race)
@@ -225,7 +225,7 @@ func TestImportSkill2GSMaster(t *testing.T) {
assert.GreaterOrEqual(t, int(skill.ID), 1)
assert.Equal(t, "Hören", skill.Name)
assert.Equal(t, "", skill.Beschreibung)
assert.Equal(t, 6, skill.Initialkeitswert)
assert.Equal(t, 6, skill.Initialwert)
assert.Equal(t, "check", skill.Bonuseigenschaft)
assert.Equal(t, "KOD5 99", skill.Quelle)
assert.Equal(t, false, skill.Improvable)
@@ -244,7 +244,7 @@ func TestImportSkill2GSMaster(t *testing.T) {
assert.Equal(t, skill2.ID, skill3.ID)
assert.Equal(t, skill2.Name, skill3.Name)
assert.Equal(t, skill2.Beschreibung, skill3.Beschreibung)
assert.Equal(t, skill2.Initialkeitswert, skill3.Initialkeitswert)
assert.Equal(t, skill2.Initialwert, skill3.Initialwert)
assert.Equal(t, skill2.Bonuseigenschaft, skill3.Bonuseigenschaft)
assert.Equal(t, skill2.Quelle, skill3.Quelle)
assert.Equal(t, skill2.Improvable, skill3.Improvable)
@@ -266,7 +266,7 @@ func TestImportWeaponSkill2GSMaster(t *testing.T) {
assert.GreaterOrEqual(t, int(skill.ID), 1)
assert.Equal(t, "Armbrüste", skill.Name)
assert.Equal(t, "", skill.Beschreibung)
assert.Equal(t, 8, skill.Initialkeitswert)
assert.Equal(t, 8, skill.Initialwert)
assert.Equal(t, "check", skill.Bonuseigenschaft)
assert.Equal(t, "KOD5 144", skill.Quelle)
assert.Equal(t, true, skill.Improvable)
@@ -285,7 +285,7 @@ func TestImportWeaponSkill2GSMaster(t *testing.T) {
assert.Equal(t, skill2.ID, skill3.ID)
assert.Equal(t, skill2.Name, skill3.Name)
assert.Equal(t, skill2.Beschreibung, skill3.Beschreibung)
assert.Equal(t, skill2.Initialkeitswert, skill3.Initialkeitswert)
assert.Equal(t, skill2.Initialwert, skill3.Initialwert)
assert.Equal(t, skill2.Bonuseigenschaft, skill3.Bonuseigenschaft)
assert.Equal(t, skill2.Quelle, skill3.Quelle)
assert.Equal(t, skill2.Improvable, skill3.Improvable)