moved Char to Domain
This commit is contained in:
@@ -2,14 +2,13 @@ package character
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
"bamort/models"
|
||||
|
||||
"fmt"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func SaveCharacterToDB(character *models.Char) error {
|
||||
func SaveCharacterToDB(character *Char) error {
|
||||
// Use GORM transaction to ensure atomicity
|
||||
return database.DB.Transaction(func(tx *gorm.DB) error {
|
||||
// Save the main character record
|
||||
|
||||
@@ -21,7 +21,7 @@ Add CRUD operations for characters:
|
||||
*/
|
||||
|
||||
func GetCharacters(c *gin.Context) {
|
||||
var characters []models.Char
|
||||
var characters []Char
|
||||
if err := database.DB.Find(&characters).Error; err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to retrieve characters"})
|
||||
return
|
||||
@@ -30,7 +30,7 @@ func GetCharacters(c *gin.Context) {
|
||||
}
|
||||
|
||||
func CreateCharacter(c *gin.Context) {
|
||||
var character models.Char
|
||||
var character Char
|
||||
if err := c.ShouldBindJSON(&character); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
@@ -149,7 +149,7 @@ func UploadFiles(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{"message": "Files uploaded successfully"})
|
||||
|
||||
// Open and parse JSON
|
||||
var character models.Char
|
||||
var character Char
|
||||
filePath := fmt.Sprintf("./uploads/%s", file_vtt.Filename)
|
||||
fileContent, err := os.ReadFile(filePath)
|
||||
if err != nil {
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
package character
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
"bamort/models"
|
||||
"fmt"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
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 []Fertigkeit `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"fertigkeiten"`
|
||||
Waffenfertigkeiten []Waffenfertigkeit `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"waffenfertigkeiten"`
|
||||
Zauber []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 []Waffe `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"waffen"`
|
||||
Behaeltnisse []Behaeltniss `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"behaeltnisse"`
|
||||
Transportmittel []Transportation `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"transportmittel"`
|
||||
Ausruestung []Ausruestung `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"ausruestung"`
|
||||
Image string `json:"image,omitempty"`
|
||||
}
|
||||
|
||||
func (object *Char) First(name string) error {
|
||||
err := database.DB.
|
||||
Preload("Lp").
|
||||
Preload("Ap").
|
||||
Preload("B").
|
||||
Preload("Merkmale").
|
||||
Preload("Eigenschaften").
|
||||
Preload("Fertigkeiten").
|
||||
Preload("Waffenfertigkeiten").
|
||||
Preload("Zauber").
|
||||
Preload("Bennies").
|
||||
Preload("Erfahrungsschatz").
|
||||
Preload("Waffen").
|
||||
Preload("Behaeltnisse").
|
||||
Preload("Transportmittel").
|
||||
Preload("Ausruestung").
|
||||
First(&object, " name = ?", name).Error
|
||||
if err != nil {
|
||||
// zauber found
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (object *Char) Create() error {
|
||||
err := database.DB.Transaction(func(tx *gorm.DB) error {
|
||||
// Save the main character record
|
||||
if err := tx.Create(&object).Error; err != nil {
|
||||
return fmt.Errorf("failed to save Lookup: %w", err)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
|
||||
return err
|
||||
}
|
||||
@@ -1,12 +1,5 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
"fmt"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type BamortBase struct {
|
||||
ID uint `gorm:"primaryKey" json:"id"`
|
||||
Name string `json:"name"`
|
||||
@@ -23,35 +16,6 @@ type BamortCharTraitMaxVal struct {
|
||||
Value int `json:"value"`
|
||||
}
|
||||
|
||||
type Char struct {
|
||||
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 []Fertigkeit `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"fertigkeiten"`
|
||||
Waffenfertigkeiten []Waffenfertigkeit `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"waffenfertigkeiten"`
|
||||
Zauber []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 []Waffe `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"waffen"`
|
||||
Behaeltnisse []Behaeltniss `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"behaeltnisse"`
|
||||
Transportmittel []Transportation `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"transportmittel"`
|
||||
Ausruestung []Ausruestung `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"ausruestung"`
|
||||
Image string `json:"image,omitempty"`
|
||||
}
|
||||
|
||||
// Au, Gs, Gw ,In, Ko, Pa, St, Wk, Zt
|
||||
type Eigenschaft struct {
|
||||
ID uint `gorm:"index" json:"id"`
|
||||
@@ -181,39 +145,3 @@ type Magisch struct {
|
||||
Abw int `json:"abw"`
|
||||
Ausgebrannt bool `json:"ausgebrannt"`
|
||||
}
|
||||
|
||||
func (object *Char) First(name string) error {
|
||||
err := database.DB.
|
||||
Preload("Lp").
|
||||
Preload("Ap").
|
||||
Preload("B").
|
||||
Preload("Merkmale").
|
||||
Preload("Eigenschaften").
|
||||
Preload("Fertigkeiten").
|
||||
Preload("Waffenfertigkeiten").
|
||||
Preload("Zauber").
|
||||
Preload("Bennies").
|
||||
Preload("Erfahrungsschatz").
|
||||
Preload("Waffen").
|
||||
Preload("Behaeltnisse").
|
||||
Preload("Transportmittel").
|
||||
Preload("Ausruestung").
|
||||
First(&object, " name = ?", name).Error
|
||||
if err != nil {
|
||||
// zauber found
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (object *Char) Create() error {
|
||||
err := database.DB.Transaction(func(tx *gorm.DB) error {
|
||||
// Save the main character record
|
||||
if err := tx.Create(&object).Error; err != nil {
|
||||
return fmt.Errorf("failed to save Lookup: %w", err)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ import (
|
||||
func initTestDB4Character() *gorm.DB {
|
||||
db := SetupTestDB()
|
||||
db.AutoMigrate(
|
||||
&models.Char{},
|
||||
&character.Char{},
|
||||
&models.Lp{},
|
||||
&models.Ap{},
|
||||
&models.B{},
|
||||
@@ -72,9 +72,9 @@ func ReadImageAsBase64(filePath string) (string, error) {
|
||||
return fullBase64String, nil
|
||||
}
|
||||
|
||||
func createChar() *models.Char {
|
||||
func createChar() *character.Char {
|
||||
|
||||
char := models.Char{}
|
||||
char := character.Char{}
|
||||
char.Name = "Harsk Hammerhuter, Zen"
|
||||
char.Rasse = "Zwerg"
|
||||
char.Typ = "Krieger"
|
||||
@@ -547,7 +547,7 @@ func setSpezialisierung(liste *database.StringArray, pos int,name string) {
|
||||
}
|
||||
*/
|
||||
|
||||
func charTests(t *testing.T, char *models.Char) {
|
||||
func charTests(t *testing.T, char *character.Char) {
|
||||
assert.LessOrEqual(t, 0, int(char.ID))
|
||||
assert.Equal(t, "Harsk Hammerhuter, Zen", char.Name)
|
||||
assert.Equal(t, "Zwerg", char.Rasse)
|
||||
@@ -763,7 +763,7 @@ func TestCreateChar(t *testing.T) {
|
||||
err = char.Create()
|
||||
assert.NoError(t, err, "expected no error creating the char")
|
||||
}
|
||||
char2 := models.Char{}
|
||||
char2 := character.Char{}
|
||||
char2.Name = "Harsk Hammerhuter, Zen"
|
||||
err = char2.First(char2.Name)
|
||||
assert.NoError(t, err, "expected no error creating the char")
|
||||
@@ -776,7 +776,7 @@ func TestReadChar(t *testing.T) {
|
||||
//database.DB = testDB // Assign test DB to global DB
|
||||
|
||||
TestCreateChar(t)
|
||||
char := models.Char{}
|
||||
char := character.Char{}
|
||||
char.Name = "Harsk Hammerhuter, Zen"
|
||||
err := char.First(char.Name)
|
||||
assert.NoError(t, err, "expected NO error character not found")
|
||||
@@ -795,7 +795,7 @@ func TestAddAusrüstung(t *testing.T) {
|
||||
//database.DB = testDB // Assign test DB to global DB
|
||||
|
||||
TestCreateChar(t)
|
||||
char := models.Char{}
|
||||
char := character.Char{}
|
||||
char.Name = "Harsk Hammerhuter, Zen"
|
||||
err := char.First(char.Name)
|
||||
assert.NoError(t, err, "expexted no Errorselecting record from DataBase")
|
||||
|
||||
Reference in New Issue
Block a user