added stammdaten handling

This commit is contained in:
2024-12-28 23:07:04 +01:00
parent 3acbd6928d
commit 830b10dc85
3 changed files with 235 additions and 13 deletions
+106
View File
@@ -1,5 +1,12 @@
package models package models
import (
"bamort/database"
"fmt"
"gorm.io/gorm"
)
/*type ImStammFertigkeit struct { /*type ImStammFertigkeit struct {
ID uint `gorm:"primaryKey" json:"id"` ID uint `gorm:"primaryKey" json:"id"`
System string `gorm:"index" json:"system"` System string `gorm:"index" json:"system"`
@@ -24,6 +31,9 @@ type ImStammFertigkeit struct {
Initialkeitswert int `json:"initialwert"` Initialkeitswert int `json:"initialwert"`
Bonuseigenschaft string `json:"bonuseigenschaft,omitempty"` Bonuseigenschaft string `json:"bonuseigenschaft,omitempty"`
} }
type ImStammWaffenFertigkeit struct {
ImStammFertigkeit
}
type ImStammZauber struct { type ImStammZauber struct {
ImStamm ImStamm
@@ -33,3 +43,99 @@ type ImStammZauber struct {
Reichweite int Reichweite int
Wirkungsziel string Wirkungsziel string
} }
func (stamm *ImStamm) First(name string) error {
gameSystem := "midgard"
err := database.DB.First(&stamm, "system=? AND name = ?", gameSystem, name).Error
if err != nil {
// zauber found
return err
}
return nil
}
func (stamm *ImStamm) Create() error {
gameSystem := "midgard"
stamm.System = gameSystem
err := database.DB.Transaction(func(tx *gorm.DB) error {
// Save the main character record
if err := tx.Create(&stamm).Error; err != nil {
return fmt.Errorf("failed to save Stammdaten: %w", err)
}
return nil
})
return err
}
func (stamm *ImStammFertigkeit) First(name string) error {
gameSystem := "midgard"
err := database.DB.First(&stamm, "system=? AND name = ?", gameSystem, name).Error
if err != nil {
// Fertigkeit found
return err
}
return nil
}
func (stamm *ImStammFertigkeit) Create() error {
gameSystem := "midgard"
stamm.System = gameSystem
err := database.DB.Transaction(func(tx *gorm.DB) error {
// Save the main character record
if err := tx.Create(&stamm).Error; err != nil {
return fmt.Errorf("failed to save Fertigkeit Stammdaten: %w", err)
}
return nil
})
return err
}
func (stamm *ImStammWaffenFertigkeit) First(name string) error {
gameSystem := "midgard"
err := database.DB.First(&stamm, "system=? AND name = ?", gameSystem, name).Error
if err != nil {
// Fertigkeit found
return err
}
return nil
}
func (stamm *ImStammWaffenFertigkeit) Create() error {
gameSystem := "midgard"
stamm.System = gameSystem
err := database.DB.Transaction(func(tx *gorm.DB) error {
// Save the main character record
if err := tx.Create(&stamm).Error; err != nil {
return fmt.Errorf("failed to save Fertigkeit Stammdaten: %w", err)
}
return nil
})
return err
}
func (stamm *ImStammZauber) First(name string) error {
gameSystem := "midgard"
err := database.DB.First(&stamm, "system=? AND name = ?", gameSystem, name).Error
if err != nil {
// zauber found
return err
}
return nil
}
func (stamm *ImStammZauber) Create() error {
gameSystem := "midgard"
stamm.System = gameSystem
err := database.DB.Transaction(func(tx *gorm.DB) error {
// Save the main character record
if err := tx.Create(&stamm).Error; err != nil {
return fmt.Errorf("failed to save Zauber Stammdaten: %w", err)
}
return nil
})
return err
}
+6 -13
View File
@@ -11,11 +11,8 @@ import (
func CheckFertigkeit(fertigkeit *models.ImFertigkeit, autocreate bool) (*models.ImStammFertigkeit, error) { func CheckFertigkeit(fertigkeit *models.ImFertigkeit, autocreate bool) (*models.ImStammFertigkeit, error) {
stammF := models.ImStammFertigkeit{} stammF := models.ImStammFertigkeit{}
gameSystem := "none" //err := database.DB.First(&stammF, "system=? AND name = ?", gameSystem, fertigkeit.Name).Error
if strings.HasPrefix(fertigkeit.ID, "moam") { err := stammF.First(fertigkeit.Name)
gameSystem = "midgard"
}
err := database.DB.First(&stammF, "system=? AND name = ?", gameSystem, fertigkeit.Name).Error
if err == nil { if err == nil {
// Fertigkeit found // Fertigkeit found
return &stammF, nil return &stammF, nil
@@ -36,19 +33,15 @@ func CheckFertigkeit(fertigkeit *models.ImFertigkeit, autocreate bool) (*models.
stammF.Bonuseigenschaft = "keine" stammF.Bonuseigenschaft = "keine"
stammF.Quelle = fertigkeit.Quelle stammF.Quelle = fertigkeit.Quelle
//fmt.Println(stammF) //fmt.Println(stammF)
err = database.DB.Transaction(func(tx *gorm.DB) error {
// Save the main character record err = stammF.Create()
if err := tx.Create(&stammF).Error; err != nil {
return fmt.Errorf("failed to save Fertigkeit Stammdaten: %w", err)
}
return nil
})
if err != nil { if err != nil {
// Fertigkeit found // Fertigkeit found
return nil, err return nil, err
} }
err = database.DB.First(&stammF, "system=? AND name = ?", gameSystem, fertigkeit.Name).Error //err = database.DB.First(&stammF, "system=? AND name = ?", gameSystem, fertigkeit.Name).Error
err = stammF.First(fertigkeit.Name)
if err != nil { if err != nil {
// Fertigkeit found // Fertigkeit found
return nil, err return nil, err
+123
View File
@@ -0,0 +1,123 @@
package tests
import (
"bamort/database"
"bamort/models"
"testing"
"github.com/stretchr/testify/assert"
"gorm.io/gorm"
)
func initTestDB4Stammdaten() *gorm.DB {
db := SetupTestDB()
db.AutoMigrate(
&models.ImStammFertigkeit{}, //needed for stammdaten.CheckFertigkeit
&models.ImStammZauber{}, //needed for stammdaten.CheckZauber
&models.ImStammWaffenFertigkeit{}, //needed for stammdaten.CheckWaffenFertigkeit
)
return db
}
func TestCreateStammdatenFertigkeiten(t *testing.T) {
// Setup test database
testDB := initTestDB4Stammdaten()
database.DB = testDB // Assign test DB to global DB
stamm := models.ImStammFertigkeit{}
stamm.System = "Midgard"
stamm.Name = "Lesen"
stamm.Beschreibung = "Lesen und Schreiben"
stamm.Quelle = "kod-4711"
stamm.Initialkeitswert = 8
stamm.Bonuseigenschaft = "In"
err := stamm.Create()
assert.NoError(t, err, "expexted Error does not exist in Fertigkeit Stammdaten")
assert.GreaterOrEqual(t, 1, int(stamm.ID), "exepets an ID to be present")
assert.Equal(t, "midgard", stamm.System)
}
func TestFindStammdatenFertigkeiten(t *testing.T) {
// Setup test database
TestCreateStammdatenFertigkeiten(t)
stamm := models.ImStammFertigkeit{}
stamm.Name = "Lesen"
err := stamm.First("Lesen")
assert.NoError(t, err, "expexted Error does not exist in Fertigkeit Stammdaten")
assert.GreaterOrEqual(t, 1, int(stamm.ID), "exepets an ID to be present")
assert.Equal(t, "midgard", stamm.System)
assert.Equal(t, "In", stamm.Bonuseigenschaft)
}
func TestCreateStammdatenWaffenFertigkeiten(t *testing.T) {
// Setup test database
testDB := initTestDB4Stammdaten()
database.DB = testDB // Assign test DB to global DB
stamm := models.ImStammWaffenFertigkeit{}
stamm.System = "Midgard"
stamm.Name = "Stichwaffen"
stamm.Beschreibung = "Für Dolche und Ochsenzungen"
stamm.Quelle = "kod-4712"
stamm.Initialkeitswert = 5
stamm.Bonuseigenschaft = "Gs"
err := stamm.Create()
assert.NoError(t, err, "expexted Error does not exist in WaffenFertigkeit Stammdaten")
assert.GreaterOrEqual(t, 1, int(stamm.ID), "exepets an ID to be present")
assert.Equal(t, "midgard", stamm.System)
}
func TestFindStammdatenWaffenFertigkeiten(t *testing.T) {
// Setup test database
TestCreateStammdatenWaffenFertigkeiten(t)
stamm := models.ImStammWaffenFertigkeit{}
stamm.Name = "Lesen"
err := stamm.First("Stichwaffen")
assert.NoError(t, err, "expexted Error does not exist in WaffenFertigkeit Stammdaten")
assert.GreaterOrEqual(t, 1, int(stamm.ID), "exepets an ID to be present")
assert.Equal(t, "midgard", stamm.System)
assert.Equal(t, "Stichwaffen", stamm.Name)
assert.Equal(t, "Für Dolche und Ochsenzungen", stamm.Beschreibung)
assert.Equal(t, "Gs", stamm.Bonuseigenschaft)
}
func TestCreateStammdatenZauber(t *testing.T) {
// Setup test database
testDB := initTestDB4Stammdaten()
database.DB = testDB // Assign test DB to global DB
stamm := models.ImStammZauber{}
stamm.System = "Midgard"
stamm.Name = "Unsichtbarkeit"
stamm.Beschreibung = "werde unsichtbar"
stamm.Quelle = "Ark-4711"
stamm.Stufe = 1
stamm.AP = 1
stamm.Reichweite = 0
stamm.Wirkungsziel = "Zauberer"
stamm.Bonus = 0
err := stamm.Create()
assert.NoError(t, err, "expexted Error does not exist in Fertigkeit Stammdaten")
assert.GreaterOrEqual(t, 1, int(stamm.ID), "exepets an ID to be present")
assert.Equal(t, "midgard", stamm.System)
assert.Equal(t, "Unsichtbarkeit", stamm.Name)
assert.Equal(t, "werde unsichtbar", stamm.Beschreibung)
assert.Equal(t, 1, stamm.Stufe)
}
func TestFindStammdatenZauber(t *testing.T) {
// Setup test database
TestCreateStammdatenZauber(t)
stamm := models.ImStammZauber{}
stamm.Name = "lesen"
err := stamm.First("Unsichtbarkeit")
assert.NoError(t, err, "expexted Error does not exist in Fertigkeit Stammdaten")
assert.GreaterOrEqual(t, 1, int(stamm.ID), "exepets an ID to be present")
assert.Equal(t, "midgard", stamm.System)
assert.Equal(t, "Unsichtbarkeit", stamm.Name)
assert.Equal(t, "werde unsichtbar", stamm.Beschreibung)
assert.Equal(t, 1, stamm.AP)
assert.Equal(t, 0, stamm.Reichweite)
assert.Equal(t, "Zauberer", stamm.Wirkungsziel)
assert.Equal(t, 0, stamm.Bonus)
}