ein bisschen import

This commit is contained in:
2024-12-28 06:52:18 +01:00
parent 321c9869a9
commit f0017a13e1
6 changed files with 168 additions and 39 deletions
+28
View File
@@ -246,3 +246,31 @@ func isValidFileType(filename string) bool {
}
return false
}
func SetupCheck(c *gin.Context) {
ConnectDatabase()
err := DB.AutoMigrate(&Character{},
&Fertigkeit{}, &Zauber{}, &Lp{},
&Eigenschaft{}, &Merkmale{},
&Bennies{},
&Gestalt{},
&Ap{}, &B{},
&Erfahrungsschatz{},
&MagischTransport{},
&Transportation{},
&MagischAusruestung{},
&Ausruestung{},
&MagischBehaelter{},
&Behaeltniss{},
&MagischWaffe{},
&Waffe{},
&Waffenfertigkeit{},
&StammFertigkeit{},
)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to automigrate DataBase"})
return
}
c.JSON(http.StatusOK, gin.H{"message": "Setup Check OK"})
}
+39 -34
View File
@@ -4,11 +4,9 @@ import (
"encoding/json"
"fmt"
"os"
"strings"
"testing"
"github.com/stretchr/testify/assert"
"gorm.io/gorm"
)
func TestImportVTT(t *testing.T) {
@@ -57,39 +55,46 @@ func TestImportFertigkeitenStammdaten(t *testing.T) {
err = json.Unmarshal(fileContent, &character)
assert.NoError(t, err, "Expected no error when Unmarshal filecontent")
//fertigkeit := character.Fertigkeiten[1]
for _, fertigkeit := range character.Fertigkeiten {
//fmt.Printf("Name: %s, Beschreibung: %s, Wert: %d\n",
// fertigkeit.Name, fertigkeit.Beschreibung, fertigkeit.Fertigkeitswert)
//fmt.Println(fertigkeit)
stammF := StammFertigkeit{}
if strings.HasPrefix(fertigkeit.ImportID, "moam") {
err = DB.First(&stammF, "system=? AND name = ?", "midgard", fertigkeit.Name).Error
assert.Error(t, err, "Expected not to find the Fertigkeit Stammdaten in the database")
stammF.System = "midgard"
stammF.Name = fertigkeit.Name
stammF.Beschreibung = fertigkeit.Beschreibung
if fertigkeit.Fertigkeitswert < 12 {
stammF.Initialkeitswert = 5
} else {
stammF.Initialkeitswert = 12
}
stammF.Bonuseigenschaft = "keine"
stammF.Quelle = fertigkeit.Quelle
//fmt.Println(stammF)
err = DB.Transaction(func(tx *gorm.DB) error {
// Save the main character record
if err := tx.Create(&stammF).Error; err != nil {
return fmt.Errorf("failed to save Fertigkeit Stammdaten: %w", err)
}
return nil
})
assert.NoError(t, err, "Expected no error saving Fertigkeit Stammdaten in the database")
}
fertigkeit := character.Fertigkeiten[1]
//for _, fertigkeit := range character.Fertigkeiten {
//fmt.Printf("Name: %s, Beschreibung: %s, Wert: %d\n",
// fertigkeit.Name, fertigkeit.Beschreibung, fertigkeit.Fertigkeitswert)
//fmt.Println(fertigkeit)
/* stammF := StammFertigkeit{}
if strings.HasPrefix(fertigkeit.ImportID, "moam") {
err = DB.First(&stammF, "system=? AND name = ?", "midgard", fertigkeit.Name).Error
fmt.Println(stammF)
assert.NoError(t, err, "Expected to find the Fertigkeit Stammdaten in the database")
assert.Error(t, err, "Expected not to find the Fertigkeit Stammdaten in the database")
stammF.System = "midgard"
stammF.Name = fertigkeit.Name
stammF.Beschreibung = fertigkeit.Beschreibung
if fertigkeit.Fertigkeitswert < 12 {
stammF.Initialkeitswert = 5
} else {
stammF.Initialkeitswert = 12
}
stammF.Bonuseigenschaft = "keine"
stammF.Quelle = fertigkeit.Quelle
//fmt.Println(stammF)
err = DB.Transaction(func(tx *gorm.DB) error {
// Save the main character record
if err := tx.Create(&stammF).Error; err != nil {
return fmt.Errorf("failed to save Fertigkeit Stammdaten: %w", err)
}
return nil
})
assert.NoError(t, err, "Expected no error saving Fertigkeit Stammdaten in the database")
}
err = DB.First(&stammF, "system=? AND name = ?", "midgard", fertigkeit.Name).Error
fmt.Println(stammF) */
stammF, err := CheckFertigkeit(&fertigkeit, false)
assert.Error(t, err, "expexted Error does not exist in Fertigkeit Stammdaten")
if stammF == nil && err != nil {
stammF, err = CheckFertigkeit(&fertigkeit, true)
}
assert.NoError(t, err, "Expected to finds the Fertigkeit Stammdaten in the database")
assert.Equal(t, fertigkeit.Name, stammF.Name)
assert.Equal(t, fertigkeit.Beschreibung, stammF.Beschreibung)
//}
}
+1
View File
@@ -31,6 +31,7 @@ func main() {
r.PUT("/ausruestung/:ausruestung_id", AuthMiddleware(), UpdateAusruestung)
r.DELETE("/ausruestung/:ausruestung_id", AuthMiddleware(), DeleteAusruestung)
r.POST("/upload", AuthMiddleware(), UploadFiles)
r.GET("/setupcheck", AuthMiddleware(), SetupCheck)
r.Run(":8180") // Start server on port 8080
}
+5 -5
View File
@@ -49,7 +49,7 @@ type Eigenschaft struct {
}
type Ausruestung struct {
ID uint `gorm:"primaryKey"json:"dbid"`
ID uint `gorm:"primaryKey" json:"dbid"`
ImportID string `json:"id"`
CharacterID uint `gorm:"index" json:"character_id"`
Name string `json:"name"`
@@ -63,7 +63,7 @@ type Ausruestung struct {
}
type Fertigkeit struct {
ID uint `gorm:"primaryKey"json:"dbid"`
ID uint `gorm:"primaryKey" json:"dbid"`
ImportID string `json:"id"`
CharacterID uint `gorm:"index" json:"character_id"`
Name string `json:"name"`
@@ -84,7 +84,7 @@ type Zauber struct {
}
type Waffenfertigkeit struct {
ID uint `gorm:"primaryKey"json:"dbid"`
ID uint `gorm:"primaryKey" json:"dbid"`
ImportID string `json:"id"`
CharacterID uint `gorm:"index" json:"character_id"`
Name string `json:"name"`
@@ -96,7 +96,7 @@ type Waffenfertigkeit struct {
}
type Waffe struct {
ID uint `gorm:"primaryKey"json:"dbid"`
ID uint `gorm:"primaryKey" json:"dbid"`
ImportID string `json:"id"`
CharacterID uint `gorm:"index" json:"character_id"`
Name string `json:"name"`
@@ -163,7 +163,7 @@ type Bennies struct {
}
type Behaeltniss struct {
ID uint `gorm:"primaryKey"json:"dbid"`
ID uint `gorm:"primaryKey" json:"dbid"`
ImportID string `json:"id"`
CharacterID uint `gorm:"index" json:"character_id"`
Name string `json:"name"`
+52
View File
@@ -0,0 +1,52 @@
package main
import (
"fmt"
"strings"
"gorm.io/gorm"
)
func CheckFertigkeit(fertigkeit *Fertigkeit, autocreate bool) (*StammFertigkeit, error) {
stammF := StammFertigkeit{}
if strings.HasPrefix(fertigkeit.ImportID, "moam") {
err := DB.First(&stammF, "system=? AND name = ?", "midgard", fertigkeit.Name).Error
if err == nil {
// Fertigkeit found
return &stammF, nil
}
if !autocreate {
return nil, fmt.Errorf("does not exist in Fertigkeit Stammdaten")
}
stammF.System = "midgard"
stammF.Name = fertigkeit.Name
stammF.Beschreibung = fertigkeit.Beschreibung
if fertigkeit.Fertigkeitswert < 12 {
stammF.Initialkeitswert = 5
} else {
stammF.Initialkeitswert = 12
}
stammF.Bonuseigenschaft = "keine"
stammF.Quelle = fertigkeit.Quelle
//fmt.Println(stammF)
err = DB.Transaction(func(tx *gorm.DB) error {
// Save the main character record
if err := tx.Create(&stammF).Error; err != nil {
return fmt.Errorf("failed to save Fertigkeit Stammdaten: %w", err)
}
return nil
})
if err != nil {
// Fertigkeit found
return nil, err
}
}
err := DB.First(&stammF, "system=? AND name = ?", "midgard", fertigkeit.Name).Error
if err != nil {
// Fertigkeit found
return nil, err
}
return &stammF, nil
}
+43
View File
@@ -1,3 +1,46 @@
module bamort
go 1.23.2
require (
filippo.io/edwards25519 v1.1.0 // indirect
github.com/bytedance/sonic v1.12.6 // indirect
github.com/bytedance/sonic/loader v0.2.1 // indirect
github.com/cloudwego/base64x v0.1.4 // indirect
github.com/cloudwego/iasm v0.2.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/gabriel-vasile/mimetype v1.4.7 // indirect
github.com/gin-contrib/cors v1.7.2 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/gin-gonic/gin v1.10.0 // indirect
github.com/go-bindata/go-bindata v3.1.2+incompatible // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.23.0 // indirect
github.com/go-sql-driver/mysql v1.8.1 // indirect
github.com/goccy/go-json v0.10.4 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/cpuid/v2 v2.2.9 // indirect
github.com/leodido/go-urn v1.4.0 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-sqlite3 v1.14.24 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/stretchr/testify v1.10.0 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.12 // indirect
golang.org/x/arch v0.12.0 // indirect
golang.org/x/crypto v0.31.0 // indirect
golang.org/x/net v0.33.0 // indirect
golang.org/x/sys v0.28.0 // indirect
golang.org/x/text v0.21.0 // indirect
google.golang.org/protobuf v1.36.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gorm.io/driver/mysql v1.5.7 // indirect
gorm.io/driver/sqlite v1.5.7 // indirect
gorm.io/gorm v1.25.12 // indirect
)