moved import and gsmaster to their domains

This commit is contained in:
2024-12-31 08:30:00 +01:00
parent d4bdb7bb90
commit 8cdb635a18
5 changed files with 219 additions and 216 deletions
@@ -1,11 +1,12 @@
package stammdaten
package gsmaster
import (
"bamort/importer"
"bamort/models"
"fmt"
)
func CheckSkill(fertigkeit *models.ImFertigkeit, autocreate bool) (*models.LookupSkill, error) {
func CheckSkill(fertigkeit *importer.Fertigkeit, autocreate bool) (*models.LookupSkill, error) {
stammF := models.LookupSkill{}
//err := database.DB.First(&stammF, "system=? AND name = ?", gameSystem, fertigkeit.Name).Error
err := stammF.First(fertigkeit.Name)
@@ -14,7 +15,7 @@ func CheckSkill(fertigkeit *models.ImFertigkeit, autocreate bool) (*models.Looku
return &stammF, nil
}
if !autocreate {
return nil, fmt.Errorf("does not exist in Fertigkeit Stammdaten")
return nil, fmt.Errorf("does not exist in Fertigkeit importer")
}
stammF.System = "midgard"
stammF.Name = fertigkeit.Name
@@ -45,7 +46,7 @@ func CheckSkill(fertigkeit *models.ImFertigkeit, autocreate bool) (*models.Looku
return &stammF, nil
}
func CheckSpell(zauber *models.ImZauber, autocreate bool) (*models.LookupSpell, error) {
func CheckSpell(zauber *importer.Zauber, autocreate bool) (*models.LookupSpell, error) {
stammF := models.LookupSpell{}
//err := database.DB.First(&stammF, "system=? AND name = ?", gameSystem, zauber.Name).Error
@@ -55,7 +56,7 @@ func CheckSpell(zauber *models.ImZauber, autocreate bool) (*models.LookupSpell,
return &stammF, nil
}
if !autocreate {
return nil, fmt.Errorf("does not exist in zauber Stammdaten")
return nil, fmt.Errorf("does not exist in zauber importer")
}
stammF.System = "midgard"
stammF.Name = zauber.Name
+175
View File
@@ -0,0 +1,175 @@
package importer
type BamortBase struct {
ID string `json:"id"`
Name string `json:"name"`
}
//gsmaster
type Magisch struct {
Abw int `json:"abw"`
Ausgebrannt bool `json:"ausgebrannt"`
IstMagisch bool `json:"ist_magisch"`
}
type Ausruestung struct {
BamortBase
Beschreibung string `json:"beschreibung"`
Anzahl int `json:"anzahl"`
BeinhaltetIn *string `json:"beinhaltet_in"`
Bonus int `json:"bonus,omitempty"`
Gewicht float64 `json:"gewicht"`
Magisch Magisch `json:"magisch"`
Wert float64 `json:"wert"`
}
type Waffe struct {
BamortBase
Beschreibung string `json:"beschreibung"`
Abwb int `json:"abwb"`
Anb int `json:"anb"`
Anzahl int `json:"anzahl"`
BeinhaltetIn *string `json:"beinhaltet_in"`
Gewicht float64 `json:"gewicht"`
Magisch Magisch `json:"magisch"`
NameFuerSpezialisierung string `json:"nameFuerSpezialisierung"`
Schb int `json:"schb"`
Wert float64 `json:"wert"`
}
type Behaeltniss struct {
BamortBase
Beschreibung string `json:"beschreibung"`
BeinhaltetIn any `json:"beinhaltet_in"`
Gewicht float64 `json:"gewicht"`
Magisch Magisch `json:"magisch"`
Tragkraft float64 `json:"tragkraft"`
Volumen float64 `json:"volumen"`
Wert float64 `json:"wert"`
}
type Transportation struct {
BamortBase
Beschreibung string `json:"beschreibung"`
BeinhaltetIn any `json:"beinhaltet_in"`
Gewicht int `json:"gewicht"`
Tragkraft float64 `json:"tragkraft"`
Wert float64 `json:"wert"`
Magisch Magisch `json:"magisch"`
//Magisch Magisch `gorm:"polymorphic:Item;polymorphicValue:Transportmittel" json:"magisch"`
}
type Fertigkeit struct {
BamortBase
Beschreibung string `json:"beschreibung"`
Fertigkeitswert int `json:"fertigkeitswert"`
Bonus int `json:"bonus,omitempty"`
Pp int `json:"pp,omitempty"`
Quelle string `json:"quelle"`
}
type Zauber struct {
BamortBase
Beschreibung string `json:"beschreibung"`
Bonus int `json:"bonus"`
Quelle string `json:"quelle"`
}
type Waffenfertigkeit struct {
BamortBase
Beschreibung string `json:"beschreibung"`
Bonus int `json:"bonus"`
Fertigkeitswert int `json:"fertigkeitswert"`
Pp int `json:"pp"`
Quelle string `json:"quelle"`
}
// Character data
type Eigenschaft struct {
ID uint `json:"id"`
Name string `json:"name"`
Value int `json:"value"`
}
type Merkmale struct {
Augenfarbe string `json:"augenfarbe"`
Haarfarbe string `json:"haarfarbe"`
Sonstige string `json:"sonstige"`
}
type Lp struct {
Max int `json:"max"`
Value int `json:"value"`
}
type Gestalt struct {
Breite string `json:"breite"`
Groesse string `json:"groesse"`
}
type Erfahrungsschatz struct {
Value int `json:"value"`
}
type Eigenschaften struct {
Au int `json:"au"`
Gs int `json:"gs"`
Gw int `json:"gw"`
In int `json:"in"`
Ko int `json:"ko"`
Pa int `json:"pa"`
St int `json:"st"`
Wk int `json:"wk"`
Zt int `json:"zt"`
}
type Bennies struct {
Gg int `json:"gg"`
Gp int `json:"gp"`
Sg int `json:"sg"`
}
type Ap struct {
Max int `json:"max"`
Value int `json:"value"`
}
type B struct {
Max int `json:"max"`
Value int `json:"value"`
}
/*
Define models for each table
Add other models for Ausruestung, Fertigkeiten, etc., following the same pattern.
*/
type CharacterImport struct {
ID string `json:"id"`
Name string `json:"name"`
Rasse string `json:"rasse"`
Typ string `json:"typ"`
Alter int `json:"alter"`
Anrede string `json:"anrede"`
Grad int `json:"grad"`
Groesse int `json:"groesse"`
Gewicht int `json:"gewicht"`
Glaube string `json:"glaube"`
Hand string `json:"hand"`
Fertigkeiten []Fertigkeit `json:"fertigkeiten"`
Zauber []Zauber `json:"zauber"`
Lp Lp `json:"lp"`
Eigenschaften Eigenschaften `json:"eigenschaften"`
Merkmale Merkmale `json:"merkmale"`
Bennies Bennies `json:"bennies"`
Gestalt Gestalt `json:"gestalt"`
Ap Ap `json:"ap"`
B B `json:"b"`
Erfahrungsschatz Erfahrungsschatz `json:"erfahrungsschatz"`
Transportmittel []Transportation `json:"transportmittel"`
Ausruestung []Ausruestung `json:"ausruestung"`
Behaeltnisse []Behaeltniss `json:"behaeltnisse"`
Waffen []Waffe `json:"waffen"`
Waffenfertigkeiten []Waffenfertigkeit `json:"waffenfertigkeiten"`
Spezialisierung []string `json:"spezialisierung"`
Image string `json:"image,omitempty"`
}
-174
View File
@@ -1,175 +1 @@
package models
type ImEigenschaft struct {
ID uint `json:"id"`
Name string `json:"name"`
Value int `json:"value"`
}
type ImAusruestung struct {
ID string `json:"id"`
Name string `json:"name"`
Beschreibung string `json:"beschreibung"`
Anzahl int `json:"anzahl"`
BeinhaltetIn *string `json:"beinhaltet_in"`
Bonus int `json:"bonus,omitempty"`
Gewicht float64 `json:"gewicht"`
Magisch ImMagisch `json:"magisch"`
Wert float64 `json:"wert"`
}
type ImFertigkeit struct {
ID string `json:"id"`
Name string `json:"name"`
Beschreibung string `json:"beschreibung"`
Fertigkeitswert int `json:"fertigkeitswert"`
Bonus int `json:"bonus,omitempty"`
Pp int `json:"pp,omitempty"`
Quelle string `json:"quelle"`
}
type ImZauber struct {
ID string `json:"id"`
Name string `json:"name"`
Beschreibung string `json:"beschreibung"`
Bonus int `json:"bonus"`
Quelle string `json:"quelle"`
}
type ImWaffenfertigkeit struct {
ID string `json:"id"`
Name string `json:"name"`
Beschreibung string `json:"beschreibung"`
Bonus int `json:"bonus"`
Fertigkeitswert int `json:"fertigkeitswert"`
Pp int `json:"pp"`
Quelle string `json:"quelle"`
}
type ImWaffe struct {
ID string `json:"id"`
Name string `json:"name"`
Beschreibung string `json:"beschreibung"`
Abwb int `json:"abwb"`
Anb int `json:"anb"`
Anzahl int `json:"anzahl"`
BeinhaltetIn *string `json:"beinhaltet_in"`
Gewicht float64 `json:"gewicht"`
Magisch ImMagisch `json:"magisch"`
NameFuerSpezialisierung string `json:"nameFuerSpezialisierung"`
Schb int `json:"schb"`
Wert float64 `json:"wert"`
}
type ImMerkmale struct {
Augenfarbe string `json:"augenfarbe"`
Haarfarbe string `json:"haarfarbe"`
Sonstige string `json:"sonstige"`
}
type ImLp struct {
Max int `json:"max"`
Value int `json:"value"`
}
type ImGestalt struct {
Breite string `json:"breite"`
Groesse string `json:"groesse"`
}
type ImErfahrungsschatz struct {
Value int `json:"value"`
}
type ImEigenschaften struct {
Au int `json:"au"`
Gs int `json:"gs"`
Gw int `json:"gw"`
In int `json:"in"`
Ko int `json:"ko"`
Pa int `json:"pa"`
St int `json:"st"`
Wk int `json:"wk"`
Zt int `json:"zt"`
}
type ImBennies struct {
Gg int `json:"gg"`
Gp int `json:"gp"`
Sg int `json:"sg"`
}
type ImBehaeltniss struct {
ID string `json:"id"`
Name string `json:"name"`
Beschreibung string `json:"beschreibung"`
BeinhaltetIn any `json:"beinhaltet_in"`
Gewicht float64 `json:"gewicht"`
Magisch ImMagisch `json:"magisch"`
Tragkraft float64 `json:"tragkraft"`
Volumen float64 `json:"volumen"`
Wert float64 `json:"wert"`
}
type ImAp struct {
Max int `json:"max"`
Value int `json:"value"`
}
type ImB struct {
Max int `json:"max"`
Value int `json:"value"`
}
type ImTransportation struct {
ID string `json:"id"`
Name string `json:"name"`
Beschreibung string `json:"beschreibung"`
BeinhaltetIn any `json:"beinhaltet_in"`
Gewicht int `json:"gewicht"`
Tragkraft float64 `json:"tragkraft"`
Wert float64 `json:"wert"`
Magisch ImMagisch `json:"magisch"`
//Magisch Magisch `gorm:"polymorphic:Item;polymorphicValue:Transportmittel" json:"magisch"`
}
type ImMagisch struct {
Abw int `json:"abw"`
Ausgebrannt bool `json:"ausgebrannt"`
IstMagisch bool `json:"ist_magisch"`
}
/*
Define models for each table
Add other models for Ausruestung, Fertigkeiten, etc., following the same pattern.
*/
type ImCharacterImport struct {
ID string `json:"id"`
Name string `json:"name"`
Rasse string `json:"rasse"`
Typ string `json:"typ"`
Alter int `json:"alter"`
Anrede string `json:"anrede"`
Grad int `json:"grad"`
Groesse int `json:"groesse"`
Gewicht int `json:"gewicht"`
Glaube string `json:"glaube"`
Hand string `json:"hand"`
Fertigkeiten []ImFertigkeit `json:"fertigkeiten"`
Zauber []ImZauber `json:"zauber"`
Lp ImLp `json:"lp"`
Eigenschaften ImEigenschaften `json:"eigenschaften"`
Merkmale ImMerkmale `json:"merkmale"`
Bennies ImBennies `json:"bennies"`
Gestalt ImGestalt `json:"gestalt"`
Ap ImAp `json:"ap"`
B ImB `json:"b"`
Erfahrungsschatz ImErfahrungsschatz `json:"erfahrungsschatz"`
Transportmittel []ImTransportation `json:"transportmittel"`
Ausruestung []ImAusruestung `json:"ausruestung"`
Behaeltnisse []ImBehaeltniss `json:"behaeltnisse"`
Waffen []ImWaffe `json:"waffen"`
Waffenfertigkeiten []ImWaffenfertigkeit `json:"waffenfertigkeiten"`
Spezialisierung []string `json:"spezialisierung"`
Image string `json:"image,omitempty"`
}
+2 -2
View File
@@ -25,11 +25,11 @@ func initTestDB4Character() *gorm.DB {
&character.B{},
&character.Merkmale{},
&character.Eigenschaft{},
&character.Bennies{},
&character.Erfahrungsschatz{},
&skills.Fertigkeit{},
&skills.Waffenfertigkeit{},
&skills.Zauber{},
&character.Bennies{},
&character.Erfahrungsschatz{},
&equipment.Waffe{},
&equipment.Behaeltniss{},
&equipment.Transportation{},
+36 -35
View File
@@ -2,8 +2,9 @@ package tests
import (
"bamort/database"
"bamort/gsmaster"
"bamort/importer"
"bamort/models"
"bamort/stammdaten"
"encoding/json"
"fmt"
"os"
@@ -17,28 +18,28 @@ func initTestDB4Import() *gorm.DB {
db := SetupTestDB()
db.AutoMigrate(
/*
&models.ImAp{},
&models.ImEigenschaft{},
&models.ImAusruestung{},
&models.ImFertigkeit{},
&models.ImZauber{},
&models.ImWaffenfertigkeit{},
&models.ImWaffe{},
&models.ImMerkmale{},
&models.ImLp{},
&models.ImGestalt{},
&models.ImErfahrungsschatz{},
&models.ImEigenschaften{},
&models.ImBennies{},
&models.ImBehaeltniss{},
&models.ImAp{},
&models.ImB{},
&models.ImTransportation{},
&models.ImMagisch{},
&models.ImCharacterImport{},
&importer.Ap{},
&importer.Eigenschaft{},
&importer.Fertigkeit{},
&importer.Zauber{},
&importer.Waffenfertigkeit{},
&importer.Waffe{},
&importer.Ausruestung{},
&importer.Behaeltniss{},
&importer.Transportation{},
&importer.Magisch{},
&importer.Merkmale{},
&importer.Lp{},
&importer.Gestalt{},
&importer.Erfahrungsschatz{},
&importer.Eigenschaften{},
&importer.Bennies{},
&importer.Ap{},
&importer.B{},
&importer.CharacterImport{},
*/
&models.LookupSkill{}, //needed for stammdaten.CheckFertigkeit
&models.LookupSpell{}, //needed for stammdaten.CheckZauber
&models.LookupSkill{}, //needed for gsmaster.CheckFertigkeit
&models.LookupSpell{}, //needed for gsmaster.CheckZauber
)
return db
}
@@ -53,7 +54,7 @@ func TestImportVTTStructure(t *testing.T) {
assert.Equal(t, "../testdata/VTT_Import1.json", fileName)
fileContent, err := os.ReadFile(fileName)
assert.NoError(t, err, "Expected no error when reading file "+fileName)
character := models.ImCharacterImport{}
character := importer.CharacterImport{}
err = json.Unmarshal(fileContent, &character)
assert.NoError(t, err, "Expected no error when Unmarshal filecontent")
@@ -87,16 +88,16 @@ func TestImportFertigkeitenStammdatenSingle(t *testing.T) {
assert.Equal(t, "../testdata/VTT_Import1.json", fileName)
fileContent, err := os.ReadFile(fileName)
assert.NoError(t, err, "Expected no error when reading file "+fileName)
character := models.ImCharacterImport{}
character := importer.CharacterImport{}
err = json.Unmarshal(fileContent, &character)
assert.NoError(t, err, "Expected no error when Unmarshal filecontent")
//checke Fertigkeit auf vorhandensein in den Stammdaten
fertigkeit := character.Fertigkeiten[1]
stammF, err := stammdaten.CheckSkill(&fertigkeit, false)
stammF, err := gsmaster.CheckSkill(&fertigkeit, false)
assert.Error(t, err, "expexted Error does not exist in Fertigkeit Stammdaten")
if stammF == nil && err != nil {
stammF, err = stammdaten.CheckSkill(&fertigkeit, true)
stammF, err = gsmaster.CheckSkill(&fertigkeit, true)
}
assert.NoError(t, err, "Expected to finds the Fertigkeit Stammdaten in the database")
assert.Equal(t, fertigkeit.Name, stammF.Name)
@@ -110,10 +111,10 @@ func TestImportFertigkeitenStammdatenSingle(t *testing.T) {
// und noch mal
//checke Fertigkeit auf vorhandensein in den Stammdaten
//fertigkeit := character.Fertigkeiten[1]
stammF, err = stammdaten.CheckSkill(&fertigkeit, false)
stammF, err = gsmaster.CheckSkill(&fertigkeit, false)
assert.NoError(t, err, "expexted no Error exist in Fertigkeit Stammdaten")
if stammF == nil && err != nil {
stammF, err = stammdaten.CheckSkill(&fertigkeit, true)
stammF, err = gsmaster.CheckSkill(&fertigkeit, true)
}
assert.NoError(t, err, "Expected to finds the Fertigkeit Stammdaten in the database")
assert.Equal(t, fertigkeit.Name, stammF.Name)
@@ -135,14 +136,14 @@ func TestImportFertigkeitenStammdatenMulti(t *testing.T) {
assert.Equal(t, "../testdata/VTT_Import1.json", fileName)
fileContent, err := os.ReadFile(fileName)
assert.NoError(t, err, "Expected no error when reading file "+fileName)
character := models.ImCharacterImport{}
character := importer.CharacterImport{}
err = json.Unmarshal(fileContent, &character)
assert.NoError(t, err, "Expected no error when Unmarshal filecontent")
//for index, fertigkeit := range character.Fertigkeiten {
for _, fertigkeit := range character.Fertigkeiten {
fmt.Println(fertigkeit.Name)
stammF, err := stammdaten.CheckSkill(&fertigkeit, true)
stammF, err := gsmaster.CheckSkill(&fertigkeit, true)
assert.NoError(t, err, "Expected to finds the Fertigkeit Stammdaten in the database")
assert.Equal(t, fertigkeit.Name, stammF.Name, "Name should be equal")
if fertigkeit.Name != "Sprache" {
@@ -168,16 +169,16 @@ func TestImportZauberStammdatenSingle(t *testing.T) {
assert.Equal(t, "../testdata/VTT_Import1.json", fileName)
fileContent, err := os.ReadFile(fileName)
assert.NoError(t, err, "Expected no error when reading file "+fileName)
character := models.ImCharacterImport{}
character := importer.CharacterImport{}
err = json.Unmarshal(fileContent, &character)
assert.NoError(t, err, "Expected no error when Unmarshal filecontent")
//checke zauber auf vorhandensein in den Stammdaten
zauber := character.Zauber[0]
stammF, err := stammdaten.CheckSpell(&zauber, false)
stammF, err := gsmaster.CheckSpell(&zauber, false)
assert.Error(t, err, "expexted Error does not exist in zauber Stammdaten")
if stammF == nil && err != nil {
stammF, err = stammdaten.CheckSpell(&zauber, true)
stammF, err = gsmaster.CheckSpell(&zauber, true)
}
assert.NoError(t, err, "Expected to finds the zauber Stammdaten in the database")
assert.Equal(t, zauber.Name, stammF.Name)
@@ -193,10 +194,10 @@ func TestImportZauberStammdatenSingle(t *testing.T) {
// und noch mal
//checke zauber auf vorhandensein in den Stammdaten
//zauber := character.zauberen[1]
stammF, err = stammdaten.CheckSpell(&zauber, false)
stammF, err = gsmaster.CheckSpell(&zauber, false)
assert.NoError(t, err, "expexted no Error exist in zauber Stammdaten")
if stammF == nil && err != nil {
stammF, err = stammdaten.CheckSpell(&zauber, true)
stammF, err = gsmaster.CheckSpell(&zauber, true)
}
assert.NoError(t, err, "Expected to finds the zauber Stammdaten in the database")
assert.Equal(t, zauber.Name, stammF.Name)