equipment und skills migriert
This commit is contained in:
@@ -3,13 +3,11 @@ package api
|
||||
import (
|
||||
"bamort/character"
|
||||
"bamort/database"
|
||||
"bamort/equipment"
|
||||
"bamort/gsmaster"
|
||||
"bamort/importer"
|
||||
_ "bamort/maintenance" // Anonymous import to ensure init() is called
|
||||
"bamort/models"
|
||||
"bamort/router"
|
||||
"bamort/skills"
|
||||
"bamort/user"
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
@@ -64,11 +62,12 @@ func TestSetupCheck(t *testing.T) {
|
||||
err = user.MigrateStructure()
|
||||
assert.NoError(t, err, "No error expected when migrating user tables")
|
||||
|
||||
err = equipment.MigrateStructure()
|
||||
/*err = equipment.MigrateStructure()
|
||||
assert.NoError(t, err, "No error expected when migrating equipment tables")
|
||||
|
||||
err = skills.MigrateStructure()
|
||||
assert.NoError(t, err, "No error expected when migrating skill tables")
|
||||
*/
|
||||
|
||||
err = importer.MigrateStructure()
|
||||
assert.NoError(t, err, "No error expected when migrating importer tables")
|
||||
|
||||
@@ -2,9 +2,7 @@ package character
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
"bamort/equipment"
|
||||
"bamort/models"
|
||||
"bamort/skills"
|
||||
"encoding/base64"
|
||||
"fmt"
|
||||
"os"
|
||||
@@ -83,7 +81,7 @@ func createChar() *models.Char {
|
||||
{Name: "Wk", Value: 71},
|
||||
{Name: "Zt", Value: 35},
|
||||
}
|
||||
char.Fertigkeiten = []skills.Fertigkeit{
|
||||
char.Fertigkeiten = []models.SkFertigkeit{
|
||||
{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
@@ -121,9 +119,9 @@ func createChar() *models.Char {
|
||||
Bemerkung: "",
|
||||
},
|
||||
}
|
||||
char.Waffenfertigkeiten = []skills.Waffenfertigkeit{
|
||||
char.Waffenfertigkeiten = []models.SkWaffenfertigkeit{
|
||||
{
|
||||
Fertigkeit: skills.Fertigkeit{
|
||||
SkFertigkeit: models.SkFertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: "Armbr\u00fcste",
|
||||
@@ -137,7 +135,7 @@ func createChar() *models.Char {
|
||||
},
|
||||
},
|
||||
{
|
||||
Fertigkeit: skills.Fertigkeit{
|
||||
SkFertigkeit: models.SkFertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: "Einhandschlagwaffen",
|
||||
@@ -151,7 +149,7 @@ func createChar() *models.Char {
|
||||
},
|
||||
},
|
||||
{
|
||||
Fertigkeit: skills.Fertigkeit{
|
||||
SkFertigkeit: models.SkFertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: "Schilde",
|
||||
@@ -165,7 +163,7 @@ func createChar() *models.Char {
|
||||
},
|
||||
},
|
||||
}
|
||||
char.Zauber = []skills.Zauber{
|
||||
char.Zauber = []models.SkZauber{
|
||||
{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
@@ -198,7 +196,7 @@ func createChar() *models.Char {
|
||||
},
|
||||
},
|
||||
}
|
||||
char.Waffen = []equipment.Waffe{
|
||||
char.Waffen = []models.EqWaffe{
|
||||
{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
@@ -221,7 +219,7 @@ func createChar() *models.Char {
|
||||
BeinhaltetIn: "moam-container-47363",
|
||||
},
|
||||
}
|
||||
char.Behaeltnisse = []equipment.Container{
|
||||
char.Behaeltnisse = []models.EqContainer{
|
||||
{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
@@ -242,7 +240,7 @@ func createChar() *models.Char {
|
||||
BeinhaltetIn: "moam-container-47363",
|
||||
},
|
||||
}
|
||||
char.Transportmittel = []equipment.Container{
|
||||
char.Transportmittel = []models.EqContainer{
|
||||
{
|
||||
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
@@ -265,7 +263,7 @@ func createChar() *models.Char {
|
||||
|
||||
},
|
||||
}
|
||||
char.Ausruestung = []equipment.Ausruestung{
|
||||
char.Ausruestung = []models.EqAusruestung{
|
||||
{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
@@ -291,9 +289,9 @@ func createChar() *models.Char {
|
||||
return &char
|
||||
}
|
||||
|
||||
func createFertigkeit(sel int) *skills.Fertigkeit {
|
||||
func createFertigkeit(sel int) *models.SkFertigkeit {
|
||||
|
||||
liste := []skills.Fertigkeit{
|
||||
liste := []models.SkFertigkeit{
|
||||
{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
@@ -338,11 +336,11 @@ func createFertigkeit(sel int) *skills.Fertigkeit {
|
||||
return &liste[sel]
|
||||
}
|
||||
|
||||
func createWaffenfertigkeit(sel int) *skills.Waffenfertigkeit {
|
||||
func createWaffenfertigkeit(sel int) *models.SkWaffenfertigkeit {
|
||||
|
||||
liste := []skills.Waffenfertigkeit{
|
||||
liste := []models.SkWaffenfertigkeit{
|
||||
{
|
||||
Fertigkeit: skills.Fertigkeit{
|
||||
SkFertigkeit: models.SkFertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: "Einhandschwerter",
|
||||
@@ -356,7 +354,7 @@ func createWaffenfertigkeit(sel int) *skills.Waffenfertigkeit {
|
||||
},
|
||||
},
|
||||
{
|
||||
Fertigkeit: skills.Fertigkeit{
|
||||
SkFertigkeit: models.SkFertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: "Zweihandschlagwaffen",
|
||||
@@ -370,7 +368,7 @@ func createWaffenfertigkeit(sel int) *skills.Waffenfertigkeit {
|
||||
},
|
||||
},
|
||||
{
|
||||
Fertigkeit: skills.Fertigkeit{
|
||||
SkFertigkeit: models.SkFertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: "Stichwaffen",
|
||||
@@ -391,9 +389,9 @@ func createWaffenfertigkeit(sel int) *skills.Waffenfertigkeit {
|
||||
return &liste[sel]
|
||||
}
|
||||
|
||||
func createZauber(sel int) *skills.Zauber {
|
||||
func createZauber(sel int) *models.SkZauber {
|
||||
|
||||
liste := []skills.Zauber{
|
||||
liste := []models.SkZauber{
|
||||
{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
@@ -411,9 +409,9 @@ func createZauber(sel int) *skills.Zauber {
|
||||
return &liste[sel]
|
||||
}
|
||||
|
||||
func createWaffen(sel int) *equipment.Waffe {
|
||||
func createWaffen(sel int) *models.EqWaffe {
|
||||
|
||||
liste := []equipment.Waffe{
|
||||
liste := []models.EqWaffe{
|
||||
{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
@@ -442,8 +440,8 @@ func createWaffen(sel int) *equipment.Waffe {
|
||||
return &liste[sel]
|
||||
}
|
||||
|
||||
func createBehaeltniss(sel int) *equipment.Container {
|
||||
liste := []equipment.Container{
|
||||
func createBehaeltniss(sel int) *models.EqContainer {
|
||||
liste := []models.EqContainer{
|
||||
{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
@@ -470,8 +468,8 @@ func createBehaeltniss(sel int) *equipment.Container {
|
||||
return &liste[sel]
|
||||
}
|
||||
|
||||
func createTransportmittel(sel int) *equipment.Container {
|
||||
liste := []equipment.Container{
|
||||
func createTransportmittel(sel int) *models.EqContainer {
|
||||
liste := []models.EqContainer{
|
||||
{
|
||||
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
@@ -501,8 +499,8 @@ func createTransportmittel(sel int) *equipment.Container {
|
||||
return &liste[sel]
|
||||
}
|
||||
|
||||
func createAusruestung(sel int) *equipment.Ausruestung {
|
||||
liste := []equipment.Ausruestung{
|
||||
func createAusruestung(sel int) *models.EqAusruestung {
|
||||
liste := []models.EqAusruestung{
|
||||
{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
@@ -745,12 +743,14 @@ func charTests(t *testing.T, char *models.Char) {
|
||||
func TestCreateChar(t *testing.T) {
|
||||
database.SetupTestDB()
|
||||
err := models.MigrateStructure()
|
||||
if err == nil {
|
||||
err = skills.MigrateStructure()
|
||||
/*
|
||||
if err == nil {
|
||||
err = equipment.MigrateStructure()
|
||||
err = skills.MigrateStructure()
|
||||
if err == nil {
|
||||
err = equipment.MigrateStructure()
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
assert.NoError(t, err, "expected no error MigrateStructure")
|
||||
char := createChar()
|
||||
|
||||
|
||||
@@ -2,9 +2,7 @@ package character
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
"bamort/equipment"
|
||||
"bamort/models"
|
||||
"bamort/skills"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strconv"
|
||||
@@ -24,10 +22,11 @@ func TestDebugPracticePoints(t *testing.T) {
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Also migrate skills and equipment to avoid errors
|
||||
err = skills.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
err = equipment.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
/*
|
||||
err = skills.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
err = equipment.MigrateStructure()
|
||||
assert.NoError(t, err)*/
|
||||
|
||||
// Create a test character manually using GORM
|
||||
character := &models.Char{
|
||||
|
||||
@@ -4,7 +4,6 @@ import (
|
||||
"bamort/database"
|
||||
"bamort/gsmaster"
|
||||
"bamort/models"
|
||||
"bamort/skills"
|
||||
|
||||
"fmt"
|
||||
"net/http"
|
||||
@@ -114,7 +113,7 @@ func DeleteCharacter(c *gin.Context) {
|
||||
}
|
||||
|
||||
// Add Fertigkeit by putting it directly to the DB
|
||||
func AddFertigkeit(charID uint, fertigkeit *skills.Fertigkeit) error {
|
||||
func AddFertigkeit(charID uint, fertigkeit *models.SkFertigkeit) error {
|
||||
// Set the foreign key for the new Eigenschaft
|
||||
fertigkeit.CharacterID = charID
|
||||
|
||||
@@ -139,11 +138,11 @@ func ToFeChar(object *models.Char) *models.FeChar {
|
||||
return feC
|
||||
}
|
||||
|
||||
func splitSkills(object []skills.Fertigkeit) ([]skills.Fertigkeit, []skills.Fertigkeit, map[string][]skills.Fertigkeit) {
|
||||
var normSkills []skills.Fertigkeit
|
||||
var innateSkills []skills.Fertigkeit
|
||||
//var categories map[string][]skills.Fertigkeit
|
||||
categories := make(map[string][]skills.Fertigkeit)
|
||||
func splitSkills(object []models.SkFertigkeit) ([]models.SkFertigkeit, []models.SkFertigkeit, map[string][]models.SkFertigkeit) {
|
||||
var normSkills []models.SkFertigkeit
|
||||
var innateSkills []models.SkFertigkeit
|
||||
//var categories map[string][]models.Fertigkeit
|
||||
categories := make(map[string][]models.SkFertigkeit)
|
||||
for _, skill := range object {
|
||||
gsmsk := skill.GetGsm()
|
||||
if gsmsk.Improvable {
|
||||
@@ -153,7 +152,7 @@ func splitSkills(object []skills.Fertigkeit) ([]skills.Fertigkeit, []skills.Fert
|
||||
}
|
||||
normSkills = append(normSkills, skill)
|
||||
if _, exists := categories[category]; !exists {
|
||||
categories[category] = make([]skills.Fertigkeit, 0)
|
||||
categories[category] = make([]models.SkFertigkeit, 0)
|
||||
}
|
||||
categories[category] = append(categories[category], skill)
|
||||
} else {
|
||||
@@ -176,7 +175,7 @@ func GetLearnSkillCost(c *gin.Context) {
|
||||
}
|
||||
|
||||
// Load the skill from the request
|
||||
var s skills.Fertigkeit
|
||||
var s models.SkFertigkeit
|
||||
if err := c.ShouldBindJSON(&s); err != nil {
|
||||
respondWithError(c, http.StatusBadRequest, err.Error())
|
||||
return
|
||||
@@ -210,7 +209,7 @@ func GetLearnSpellCost(c *gin.Context) {
|
||||
}
|
||||
|
||||
// Load the spell from the request
|
||||
var s skills.Zauber
|
||||
var s models.SkZauber
|
||||
if err := c.ShouldBindJSON(&s); err != nil {
|
||||
respondWithError(c, http.StatusBadRequest, err.Error())
|
||||
return
|
||||
@@ -259,7 +258,7 @@ func GetSkillNextLevelCosts(c *gin.Context) {
|
||||
}
|
||||
|
||||
// Load the skill from the request
|
||||
var s skills.Fertigkeit
|
||||
var s models.Fertigkeit
|
||||
if err := c.ShouldBindJSON(&s); err != nil {
|
||||
respondWithError(c, http.StatusBadRequest, err.Error())
|
||||
return
|
||||
@@ -611,7 +610,7 @@ func updateOrCreateSkill(character *models.Char, skillName string, newLevel int)
|
||||
}
|
||||
|
||||
// Fertigkeit nicht gefunden - erstelle neue normale Fertigkeit
|
||||
newSkill := skills.Fertigkeit{
|
||||
newSkill := models.SkFertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: skillName,
|
||||
@@ -632,7 +631,7 @@ func updateOrCreateSkill(character *models.Char, skillName string, newLevel int)
|
||||
}
|
||||
|
||||
// addSpellToCharacter fügt einen neuen Zauber zum Charakter hinzu
|
||||
func addSpellToCharacter(character *Char, spellName string) error {
|
||||
func addSpellToCharacter(character *models.Char, spellName string) error {
|
||||
// Prüfe, ob Zauber bereits existiert
|
||||
for _, spell := range character.Zauber {
|
||||
if spell.Name == spellName {
|
||||
@@ -642,7 +641,7 @@ func addSpellToCharacter(character *Char, spellName string) error {
|
||||
}
|
||||
|
||||
// Erstelle neuen Zauber
|
||||
newSpell := skills.Zauber{
|
||||
newSpell := models.SkZauber{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: spellName,
|
||||
|
||||
@@ -9,7 +9,6 @@ import (
|
||||
|
||||
"bamort/database"
|
||||
"bamort/models"
|
||||
"bamort/skills"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/stretchr/testify/assert"
|
||||
@@ -24,8 +23,10 @@ func TestImproveSkillHandler(t *testing.T) {
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Also migrate skills and equipment to avoid preload errors
|
||||
err = skills.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
/*
|
||||
err = skills.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
*/
|
||||
|
||||
// Create test character with ID 20
|
||||
/*
|
||||
@@ -53,7 +54,7 @@ func TestImproveSkillHandler(t *testing.T) {
|
||||
|
||||
|
||||
// Add Athletik skill at level 9
|
||||
athletikSkill := skills.Fertigkeit{
|
||||
athletikSkill := models.Fertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: "Athletik",
|
||||
@@ -177,7 +178,7 @@ func TestImproveSkillHandler(t *testing.T) {
|
||||
}
|
||||
|
||||
// Add skill
|
||||
skill := skills.Fertigkeit{
|
||||
skill := models.SkFertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: "Athletik",
|
||||
|
||||
@@ -2,10 +2,8 @@ package character
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
"bamort/equipment"
|
||||
"bamort/gsmaster"
|
||||
"bamort/models"
|
||||
"bamort/skills"
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
@@ -27,10 +25,11 @@ func TestImprovedSkillCostAPI(t *testing.T) {
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Also migrate skills and equipment to avoid preload errors
|
||||
err = skills.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
err = equipment.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
/*
|
||||
err = skills.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
err = equipment.MigrateStructure()
|
||||
assert.NoError(t, err)*/
|
||||
|
||||
// Create test skill data
|
||||
err = createTestSkillData()
|
||||
@@ -381,7 +380,7 @@ func TestGetSkillAllLevelCostsEndpoint(t *testing.T) {
|
||||
|
||||
// Add Menschenkenntnis skill at level 8 so we can improve to level 10
|
||||
skillName := "Menschenkenntnis"
|
||||
skill := skills.Fertigkeit{
|
||||
skill := models.Fertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: skillName,
|
||||
@@ -605,10 +604,11 @@ func TestGetLernCostEndpoint(t *testing.T) {
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Also migrate skills and equipment to avoid preload errors
|
||||
err = skills.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
err = equipment.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
/*
|
||||
err = skills.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
err = equipment.MigrateStructure()
|
||||
assert.NoError(t, err)*/
|
||||
/*
|
||||
// Create test skill data
|
||||
err = createTestSkillData()
|
||||
@@ -621,7 +621,7 @@ func TestGetLernCostEndpoint(t *testing.T) {
|
||||
|
||||
// Add Athletik skill at level 9
|
||||
skillName := "Athletik"
|
||||
skill := skills.Fertigkeit{
|
||||
skill := models.Fertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: skillName,
|
||||
|
||||
@@ -2,9 +2,7 @@ package character
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
"bamort/equipment"
|
||||
"bamort/models"
|
||||
"bamort/skills"
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
@@ -26,10 +24,11 @@ func TestPracticePointsAPI(t *testing.T) {
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Also migrate skills and equipment to avoid preload errors
|
||||
err = skills.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
err = equipment.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
/*
|
||||
err = skills.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
err = equipment.MigrateStructure()
|
||||
assert.NoError(t, err)*/
|
||||
|
||||
// Create test skill data
|
||||
err = createTestSkillData()
|
||||
@@ -48,7 +47,7 @@ func TestPracticePointsAPI(t *testing.T) {
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Add a test skill to the character
|
||||
testSkill := &skills.Fertigkeit{
|
||||
testSkill := &models.SkFertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: "Menschenkenntnis",
|
||||
@@ -63,7 +62,7 @@ func TestPracticePointsAPI(t *testing.T) {
|
||||
assert.NoError(t, result.Error)
|
||||
|
||||
// Add a test spell to the character
|
||||
testSpell := &skills.Fertigkeit{
|
||||
testSpell := &models.SkFertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: "Macht über das Selbst",
|
||||
@@ -78,7 +77,7 @@ func TestPracticePointsAPI(t *testing.T) {
|
||||
assert.NoError(t, result.Error)
|
||||
|
||||
// Add the "Beherrschen" magic school as a skill since spell PP go to the magic school
|
||||
beherrschenSkill := &skills.Fertigkeit{
|
||||
beherrschenSkill := &models.SkFertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: "Beherrschen",
|
||||
|
||||
@@ -2,25 +2,25 @@ package character
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
"bamort/skills"
|
||||
"bamort/models"
|
||||
)
|
||||
|
||||
// determineSkillType ermittelt automatisch den Typ einer Fertigkeit anhand des Namens
|
||||
func determineSkillType(skillName string) string {
|
||||
// Prüfe ob es eine normale Fertigkeit ist
|
||||
var fertigkeit skills.Fertigkeit
|
||||
var fertigkeit models.SkFertigkeit
|
||||
if err := database.DB.Where("name = ?", skillName).First(&fertigkeit).Error; err == nil {
|
||||
return "fertigkeit"
|
||||
}
|
||||
|
||||
// Prüfe ob es eine Waffenfertigkeit ist
|
||||
var waffenfertigkeit skills.Waffenfertigkeit
|
||||
var waffenfertigkeit models.SkWaffenfertigkeit
|
||||
if err := database.DB.Where("name = ?", skillName).First(&waffenfertigkeit).Error; err == nil {
|
||||
return "waffenfertigkeit"
|
||||
}
|
||||
|
||||
// Prüfe ob es ein Zauber ist
|
||||
var zauber skills.Zauber
|
||||
var zauber models.SkZauber
|
||||
if err := database.DB.Where("name = ?", skillName).First(&zauber).Error; err == nil {
|
||||
return "zauber"
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import (
|
||||
|
||||
"bamort/database"
|
||||
"bamort/models"
|
||||
"bamort/skills"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/stretchr/testify/assert"
|
||||
@@ -25,8 +24,10 @@ func TestImproveSkillUpdatesLevel(t *testing.T) {
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Also migrate skills and equipment to avoid preload errors
|
||||
err = skills.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
/*
|
||||
err = skills.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
*/
|
||||
|
||||
// Try to migrate equipment if it exists
|
||||
if equipmentDB := database.DB.Exec("CREATE TABLE IF NOT EXISTS equi_equipments (id INTEGER PRIMARY KEY, character_id INTEGER, name TEXT)"); equipmentDB.Error != nil {
|
||||
@@ -77,7 +78,7 @@ func TestImproveSkillUpdatesLevel(t *testing.T) {
|
||||
}
|
||||
|
||||
// Add Athletik skill at level 9
|
||||
athletikSkill := skills.Fertigkeit{
|
||||
athletikSkill := models.SkFertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: "Athletik",
|
||||
|
||||
@@ -2,9 +2,7 @@ package character
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
"bamort/equipment"
|
||||
"bamort/models"
|
||||
"bamort/skills"
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
@@ -24,10 +22,11 @@ func TestSpellCategoryMapping(t *testing.T) {
|
||||
// Migrate the schema
|
||||
err := models.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
err = skills.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
err = equipment.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
/*
|
||||
err = skills.MigrateStructure()
|
||||
assert.NoError(t, err)
|
||||
err = equipment.MigrateStructure()
|
||||
assert.NoError(t, err)*/
|
||||
|
||||
// Create test skill data
|
||||
err = createTestSkillData()
|
||||
@@ -46,7 +45,7 @@ func TestSpellCategoryMapping(t *testing.T) {
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Add the "Beherrschen" magic school as a skill
|
||||
beherrschenSkill := &skills.Fertigkeit{
|
||||
beherrschenSkill := &models.SkFertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: "Beherrschen",
|
||||
|
||||
@@ -3,13 +3,12 @@ package character
|
||||
import (
|
||||
"bamort/database"
|
||||
"bamort/models"
|
||||
"bamort/skills"
|
||||
)
|
||||
|
||||
// createTestSkillData erstellt Test-Daten für Skills und Spells
|
||||
func createTestSkillData() error {
|
||||
// Test-Fertigkeit erstellen
|
||||
testSkill := skills.Fertigkeit{
|
||||
testSkill := models.SkFertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: "Menschenkenntnis",
|
||||
@@ -26,7 +25,7 @@ func createTestSkillData() error {
|
||||
}
|
||||
|
||||
// Test-Zauber erstellen
|
||||
testSpell := skills.Zauber{
|
||||
testSpell := models.SkZauber{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: "Macht über das Selbst",
|
||||
@@ -78,8 +77,8 @@ func createTestSkillData() error {
|
||||
|
||||
// cleanupTestSkillData entfernt Test-Daten
|
||||
func cleanupTestSkillData() {
|
||||
database.DB.Where("name = ?", "Menschenkenntnis").Delete(&skills.Fertigkeit{})
|
||||
database.DB.Where("name = ?", "Macht über das Selbst").Delete(&skills.Zauber{})
|
||||
database.DB.Where("name = ?", "Menschenkenntnis").Delete(&models.SkFertigkeit{})
|
||||
database.DB.Where("name = ?", "Macht über das Selbst").Delete(&models.SkZauber{})
|
||||
database.DB.Where("name = ?", "Menschenkenntnis").Delete(&models.Skill{})
|
||||
database.DB.Where("name = ?", "Macht über das Selbst").Delete(&models.Spell{})
|
||||
}
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
package equipment
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func MigrateStructure(db ...*gorm.DB) error {
|
||||
// Use provided DB or default to database.DB
|
||||
var targetDB *gorm.DB
|
||||
if len(db) > 0 && db[0] != nil {
|
||||
targetDB = db[0]
|
||||
} else {
|
||||
targetDB = database.DB
|
||||
}
|
||||
|
||||
err := targetDB.AutoMigrate(
|
||||
&Ausruestung{},
|
||||
&Waffe{},
|
||||
&Container{},
|
||||
//Transportation{},
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package equipment
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
"bamort/models"
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -19,7 +20,7 @@ func respondWithError(c *gin.Context, status int, message string) {
|
||||
}
|
||||
|
||||
func CreateAusruestung(c *gin.Context) {
|
||||
var ausruestung Ausruestung
|
||||
var ausruestung models.EqAusruestung
|
||||
if err := c.ShouldBindJSON(&ausruestung); err != nil {
|
||||
respondWithError(c, http.StatusBadRequest, err.Error())
|
||||
return
|
||||
@@ -36,7 +37,7 @@ func CreateAusruestung(c *gin.Context) {
|
||||
func ListAusruestung(c *gin.Context) {
|
||||
characterID := c.Param("character_id")
|
||||
|
||||
var ausruestung []Ausruestung
|
||||
var ausruestung []models.EqAusruestung
|
||||
if err := database.DB.Where("character_id = ?", characterID).Find(&ausruestung).Error; err != nil {
|
||||
respondWithError(c, http.StatusInternalServerError, "Failed to retrieve Ausruestung")
|
||||
return
|
||||
@@ -47,7 +48,7 @@ func ListAusruestung(c *gin.Context) {
|
||||
|
||||
func UpdateAusruestung(c *gin.Context) {
|
||||
ausruestungID := c.Param("ausruestung_id")
|
||||
var ausruestung Ausruestung
|
||||
var ausruestung models.EqAusruestung
|
||||
|
||||
if err := database.DB.First(&ausruestung, ausruestungID).Error; err != nil {
|
||||
respondWithError(c, http.StatusNotFound, "Ausruestung not found")
|
||||
@@ -69,7 +70,7 @@ func UpdateAusruestung(c *gin.Context) {
|
||||
|
||||
func DeleteAusruestung(c *gin.Context) {
|
||||
ausruestungID := c.Param("ausruestung_id")
|
||||
if err := database.DB.Delete(&Ausruestung{}, ausruestungID).Error; err != nil {
|
||||
if err := database.DB.Delete(&models.EqAusruestung{}, ausruestungID).Error; err != nil {
|
||||
respondWithError(c, http.StatusInternalServerError, "Failed to delete Ausruestung")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -2,9 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
"bamort/equipment"
|
||||
"bamort/models"
|
||||
"bamort/skills"
|
||||
"bamort/user"
|
||||
"fmt"
|
||||
|
||||
@@ -57,7 +55,7 @@ func main() {
|
||||
return
|
||||
}
|
||||
|
||||
err = equipment.MigrateStructure(secondDB)
|
||||
/*err = equipment.MigrateStructure(secondDB)
|
||||
if err != nil {
|
||||
fmt.Printf("Fehler bei equipment Migration: %v\n", err)
|
||||
return
|
||||
@@ -68,6 +66,7 @@ func main() {
|
||||
fmt.Printf("Fehler bei skills Migration: %v\n", err)
|
||||
return
|
||||
}
|
||||
*/
|
||||
|
||||
fmt.Println("Migration zur zweiten Datenbank erfolgreich")
|
||||
|
||||
@@ -88,8 +87,8 @@ func migrateAllToSecondDB(db *gorm.DB) error {
|
||||
user.MigrateStructure,
|
||||
//character.MigrateStructure,
|
||||
models.MigrateStructure,
|
||||
equipment.MigrateStructure,
|
||||
skills.MigrateStructure,
|
||||
//equipment.MigrateStructure,
|
||||
//skills.MigrateStructure,
|
||||
}
|
||||
|
||||
for _, migrate := range migrators {
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
package importer
|
||||
|
||||
import (
|
||||
"bamort/equipment"
|
||||
"bamort/models"
|
||||
"bamort/skills"
|
||||
"encoding/json"
|
||||
"os"
|
||||
)
|
||||
@@ -71,7 +69,7 @@ func ImportVTTJSON(fileName string) (*models.Char, error) {
|
||||
char.Hand = imp.Hand
|
||||
char.Image = imp.Image
|
||||
for i := range imp.Fertigkeiten {
|
||||
char.Fertigkeiten = append(char.Fertigkeiten, skills.Fertigkeit{
|
||||
char.Fertigkeiten = append(char.Fertigkeiten, models.SkFertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{Name: imp.Fertigkeiten[i].Name},
|
||||
},
|
||||
@@ -82,7 +80,7 @@ func ImportVTTJSON(fileName string) (*models.Char, error) {
|
||||
})
|
||||
}
|
||||
for i := range imp.Zauber {
|
||||
char.Zauber = append(char.Zauber, skills.Zauber{
|
||||
char.Zauber = append(char.Zauber, models.SkZauber{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{Name: imp.Zauber[i].Name},
|
||||
},
|
||||
@@ -148,7 +146,7 @@ func ImportVTTJSON(fileName string) (*models.Char, error) {
|
||||
char.B.Value = imp.B.Value
|
||||
char.Erfahrungsschatz.ES = imp.Erfahrungsschatz.Value
|
||||
for i := range imp.Transportmittel {
|
||||
char.Transportmittel = append(char.Transportmittel, equipment.Container{
|
||||
char.Transportmittel = append(char.Transportmittel, models.EqContainer{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{Name: imp.Transportmittel[i].Name},
|
||||
},
|
||||
@@ -167,7 +165,7 @@ func ImportVTTJSON(fileName string) (*models.Char, error) {
|
||||
})
|
||||
}
|
||||
for i := range imp.Ausruestung {
|
||||
char.Ausruestung = append(char.Ausruestung, equipment.Ausruestung{
|
||||
char.Ausruestung = append(char.Ausruestung, models.EqAusruestung{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: imp.Ausruestung[i].Name},
|
||||
@@ -186,7 +184,7 @@ func ImportVTTJSON(fileName string) (*models.Char, error) {
|
||||
})
|
||||
}
|
||||
for i := range imp.Behaeltnisse {
|
||||
char.Behaeltnisse = append(char.Behaeltnisse, equipment.Container{
|
||||
char.Behaeltnisse = append(char.Behaeltnisse, models.EqContainer{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: imp.Behaeltnisse[i].Name},
|
||||
@@ -207,7 +205,7 @@ func ImportVTTJSON(fileName string) (*models.Char, error) {
|
||||
})
|
||||
}
|
||||
for i := range imp.Waffen {
|
||||
char.Waffen = append(char.Waffen, equipment.Waffe{
|
||||
char.Waffen = append(char.Waffen, models.EqWaffe{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: imp.Waffen[i].Name},
|
||||
@@ -230,8 +228,8 @@ func ImportVTTJSON(fileName string) (*models.Char, error) {
|
||||
|
||||
}
|
||||
for i := range imp.Waffenfertigkeiten {
|
||||
char.Waffenfertigkeiten = append(char.Waffenfertigkeiten, skills.Waffenfertigkeit{
|
||||
Fertigkeit: skills.Fertigkeit{
|
||||
char.Waffenfertigkeiten = append(char.Waffenfertigkeiten, models.SkWaffenfertigkeit{
|
||||
SkFertigkeit: models.SkFertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{Name: imp.Waffenfertigkeiten[i].Name},
|
||||
},
|
||||
|
||||
@@ -2,10 +2,8 @@ package maintenance
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
"bamort/equipment"
|
||||
"bamort/importer"
|
||||
"bamort/models"
|
||||
"bamort/skills"
|
||||
"bamort/user"
|
||||
"fmt"
|
||||
"net/http"
|
||||
@@ -53,12 +51,13 @@ func migrateAllStructures(db *gorm.DB) error {
|
||||
if err := models.MigrateStructure(db); err != nil {
|
||||
return fmt.Errorf("failed to migrate gsmaster structures: %w", err)
|
||||
}
|
||||
if err := equipment.MigrateStructure(db); err != nil {
|
||||
/*if err := equipment.MigrateStructure(db); err != nil {
|
||||
return fmt.Errorf("failed to migrate equipment structures: %w", err)
|
||||
}
|
||||
if err := skills.MigrateStructure(db); err != nil {
|
||||
return fmt.Errorf("failed to migrate skills structures: %w", err)
|
||||
}
|
||||
*/
|
||||
if err := importer.MigrateStructure(db); err != nil {
|
||||
return fmt.Errorf("failed to migrate importer structures: %w", err)
|
||||
}
|
||||
@@ -238,38 +237,38 @@ func copyAllDataToTestDB(liveDB, testDB *gorm.DB) (map[string]int, error) {
|
||||
stats["character_vermoegen"] = count
|
||||
|
||||
// Step 4: Copy skills (depends on characters)
|
||||
count, err = copyTableDataWithCount(liveDB, testDB, &skills.Fertigkeit{})
|
||||
count, err = copyTableDataWithCount(liveDB, testDB, &models.SkFertigkeit{})
|
||||
if err != nil {
|
||||
return stats, err
|
||||
}
|
||||
stats["skills_fertigkeiten"] = count
|
||||
|
||||
count, err = copyTableDataWithCount(liveDB, testDB, &skills.Waffenfertigkeit{})
|
||||
count, err = copyTableDataWithCount(liveDB, testDB, &models.SkWaffenfertigkeit{})
|
||||
if err != nil {
|
||||
return stats, err
|
||||
}
|
||||
stats["skills_waffenfertigkeiten"] = count
|
||||
|
||||
count, err = copyTableDataWithCount(liveDB, testDB, &skills.Zauber{})
|
||||
count, err = copyTableDataWithCount(liveDB, testDB, &models.SkZauber{})
|
||||
if err != nil {
|
||||
return stats, err
|
||||
}
|
||||
stats["skills_zauber"] = count
|
||||
|
||||
// Step 5: Copy equipment (depends on characters)
|
||||
count, err = copyTableDataWithCount(liveDB, testDB, &equipment.Ausruestung{})
|
||||
count, err = copyTableDataWithCount(liveDB, testDB, &models.EqAusruestung{})
|
||||
if err != nil {
|
||||
return stats, err
|
||||
}
|
||||
stats["equipment_ausruestung"] = count
|
||||
|
||||
count, err = copyTableDataWithCount(liveDB, testDB, &equipment.Waffe{})
|
||||
count, err = copyTableDataWithCount(liveDB, testDB, &models.EqWaffe{})
|
||||
if err != nil {
|
||||
return stats, err
|
||||
}
|
||||
stats["equipment_waffen"] = count
|
||||
|
||||
count, err = copyTableDataWithCount(liveDB, testDB, &equipment.Container{})
|
||||
count, err = copyTableDataWithCount(liveDB, testDB, &models.EqContainer{})
|
||||
if err != nil {
|
||||
return stats, err
|
||||
}
|
||||
@@ -474,11 +473,11 @@ func getTestDataStatistics(db *gorm.DB) (map[string]int64, error) {
|
||||
"gsmaster_skills": &models.Skill{},
|
||||
"gsmaster_spells": &models.Spell{},
|
||||
"gsmaster_equipment": &models.Equipment{},
|
||||
"skills_fertigkeiten": &skills.Fertigkeit{},
|
||||
"skills_waffenfertigkeiten": &skills.Waffenfertigkeit{},
|
||||
"skills_zauber": &skills.Zauber{},
|
||||
"equipment_ausruestung": &equipment.Ausruestung{},
|
||||
"equipment_waffen": &equipment.Waffe{},
|
||||
"skills_fertigkeiten": &models.SkFertigkeit{},
|
||||
"skills_waffenfertigkeiten": &models.SkWaffenfertigkeit{},
|
||||
"skills_zauber": &models.SkZauber{},
|
||||
"equipment_ausruestung": &models.EqAusruestung{},
|
||||
"equipment_waffen": &models.EqWaffe{},
|
||||
}
|
||||
|
||||
for name, model := range tables {
|
||||
|
||||
@@ -2,9 +2,7 @@ package maintenance
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
"bamort/equipment"
|
||||
"bamort/models"
|
||||
"bamort/skills"
|
||||
"bamort/user"
|
||||
"fmt"
|
||||
"os"
|
||||
@@ -65,7 +63,7 @@ func createTestDataInLiveDB(t *testing.T, liveDB *gorm.DB) {
|
||||
require.NoError(t, err)
|
||||
|
||||
// Create character skill
|
||||
testCharSkill := &skills.Fertigkeit{
|
||||
testCharSkill := &models.SkFertigkeit{
|
||||
BamortCharTrait: models.BamortCharTrait{
|
||||
BamortBase: models.BamortBase{
|
||||
Name: "Test Skill",
|
||||
@@ -98,10 +96,10 @@ func TestMakeTestdataFromLiveRewrite(t *testing.T) {
|
||||
*/
|
||||
err = models.MigrateStructure(liveDB)
|
||||
require.NoError(t, err)
|
||||
err = skills.MigrateStructure(liveDB)
|
||||
require.NoError(t, err)
|
||||
err = equipment.MigrateStructure(liveDB)
|
||||
err = models.MigrateStructure(liveDB)
|
||||
require.NoError(t, err)
|
||||
/*err = equipment.MigrateStructure(liveDB)
|
||||
require.NoError(t, err)*/
|
||||
|
||||
// Create test data in live DB
|
||||
createTestDataInLiveDB(t, liveDB)
|
||||
@@ -120,10 +118,10 @@ func TestMakeTestdataFromLiveRewrite(t *testing.T) {
|
||||
require.NoError(t, err)*/
|
||||
err = models.MigrateStructure(testDb)
|
||||
require.NoError(t, err)
|
||||
err = skills.MigrateStructure(testDb)
|
||||
require.NoError(t, err)
|
||||
err = equipment.MigrateStructure(testDb)
|
||||
err = models.MigrateStructure(testDb)
|
||||
require.NoError(t, err)
|
||||
/*err = equipment.MigrateStructure(testDb)
|
||||
require.NoError(t, err)*/
|
||||
|
||||
// Test the copyAllDataToTestDB function
|
||||
copyStats, err := copyAllDataToTestDB(liveDB, testDb)
|
||||
@@ -183,10 +181,10 @@ func TestLoadPredefinedTestDataFromFile(t *testing.T) {
|
||||
require.NoError(t, err)*/
|
||||
err = models.MigrateStructure(sourceDB)
|
||||
require.NoError(t, err)
|
||||
err = skills.MigrateStructure(sourceDB)
|
||||
require.NoError(t, err)
|
||||
err = equipment.MigrateStructure(sourceDB)
|
||||
err = models.MigrateStructure(sourceDB)
|
||||
require.NoError(t, err)
|
||||
/*err = equipment.MigrateStructure(sourceDB)
|
||||
require.NoError(t, err)*/
|
||||
|
||||
// Create test data in source DB
|
||||
createTestDataInLiveDB(t, sourceDB)
|
||||
@@ -218,10 +216,10 @@ func TestLoadPredefinedTestDataFromFile(t *testing.T) {
|
||||
require.NoError(t, err)*/
|
||||
err = models.MigrateStructure(targetDB)
|
||||
require.NoError(t, err)
|
||||
err = skills.MigrateStructure(targetDB)
|
||||
require.NoError(t, err)
|
||||
err = equipment.MigrateStructure(targetDB)
|
||||
err = models.MigrateStructure(targetDB)
|
||||
require.NoError(t, err)
|
||||
/*err = equipment.MigrateStructure(targetDB)
|
||||
require.NoError(t, err)*/
|
||||
|
||||
// Load test data from the source file
|
||||
err = LoadPredefinedTestDataFromFile(targetDB, "testdata/test_source.db")
|
||||
@@ -296,10 +294,10 @@ func TestSetupTestDBWithTestData(t *testing.T) {
|
||||
require.NoError(t, err)*/
|
||||
err = models.MigrateStructure(sourceDB)
|
||||
require.NoError(t, err)
|
||||
err = skills.MigrateStructure(sourceDB)
|
||||
require.NoError(t, err)
|
||||
err = equipment.MigrateStructure(sourceDB)
|
||||
err = models.MigrateStructure(sourceDB)
|
||||
require.NoError(t, err)
|
||||
/*err = equipment.MigrateStructure(sourceDB)
|
||||
require.NoError(t, err)*/
|
||||
|
||||
createTestDataInLiveDB(t, sourceDB)
|
||||
|
||||
|
||||
@@ -23,6 +23,15 @@ func MigrateStructure(db ...*gorm.DB) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = equipmentMigrateStructure(targetDB)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = skillsMigrateStructure(targetDB)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -76,3 +85,44 @@ func characterMigrateStructure(db ...*gorm.DB) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func equipmentMigrateStructure(db ...*gorm.DB) error {
|
||||
// Use provided DB or default to database.DB
|
||||
var targetDB *gorm.DB
|
||||
if len(db) > 0 && db[0] != nil {
|
||||
targetDB = db[0]
|
||||
} else {
|
||||
targetDB = database.DB
|
||||
}
|
||||
|
||||
err := targetDB.AutoMigrate(
|
||||
&EqAusruestung{},
|
||||
&EqWaffe{},
|
||||
&EqContainer{},
|
||||
//Transportation{},
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func skillsMigrateStructure(db ...*gorm.DB) error {
|
||||
// Use provided DB or default to database.DB
|
||||
var targetDB *gorm.DB
|
||||
if len(db) > 0 && db[0] != nil {
|
||||
targetDB = db[0]
|
||||
} else {
|
||||
targetDB = database.DB
|
||||
}
|
||||
|
||||
err := targetDB.AutoMigrate(
|
||||
&SkFertigkeit{},
|
||||
&SkWaffenfertigkeit{},
|
||||
&SkZauber{},
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -2,8 +2,6 @@ package models
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
"bamort/equipment"
|
||||
"bamort/skills"
|
||||
"fmt"
|
||||
|
||||
"gorm.io/gorm"
|
||||
@@ -76,32 +74,32 @@ type Vermoegen struct {
|
||||
|
||||
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 []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"`
|
||||
Vermoegen Vermoegen `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"vermoegen"`
|
||||
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"`
|
||||
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 []SkFertigkeit `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"fertigkeiten"`
|
||||
Waffenfertigkeiten []SkWaffenfertigkeit `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"waffenfertigkeiten"`
|
||||
Zauber []SkZauber `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"`
|
||||
Vermoegen Vermoegen `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"vermoegen"`
|
||||
Erfahrungsschatz Erfahrungsschatz `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"erfahrungsschatz"`
|
||||
Waffen []EqWaffe `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"waffen"`
|
||||
Behaeltnisse []EqContainer `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"behaeltnisse"`
|
||||
Transportmittel []EqContainer `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"transportmittel"`
|
||||
Ausruestung []EqAusruestung `gorm:"foreignKey:CharacterID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE" json:"ausruestung"`
|
||||
Image string `json:"image,omitempty"`
|
||||
}
|
||||
type CharList struct {
|
||||
BamortBase
|
||||
@@ -114,8 +112,8 @@ type CharList struct {
|
||||
|
||||
type FeChar struct {
|
||||
Char
|
||||
CategorizedSkills map[string][]skills.Fertigkeit `json:"categorizedskills"`
|
||||
InnateSkills []skills.Fertigkeit `json:"innateskills"`
|
||||
CategorizedSkills map[string][]SkFertigkeit `json:"categorizedskills"`
|
||||
InnateSkills []SkFertigkeit `json:"innateskills"`
|
||||
}
|
||||
|
||||
func (object *Char) TableName() string {
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
package equipment
|
||||
package models
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
"bamort/models"
|
||||
)
|
||||
|
||||
var dbPrefix = "equi"
|
||||
|
||||
type Ausruestung struct {
|
||||
models.BamortCharTrait
|
||||
models.Magisch
|
||||
type EqAusruestung struct {
|
||||
BamortCharTrait
|
||||
Magisch
|
||||
Beschreibung string `json:"beschreibung"`
|
||||
Anzahl int `json:"anzahl"`
|
||||
BeinhaltetIn string `json:"beinhaltet_in"`
|
||||
@@ -20,9 +17,9 @@ type Ausruestung struct {
|
||||
Wert float64 `json:"wert"`
|
||||
}
|
||||
|
||||
type Waffe struct {
|
||||
models.BamortCharTrait
|
||||
models.Magisch
|
||||
type EqWaffe struct {
|
||||
BamortCharTrait
|
||||
Magisch
|
||||
Beschreibung string `json:"beschreibung"`
|
||||
Abwb int `json:"abwb"`
|
||||
Anb int `json:"anb"`
|
||||
@@ -36,9 +33,9 @@ type Waffe struct {
|
||||
Wert float64 `json:"wert"`
|
||||
}
|
||||
|
||||
type Container struct {
|
||||
models.BamortCharTrait
|
||||
models.Magisch
|
||||
type EqContainer struct {
|
||||
BamortCharTrait
|
||||
Magisch
|
||||
Beschreibung string `json:"beschreibung"`
|
||||
BeinhaltetIn string `json:"beinhaltet_in"`
|
||||
ContainedIn uint `json:"contained_in"`
|
||||
@@ -50,17 +47,20 @@ type Container struct {
|
||||
ExtID string `json:"ext_id"`
|
||||
}
|
||||
|
||||
func (object *Ausruestung) TableName() string {
|
||||
func (object *EqAusruestung) TableName() string {
|
||||
dbPrefix := "equi"
|
||||
return dbPrefix + "_" + "equipments"
|
||||
}
|
||||
func (object *Waffe) TableName() string {
|
||||
func (object *EqWaffe) TableName() string {
|
||||
dbPrefix := "equi"
|
||||
return dbPrefix + "_" + "weapons"
|
||||
}
|
||||
func (object *Container) TableName() string {
|
||||
func (object *EqContainer) TableName() string {
|
||||
dbPrefix := "equi"
|
||||
return dbPrefix + "_" + "containers"
|
||||
}
|
||||
|
||||
func (object *Container) FirstExtId(id string) error {
|
||||
func (object *EqContainer) FirstExtId(id string) error {
|
||||
err := database.DB.
|
||||
First(&object, "ext_id = ?", id).Error
|
||||
if err != nil {
|
||||
@@ -69,7 +69,7 @@ func (object *Container) FirstExtId(id string) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (object *Container) Save() error {
|
||||
func (object *EqContainer) Save() error {
|
||||
err := database.DB.Save(&object).Error
|
||||
if err != nil {
|
||||
// Container saved
|
||||
@@ -78,7 +78,7 @@ func (object *Container) Save() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (object *Ausruestung) Save() error {
|
||||
func (object *EqAusruestung) Save() error {
|
||||
err := database.DB.Save(&object).Error
|
||||
if err != nil {
|
||||
// Ausruestung saved
|
||||
@@ -86,7 +86,7 @@ func (object *Ausruestung) Save() error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (object *Waffe) Save() error {
|
||||
func (object *EqWaffe) Save() error {
|
||||
err := database.DB.Save(&object).Error
|
||||
if err != nil {
|
||||
// Waffe saved
|
||||
@@ -95,10 +95,10 @@ func (object *Waffe) Save() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (object *Ausruestung) LinkContainer() error {
|
||||
func (object *EqAusruestung) LinkContainer() error {
|
||||
//var err error
|
||||
if object.BeinhaltetIn != "" {
|
||||
co := Container{}
|
||||
co := EqContainer{}
|
||||
co.FirstExtId(object.BeinhaltetIn)
|
||||
if co.ID > 0 {
|
||||
object.ContainedIn = co.ID
|
||||
@@ -115,10 +115,10 @@ func (object *Ausruestung) LinkContainer() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (object *Waffe) LinkContainer() error {
|
||||
func (object *EqWaffe) LinkContainer() error {
|
||||
//var err error
|
||||
if object.BeinhaltetIn != "" {
|
||||
co := Container{}
|
||||
co := EqContainer{}
|
||||
co.FirstExtId(object.BeinhaltetIn)
|
||||
if co.ID > 0 {
|
||||
object.ContainedIn = co.ID
|
||||
@@ -135,10 +135,10 @@ func (object *Waffe) LinkContainer() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (object *Container) LinkContainer() error {
|
||||
func (object *EqContainer) LinkContainer() error {
|
||||
//var err error
|
||||
if object.BeinhaltetIn != "" {
|
||||
co := Container{}
|
||||
co := EqContainer{}
|
||||
co.FirstExtId(object.BeinhaltetIn)
|
||||
if co.ID > 0 {
|
||||
object.ContainedIn = co.ID
|
||||
@@ -0,0 +1,63 @@
|
||||
package models
|
||||
|
||||
type SkFertigkeit struct {
|
||||
BamortCharTrait
|
||||
Beschreibung string `json:"beschreibung"`
|
||||
Fertigkeitswert int `json:"fertigkeitswert"`
|
||||
Bonus int `json:"bonus,omitempty"`
|
||||
Pp int `json:"pp,omitempty"` //Praxispunkte
|
||||
Bemerkung string `json:"bemerkung"`
|
||||
Improvable bool `json:"improvable"`
|
||||
Category string `json:"category"`
|
||||
LearningCost LearnCost `gorm:"-" json:"learncost"`
|
||||
}
|
||||
|
||||
type SkWaffenfertigkeit struct {
|
||||
SkFertigkeit
|
||||
}
|
||||
|
||||
type SkAngeboreneFertigkeit struct {
|
||||
SkFertigkeit
|
||||
}
|
||||
|
||||
type SkZauber struct {
|
||||
BamortCharTrait
|
||||
Beschreibung string `json:"beschreibung"`
|
||||
Bonus int `json:"bonus"`
|
||||
Quelle string `json:"quelle"`
|
||||
}
|
||||
|
||||
func (object *SkFertigkeit) TableName() string {
|
||||
dbPrefix := "skill"
|
||||
return dbPrefix + "_" + "skills"
|
||||
}
|
||||
func (object *SkWaffenfertigkeit) TableName() string {
|
||||
dbPrefix := "skill"
|
||||
return dbPrefix + "_" + "weaponskills"
|
||||
}
|
||||
func (object *SkZauber) TableName() string {
|
||||
dbPrefix := "skill"
|
||||
return dbPrefix + "_" + "spells"
|
||||
}
|
||||
|
||||
func (object *SkFertigkeit) GetGsm() *Skill {
|
||||
var gsmsk Skill
|
||||
gsmsk.First(object.Name)
|
||||
if gsmsk.ID == 0 {
|
||||
return nil
|
||||
}
|
||||
return &gsmsk
|
||||
}
|
||||
|
||||
func (object *SkFertigkeit) GetCategory() string {
|
||||
if object.Category != "" {
|
||||
return object.Category
|
||||
}
|
||||
var gsmsk Skill
|
||||
gsmsk.First(object.Name)
|
||||
if gsmsk.ID == 0 {
|
||||
return "Unkategorisiert"
|
||||
}
|
||||
object.Category = gsmsk.Category
|
||||
return object.Category
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
package skills
|
||||
|
||||
import (
|
||||
"bamort/database"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func MigrateStructure(db ...*gorm.DB) error {
|
||||
// Use provided DB or default to database.DB
|
||||
var targetDB *gorm.DB
|
||||
if len(db) > 0 && db[0] != nil {
|
||||
targetDB = db[0]
|
||||
} else {
|
||||
targetDB = database.DB
|
||||
}
|
||||
|
||||
err := targetDB.AutoMigrate(
|
||||
&Fertigkeit{},
|
||||
&Waffenfertigkeit{},
|
||||
&Zauber{},
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
package skills
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// Helper function for error responses
|
||||
func respondWithError(c *gin.Context, status int, message string) {
|
||||
c.JSON(status, gin.H{"error": message})
|
||||
}
|
||||
@@ -1,66 +0,0 @@
|
||||
package skills
|
||||
|
||||
import (
|
||||
"bamort/models"
|
||||
)
|
||||
|
||||
var dbPrefix = "skill"
|
||||
|
||||
type Fertigkeit struct {
|
||||
models.BamortCharTrait
|
||||
Beschreibung string `json:"beschreibung"`
|
||||
Fertigkeitswert int `json:"fertigkeitswert"`
|
||||
Bonus int `json:"bonus,omitempty"`
|
||||
Pp int `json:"pp,omitempty"` //Praxispunkte
|
||||
Bemerkung string `json:"bemerkung"`
|
||||
Improvable bool `json:"improvable"`
|
||||
Category string `json:"category"`
|
||||
LearningCost models.LearnCost `gorm:"-" json:"learncost"`
|
||||
}
|
||||
|
||||
type Waffenfertigkeit struct {
|
||||
Fertigkeit
|
||||
}
|
||||
|
||||
type AngeboreneFertigkeit struct {
|
||||
Fertigkeit
|
||||
}
|
||||
|
||||
type Zauber struct {
|
||||
models.BamortCharTrait
|
||||
Beschreibung string `json:"beschreibung"`
|
||||
Bonus int `json:"bonus"`
|
||||
Quelle string `json:"quelle"`
|
||||
}
|
||||
|
||||
func (object *Fertigkeit) TableName() string {
|
||||
return dbPrefix + "_" + "skills"
|
||||
}
|
||||
func (object *Waffenfertigkeit) TableName() string {
|
||||
return dbPrefix + "_" + "weaponskills"
|
||||
}
|
||||
func (object *Zauber) TableName() string {
|
||||
return dbPrefix + "_" + "spells"
|
||||
}
|
||||
|
||||
func (object *Fertigkeit) GetGsm() *models.Skill {
|
||||
var gsmsk models.Skill
|
||||
gsmsk.First(object.Name)
|
||||
if gsmsk.ID == 0 {
|
||||
return nil
|
||||
}
|
||||
return &gsmsk
|
||||
}
|
||||
|
||||
func (object *Fertigkeit) GetCategory() string {
|
||||
if object.Category != "" {
|
||||
return object.Category
|
||||
}
|
||||
var gsmsk models.Skill
|
||||
gsmsk.First(object.Name)
|
||||
if gsmsk.ID == 0 {
|
||||
return "Unkategorisiert"
|
||||
}
|
||||
object.Category = gsmsk.Category
|
||||
return object.Category
|
||||
}
|
||||
Reference in New Issue
Block a user