equipment und skills migriert

This commit is contained in:
2025-07-28 22:08:19 +02:00
parent c5d5c5a6d4
commit d6aad4efd8
24 changed files with 311 additions and 340 deletions
+2 -3
View File
@@ -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")
+33 -33
View File
@@ -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()
+5 -6
View File
@@ -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{
+13 -14
View File
@@ -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,
+6 -5
View File
@@ -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",
+12 -12
View File
@@ -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,
+8 -9
View File
@@ -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",
+4 -4
View File
@@ -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"
}
+5 -4
View File
@@ -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",
+6 -7
View File
@@ -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",
+4 -5
View File
@@ -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{})
}
-28
View File
@@ -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
}
+5 -4
View File
@@ -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
}
+4 -5
View File
@@ -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 {
+8 -10
View File
@@ -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},
},
+13 -14
View File
@@ -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 {
+16 -18
View File
@@ -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)
+50
View File
@@ -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
}
+28 -30
View File
@@ -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
+63
View File
@@ -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
}
-27
View File
@@ -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
}
-10
View File
@@ -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})
}
-66
View File
@@ -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
}