moved Char to Domain

This commit is contained in:
2024-12-30 15:58:05 +01:00
parent 6e497ffe83
commit 7d5f547e81
5 changed files with 85 additions and 84 deletions
+1 -2
View File
@@ -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
+3 -3
View File
@@ -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 {
+74
View File
@@ -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
}
-72
View File
@@ -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
}
+7 -7
View File
@@ -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")