Files
bamort/backend/bmrt/gsmaster/learning_costs_init.go
T

96 lines
2.9 KiB
Go
Raw Normal View History

package gsmaster
import (
"bamort/database"
"fmt"
"log"
)
2025-07-29 23:29:12 +02:00
/*
// InitializeLearningCostsSystem initialisiert das komplette Lernkosten-System
// Diese Funktion sollte einmalig ausgeführt werden, um die Datenbank zu migrieren
func InitializeLearningCostsSystem() error {
log.Println("Initializing learning costs system...")
// 1. Erstelle alle neuen Tabellen
if err := CreateLearningCostsTables(); err != nil {
return fmt.Errorf("failed to create learning costs tables: %w", err)
}
// 2. Migriere die Daten aus learningCostsData
if err := MigrateLearningCostsToDatabase(); err != nil {
return fmt.Errorf("failed to migrate learning costs data: %w", err)
}
// 3. Verknüpfe mit bestehenden Tabellen
if err := EnhanceLearningDataWithExistingTables(); err != nil {
return fmt.Errorf("failed to enhance learning data with existing tables: %w", err)
}
log.Println("Learning costs system initialized successfully!")
return nil
}
2025-07-29 23:29:12 +02:00
*/
// ValidateLearningCostsData validiert die Konsistenz der migrierten Daten
func ValidateLearningCostsData() error {
log.Println("Validating learning costs data...")
// Prüfe Anzahl der migrierten Einträge
validationQueries := []struct {
name string
query string
expected int
}{
{"Character Classes", "SELECT COUNT(*) FROM gsm_character_classes", 15},
{"Skill Categories", "SELECT COUNT(*) FROM learning_skill_categories", 10},
{"Skill Difficulties", "SELECT COUNT(*) FROM learning_skill_difficulties", 4},
{"Spell Schools", "SELECT COUNT(*) FROM learning_spell_schools", 10},
{"Spell Level LE Costs", "SELECT COUNT(*) FROM learning_spell_level_le_costs", 12},
}
for _, validation := range validationQueries {
var count int
if err := database.DB.Raw(validation.query).Scan(&count).Error; err != nil {
return fmt.Errorf("failed to validate %s: %w", validation.name, err)
}
log.Printf("Validation: %s = %d entries", validation.name, count)
if count == 0 {
log.Printf("Warning: No entries found for %s", validation.name)
}
}
log.Println("Data validation completed!")
return nil
}
// GetLearningCostsSummary gibt eine Zusammenfassung der Lernkosten-Daten zurück
func GetLearningCostsSummary() (map[string]interface{}, error) {
summary := make(map[string]interface{})
// Zähle Einträge in verschiedenen Tabellen
tables := []string{
"gsm_character_classes",
"learning_skill_categories",
"learning_skill_difficulties",
"learning_spell_schools",
"learning_class_category_ep_costs",
"learning_class_spell_school_ep_costs",
"learning_spell_level_le_costs",
"learning_skill_category_difficulties",
"learning_skill_improvement_costs",
}
for _, table := range tables {
var count int64
if err := database.DB.Table(table).Count(&count).Error; err != nil {
log.Printf("Warning: Failed to count entries in %s: %v", table, err)
summary[table] = "Error"
} else {
summary[table] = count
}
}
return summary, nil
}