join behältnisse and transportation to one entity type container

This commit is contained in:
2025-01-18 20:59:54 +01:00
parent b970662c0c
commit e705a8232a
5 changed files with 101 additions and 173 deletions
+25 -25
View File
@@ -71,31 +71,31 @@ type Bennies struct {
type Char struct {
models.BamortBase
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"`
Lp Lp `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"lp"`
Ap Ap `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"ap"`
B B `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"b"`
Merkmale Merkmale `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"merkmale"`
Eigenschaften []Eigenschaft `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"eigenschaften"`
Fertigkeiten []skills.Fertigkeit `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"fertigkeiten"`
Waffenfertigkeiten []skills.Waffenfertigkeit `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"waffenfertigkeiten"`
Zauber []skills.Zauber `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"zauber"`
Spezialisierung database.StringArray `gorm:"type:TEXT" json:"spezialisierung"`
Bennies Bennies `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"bennies"`
Erfahrungsschatz Erfahrungsschatz `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"erfahrungsschatz"`
Waffen []equipment.Waffe `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"waffen"`
Behaeltnisse []equipment.Behaeltniss `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"behaeltnisse"`
Transportmittel []equipment.Transportation `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"transportmittel"`
Ausruestung []equipment.Ausruestung `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"ausruestung"`
Image string `json:"image,omitempty"`
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"`
Lp Lp `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"lp"`
Ap Ap `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"ap"`
B B `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"b"`
Merkmale Merkmale `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"merkmale"`
Eigenschaften []Eigenschaft `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"eigenschaften"`
Fertigkeiten []skills.Fertigkeit `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"fertigkeiten"`
Waffenfertigkeiten []skills.Waffenfertigkeit `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"waffenfertigkeiten"`
Zauber []skills.Zauber `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"zauber"`
Spezialisierung database.StringArray `gorm:"type:TEXT" json:"spezialisierung"`
Bennies Bennies `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"bennies"`
Erfahrungsschatz Erfahrungsschatz `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"erfahrungsschatz"`
Waffen []equipment.Waffe `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"waffen"`
Behaeltnisse []equipment.Container `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"behaeltnisse"`
Transportmittel []equipment.Container `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"transportmittel"`
Ausruestung []equipment.Ausruestung `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"ausruestung"`
Image string `json:"image,omitempty"`
}
type CharList struct {
models.BamortBase
+2 -2
View File
@@ -6,8 +6,8 @@ func MigrateStructure() error {
err := database.DB.AutoMigrate(
&Ausruestung{},
&Waffe{},
&Behaeltniss{},
&Transportation{},
&Container{},
//&Transportation{},
)
if err != nil {
return err
+32 -112
View File
@@ -36,32 +36,18 @@ type Waffe struct {
Wert float64 `json:"wert"`
}
type Behaeltniss struct {
type Container struct {
models.BamortCharTrait
models.Magisch
Beschreibung string `json:"beschreibung"`
BeinhaltetIn string `json:"beinhaltet_in"`
ContainedIn uint `json:"contained_in"`
ContainerType string `json:"container_type"`
Gewicht float64 `json:"gewicht"`
Wert float64 `json:"wert"`
Tragkraft float64 `json:"tragkraft"`
Volumen float64 `json:"volumen"`
ExtID string `json:"ext_id"`
}
type Transportation struct {
models.BamortCharTrait
models.Magisch
Beschreibung string `json:"beschreibung"`
BeinhaltetIn string `json:"beinhaltet_in"`
ContainedIn uint `json:"contained_in"`
ContainerType string `json:"container_type"`
Gewicht float64 `json:"gewicht"`
Wert float64 `json:"wert"`
Tragkraft float64 `json:"tragkraft"`
Volumen float64 `json:"volumen"`
ExtID string `json:"ext_id"`
Beschreibung string `json:"beschreibung"`
BeinhaltetIn string `json:"beinhaltet_in"`
ContainedIn uint `json:"contained_in"`
IsTransportation bool `json:"is_transportation"`
Gewicht float64 `json:"gewicht"`
Wert float64 `json:"wert"`
Tragkraft float64 `json:"tragkraft"`
Volumen float64 `json:"volumen"`
ExtID string `json:"ext_id"`
}
func (object *Ausruestung) TableName() string {
@@ -70,47 +56,28 @@ func (object *Ausruestung) TableName() string {
func (object *Waffe) TableName() string {
return dbPrefix + "_" + "weapons"
}
func (object *Behaeltniss) TableName() string {
func (object *Container) TableName() string {
return dbPrefix + "_" + "containers"
}
func (object *Transportation) TableName() string {
return dbPrefix + "_" + "transportationss"
func (object *Container) FirstExtId(id string) error {
err := database.DB.
First(&object, "ext_id = ?", id).Error
if err != nil {
// Container not found
return err
}
return nil
}
func (object *Container) Save() error {
err := database.DB.Save(&object).Error
if err != nil {
// Container saved
return err
}
return nil
}
func (object *Behaeltniss) FirstExtId(id string) error {
err := database.DB.
First(&object, "ext_id = ?", id).Error
if err != nil {
// Behaeltniss not found
return err
}
return nil
}
func (object *Behaeltniss) Save() error {
err := database.DB.Save(&object).Error
if err != nil {
// Behaeltniss saved
return err
}
return nil
}
func (object *Transportation) FirstExtId(id string) error {
err := database.DB.
First(&object, "ext_id = ?", id).Error
if err != nil {
// Transportation not found
return err
}
return nil
}
func (object *Transportation) Save() error {
err := database.DB.Save(&object).Error
if err != nil {
// Transportation saved
return err
}
return nil
}
func (object *Ausruestung) Save() error {
err := database.DB.Save(&object).Error
if err != nil {
@@ -131,17 +98,11 @@ func (object *Waffe) Save() error {
func (object *Ausruestung) LinkContainer() error {
//var err error
if object.BeinhaltetIn != "" {
co := Behaeltniss{}
co := Container{}
co.FirstExtId(object.BeinhaltetIn)
if co.ID > 0 {
object.ContainedIn = co.ID
//err= object.Save()
} else {
obj := Transportation{}
if co.ID > 0 {
object.ContainedIn = obj.ID
//err= object.Save()
}
}
if object.ContainedIn > 0 {
err := object.Save()
@@ -157,20 +118,11 @@ func (object *Ausruestung) LinkContainer() error {
func (object *Waffe) LinkContainer() error {
//var err error
if object.BeinhaltetIn != "" {
co := Behaeltniss{}
co := Container{}
co.FirstExtId(object.BeinhaltetIn)
if co.ID > 0 {
object.ContainedIn = co.ID
object.ContainerType = "Behaeltniss"
//err= object.Save()
} else {
obj := Transportation{}
obj.FirstExtId(object.BeinhaltetIn)
if obj.ID > 0 {
object.ContainedIn = obj.ID
object.ContainerType = "Transportation"
//err= object.Save()
}
}
if object.ContainedIn > 0 {
err := object.Save()
@@ -183,46 +135,14 @@ func (object *Waffe) LinkContainer() error {
return nil
}
func (object *Behaeltniss) LinkContainer() error {
func (object *Container) LinkContainer() error {
//var err error
if object.BeinhaltetIn != "" {
co := Behaeltniss{}
co := Container{}
co.FirstExtId(object.BeinhaltetIn)
if co.ID > 0 {
object.ContainedIn = co.ID
//err= object.Save()
} else {
obj := Transportation{}
if co.ID > 0 {
object.ContainedIn = obj.ID
//err= object.Save()
}
}
if object.ContainedIn > 0 {
err := object.Save()
if err != nil {
// ContainedIn saved
return err
}
}
}
return nil
}
func (object *Transportation) LinkContainer() error {
//var err error
if object.BeinhaltetIn != "" {
co := Behaeltniss{}
co.FirstExtId(object.BeinhaltetIn)
if co.ID > 0 {
object.ContainedIn = co.ID
//err= object.Save()
} else {
obj := Transportation{}
if co.ID > 0 {
object.ContainedIn = obj.ID
//err= object.Save()
}
}
if object.ContainedIn > 0 {
err := object.Save()
+15 -13
View File
@@ -149,15 +149,16 @@ func ImportVTTJSON(fileName string) (*character.Char, error) {
char.B.Value = imp.B.Value
char.Erfahrungsschatz.Value = imp.Erfahrungsschatz.Value
for i := range imp.Transportmittel {
char.Transportmittel = append(char.Transportmittel, equipment.Transportation{
char.Transportmittel = append(char.Transportmittel, equipment.Container{
BamortCharTrait: models.BamortCharTrait{
BamortBase: models.BamortBase{Name: imp.Transportmittel[i].Name},
},
Beschreibung: imp.Transportmittel[i].Beschreibung,
BeinhaltetIn: imp.Transportmittel[i].BeinhaltetIn,
Gewicht: float64(imp.Transportmittel[i].Gewicht),
Tragkraft: imp.Transportmittel[i].Tragkraft,
Wert: imp.Transportmittel[i].Wert,
IsTransportation: true,
Beschreibung: imp.Transportmittel[i].Beschreibung,
BeinhaltetIn: imp.Transportmittel[i].BeinhaltetIn,
Gewicht: float64(imp.Transportmittel[i].Gewicht),
Tragkraft: imp.Transportmittel[i].Tragkraft,
Wert: imp.Transportmittel[i].Wert,
Magisch: models.Magisch{
IstMagisch: imp.Transportmittel[i].Magisch.IstMagisch,
Abw: imp.Transportmittel[i].Magisch.Abw,
@@ -186,17 +187,18 @@ func ImportVTTJSON(fileName string) (*character.Char, error) {
})
}
for i := range imp.Behaeltnisse {
char.Behaeltnisse = append(char.Behaeltnisse, equipment.Behaeltniss{
char.Behaeltnisse = append(char.Behaeltnisse, equipment.Container{
BamortCharTrait: models.BamortCharTrait{
BamortBase: models.BamortBase{
Name: imp.Behaeltnisse[i].Name},
},
Beschreibung: imp.Behaeltnisse[i].Beschreibung,
BeinhaltetIn: imp.Behaeltnisse[i].BeinhaltetIn,
Tragkraft: imp.Behaeltnisse[i].Tragkraft,
Volumen: imp.Behaeltnisse[i].Volumen,
Gewicht: float64(imp.Behaeltnisse[i].Gewicht),
Wert: imp.Behaeltnisse[i].Wert,
IsTransportation: false,
Beschreibung: imp.Behaeltnisse[i].Beschreibung,
BeinhaltetIn: imp.Behaeltnisse[i].BeinhaltetIn,
Tragkraft: imp.Behaeltnisse[i].Tragkraft,
Volumen: imp.Behaeltnisse[i].Volumen,
Gewicht: float64(imp.Behaeltnisse[i].Gewicht),
Wert: imp.Behaeltnisse[i].Wert,
Magisch: models.Magisch{
IstMagisch: imp.Behaeltnisse[i].Magisch.IstMagisch,
Abw: imp.Behaeltnisse[i].Magisch.Abw,
+27 -21
View File
@@ -222,18 +222,19 @@ func createChar() *character.Char {
BeinhaltetIn: "moam-container-47363",
},
}
char.Behaeltnisse = []equipment.Behaeltniss{
char.Behaeltnisse = []equipment.Container{
{
BamortCharTrait: models.BamortCharTrait{
BamortBase: models.BamortBase{
Name: "Lederrucksack",
},
},
Beschreibung: "f\u00fcr 25 kg",
Wert: 4,
Tragkraft: 25,
Volumen: 25,
Gewicht: 0.5,
IsTransportation: false,
Beschreibung: "f\u00fcr 25 kg",
Wert: 4,
Tragkraft: 25,
Volumen: 25,
Gewicht: 0.5,
Magisch: models.Magisch{
IstMagisch: false,
Abw: 0,
@@ -242,7 +243,7 @@ func createChar() *character.Char {
BeinhaltetIn: "moam-container-47363",
},
}
char.Transportmittel = []equipment.Transportation{
char.Transportmittel = []equipment.Container{
{
BamortCharTrait: models.BamortCharTrait{
@@ -250,11 +251,12 @@ func createChar() *character.Char {
Name: "Karren",
},
},
Beschreibung: "für 500 kg",
Wert: 40,
Tragkraft: 500,
Volumen: 250,
Gewicht: 55.5,
IsTransportation: true,
Beschreibung: "für 500 kg",
Wert: 40,
Tragkraft: 500,
Volumen: 250,
Gewicht: 55.5,
Magisch: models.Magisch{
IstMagisch: true,
Abw: 30,
@@ -438,8 +440,8 @@ func createWaffen(sel int) *equipment.Waffe {
}
return &liste[sel]
}
func createBehaeltniss(sel int) *equipment.Behaeltniss {
liste := []equipment.Behaeltniss{
func createBehaeltniss(sel int) *equipment.Container {
liste := []equipment.Container{
{
BamortCharTrait: models.BamortCharTrait{
BamortBase: models.BamortBase{
@@ -465,8 +467,8 @@ func createBehaeltniss(sel int) *equipment.Behaeltniss {
}
return &liste[sel]
}
func createTransportmittel(sel int) *equipment.Transportation {
liste := []equipment.Transportation{
func createTransportmittel(sel int) *equipment.Container {
liste := []equipment.Container{
{
BamortCharTrait: models.BamortCharTrait{
@@ -474,11 +476,12 @@ func createTransportmittel(sel int) *equipment.Transportation {
Name: "Karren",
},
},
Beschreibung: "für 500 kg",
Wert: 40,
Tragkraft: 500,
Volumen: 250,
Gewicht: 55.5,
IsTransportation: true,
Beschreibung: "für 500 kg",
Wert: 40,
Tragkraft: 500,
Volumen: 250,
Gewicht: 55.5,
Magisch: models.Magisch{
IstMagisch: true,
Abw: 30,
@@ -691,6 +694,8 @@ func charTests(t *testing.T, char *character.Char) {
assert.Equal(t, false, char.Behaeltnisse[i].IstMagisch)
assert.Equal(t, 0, char.Behaeltnisse[i].Abw)
assert.Equal(t, false, char.Behaeltnisse[i].Ausgebrannt)
assert.Equal(t, false, char.Behaeltnisse[i].IsTransportation)
}
}
assert.LessOrEqual(t, 1, len(char.Transportmittel))
@@ -709,6 +714,7 @@ func charTests(t *testing.T, char *character.Char) {
assert.Equal(t, true, char.Transportmittel[i].IstMagisch)
assert.Equal(t, 30, char.Transportmittel[i].Abw)
assert.Equal(t, false, char.Transportmittel[i].Ausgebrannt)
assert.Equal(t, true, char.Transportmittel[i].IsTransportation)
}
}
assert.LessOrEqual(t, 1, len(char.Ausruestung))