added stammdaten handling
This commit is contained in:
@@ -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
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user