gsm skill DB methods
fixed field name typo Initialkeitswert
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user