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
import (
"bamort/database"
"fmt"
"gorm.io/gorm"
)
/*type ImStammFertigkeit struct {
ID uint `gorm:"primaryKey" json:"id"`
System string `gorm:"index" json:"system"`
@@ -24,6 +31,9 @@ type ImStammFertigkeit struct {
Initialkeitswert int `json:"initialwert"`
Bonuseigenschaft string `json:"bonuseigenschaft,omitempty"`
}
type ImStammWaffenFertigkeit struct {
ImStammFertigkeit
}
type ImStammZauber struct {
ImStamm
@@ -33,3 +43,99 @@ type ImStammZauber struct {
Reichweite int
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) {
stammF := models.ImStammFertigkeit{}
gameSystem := "none"
if strings.HasPrefix(fertigkeit.ID, "moam") {
gameSystem = "midgard"
}
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 {
// Fertigkeit found
return &stammF, nil
@@ -36,19 +33,15 @@ func CheckFertigkeit(fertigkeit *models.ImFertigkeit, autocreate bool) (*models.
stammF.Bonuseigenschaft = "keine"
stammF.Quelle = fertigkeit.Quelle
//fmt.Println(stammF)
err = database.DB.Transaction(func(tx *gorm.DB) error {
// Save the main character record
if err := tx.Create(&stammF).Error; err != nil {
return fmt.Errorf("failed to save Fertigkeit Stammdaten: %w", err)
}
return nil
})
err = stammF.Create()
if err != nil {
// Fertigkeit found
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 {
// Fertigkeit found
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)
}