WIP migration character

This commit is contained in:
2025-07-28 21:35:29 +02:00
parent d65dbae050
commit c5d5c5a6d4
26 changed files with 198 additions and 186 deletions
+24 -24
View File
@@ -25,14 +25,14 @@ func respondWithError(c *gin.Context, status int, message string) {
}
func ListCharacters(c *gin.Context) {
var characters []Char
var listOfChars []CharList
var characters []models.Char
var listOfChars []models.CharList
if err := database.DB.Find(&characters).Error; err != nil {
respondWithError(c, http.StatusInternalServerError, "Failed to retrieve characters")
return
}
for i := range characters {
listOfChars = append(listOfChars, CharList{
listOfChars = append(listOfChars, models.CharList{
BamortBase: models.BamortBase{
ID: characters[i].ID,
Name: characters[i].Name,
@@ -47,7 +47,7 @@ func ListCharacters(c *gin.Context) {
}
func CreateCharacter(c *gin.Context) {
var character Char
var character models.Char
if err := c.ShouldBindJSON(&character); err != nil {
respondWithError(c, http.StatusBadRequest, err.Error())
return
@@ -62,7 +62,7 @@ func CreateCharacter(c *gin.Context) {
}
func GetCharacter(c *gin.Context) {
id := c.Param("id")
var character Char
var character models.Char
err := character.FirstID(id)
if err != nil {
respondWithError(c, http.StatusInternalServerError, "Failed to retrieve character")
@@ -73,7 +73,7 @@ func GetCharacter(c *gin.Context) {
}
func UpdateCharacter(c *gin.Context) {
id := c.Param("id")
var character Char
var character models.Char
// First, find the existing character
err := character.FirstID(id)
@@ -98,7 +98,7 @@ func UpdateCharacter(c *gin.Context) {
}
func DeleteCharacter(c *gin.Context) {
id := c.Param("id")
var character Char
var character models.Char
err := character.FirstID(id)
if err != nil {
respondWithError(c, http.StatusNotFound, "Character not found")
@@ -128,8 +128,8 @@ func AddFertigkeit(charID uint, fertigkeit *skills.Fertigkeit) error {
// Append the new Fertigkeit to the slice of the characters property
//character.Fertigkeiten = append(character.Fertigkeiten, fertigkeit)
func ToFeChar(object *Char) *FeChar {
feC := &FeChar{
func ToFeChar(object *models.Char) *models.FeChar {
feC := &models.FeChar{
Char: *object,
}
skills, innateSkills, categories := splitSkills(object.Fertigkeiten)
@@ -169,7 +169,7 @@ func GetLearnSkillCost(c *gin.Context) {
charID := c.Param("id")
// Load the character from the database
var character Char
var character models.Char
if err := character.FirstID(charID); err != nil {
respondWithError(c, http.StatusInternalServerError, "Failed to retrieve character")
return
@@ -203,7 +203,7 @@ func GetLearnSpellCost(c *gin.Context) {
charID := c.Param("id")
// Load the character from the database
var character Char
var character models.Char
if err := character.FirstID(charID); err != nil {
respondWithError(c, http.StatusInternalServerError, "Failed to retrieve character")
return
@@ -339,7 +339,7 @@ type ExperienceAndWealthResponse struct {
// GetCharacterExperienceAndWealth gibt nur die EP und Vermögensdaten eines Charakters zurück
func GetCharacterExperienceAndWealth(c *gin.Context) {
id := c.Param("id")
var character Char
var character models.Char
// Lade nur die benötigten Felder
err := database.DB.
@@ -379,7 +379,7 @@ type UpdateExperienceRequest struct {
// UpdateCharacterExperience aktualisiert die Erfahrungspunkte eines Charakters
func UpdateCharacterExperience(c *gin.Context) {
id := c.Param("id")
var character Char
var character models.Char
// Lade den Charakter
err := database.DB.
@@ -411,7 +411,7 @@ func UpdateCharacterExperience(c *gin.Context) {
// Aktualisiere oder erstelle Erfahrungsschatz
if character.Erfahrungsschatz.ID == 0 {
// Erstelle neuen Erfahrungsschatz
character.Erfahrungsschatz = Erfahrungsschatz{
character.Erfahrungsschatz = models.Erfahrungsschatz{
BamortCharTrait: models.BamortCharTrait{
CharacterID: character.ID,
},
@@ -469,7 +469,7 @@ type UpdateWealthRequest struct {
// UpdateCharacterWealth aktualisiert das Vermögen eines Charakters
func UpdateCharacterWealth(c *gin.Context) {
id := c.Param("id")
var character Char
var character models.Char
// Lade den Charakter
err := database.DB.
@@ -505,7 +505,7 @@ func UpdateCharacterWealth(c *gin.Context) {
// Aktualisiere oder erstelle Vermögen
if character.Vermoegen.ID == 0 {
// Erstelle neues Vermögen
character.Vermoegen = Vermoegen{
character.Vermoegen = models.Vermoegen{
BamortCharTrait: models.BamortCharTrait{
CharacterID: character.ID,
},
@@ -593,7 +593,7 @@ func getValueOrDefault(value *int, defaultValue int) int {
}
// updateOrCreateSkill aktualisiert eine vorhandene Fertigkeit oder erstellt eine neue
func updateOrCreateSkill(character *Char, skillName string, newLevel int) error {
func updateOrCreateSkill(character *models.Char, skillName string, newLevel int) error {
// Suche erst in normalen Fertigkeiten
for i := range character.Fertigkeiten {
if character.Fertigkeiten[i].Name == skillName {
@@ -669,7 +669,7 @@ type LearnSpellRequest struct {
}
// calculateMultiLevelCosts berechnet die Kosten für mehrere Level-Verbesserungen mit gsmaster.GetLernCostNextLevel
func calculateMultiLevelCosts(character *Char, skillName string, currentLevel int, levelsToLearn []int, rewardType string, usePP, useGold int) (*models.LearnCost, error) {
func calculateMultiLevelCosts(character *models.Char, skillName string, currentLevel int, levelsToLearn []int, rewardType string, usePP, useGold int) (*models.LearnCost, error) {
if len(levelsToLearn) == 0 {
return nil, fmt.Errorf("keine Level zum Lernen angegeben")
}
@@ -758,7 +758,7 @@ func calculateMultiLevelCosts(character *Char, skillName string, currentLevel in
}
// getCharacterClass gibt die Charakterklassen-Abkürzung zurück
func getCharacterClass(character *Char) string {
func getCharacterClass(character *models.Char) string {
if len(character.Typ) > 3 {
return gsmaster.GetClassAbbreviation(character.Typ)
}
@@ -768,7 +768,7 @@ func getCharacterClass(character *Char) string {
// LearnSkill lernt eine neue Fertigkeit und erstellt Audit-Log-Einträge
func LearnSkill(c *gin.Context) {
charID := c.Param("id")
var character Char
var character models.Char
if err := character.FirstID(charID); err != nil {
respondWithError(c, http.StatusNotFound, "Charakter nicht gefunden")
@@ -981,7 +981,7 @@ func ImproveSkill(c *gin.Context) {
}
// Hole Charakter über die ID aus dem Request
var character Char
var character models.Char
err := database.DB.
Preload("Fertigkeiten").
Preload("Waffenfertigkeiten").
@@ -1197,7 +1197,7 @@ func ImproveSkill(c *gin.Context) {
// LearnSpell lernt einen neuen Zauber und erstellt Audit-Log-Einträge
func LearnSpell(c *gin.Context) {
charID := c.Param("id")
var character Char
var character models.Char
if err := character.FirstID(charID); err != nil {
respondWithError(c, http.StatusNotFound, "Charakter nicht gefunden")
@@ -1323,7 +1323,7 @@ func GetAvailableSkills(c *gin.Context) {
characterID := c.Param("id")
rewardType := c.Query("reward_type")
var character Char
var character models.Char
if err := database.DB.Preload("Fertigkeiten").Preload("Erfahrungsschatz").Preload("Vermoegen").First(&character, characterID).Error; err != nil {
respondWithError(c, http.StatusNotFound, "Character not found")
return
@@ -1386,7 +1386,7 @@ func GetAvailableSkills(c *gin.Context) {
}
// calculateSkillLearningCosts berechnet die EP- und Goldkosten für das Lernen einer Fertigkeit mit GetLernCostNextLevel
func calculateSkillLearningCosts(skill models.Skill, character Char, rewardType string) (int, int) {
func calculateSkillLearningCosts(skill models.Skill, character models.Char, rewardType string) (int, int) {
// Erstelle LernCostRequest für das Lernen (Level 0 -> 1)
var rewardTypePtr *string
if rewardType != "" && rewardType != "default" {