Transfer from SQLite to MariaDB

This commit is contained in:
2025-08-12 22:20:49 +02:00
parent cb598bd630
commit b7f22c2d5e
+43 -13
View File
@@ -641,6 +641,20 @@ func TransferSQLiteToMariaDB(c *gin.Context) {
func copySQLiteToMariaDB(sqliteDB, mariaDB *gorm.DB) error { func copySQLiteToMariaDB(sqliteDB, mariaDB *gorm.DB) error {
logger.Debug("Starte Kopiervorgang aller Daten von SQLite zu MariaDB...") logger.Debug("Starte Kopiervorgang aller Daten von SQLite zu MariaDB...")
// Disable foreign key checks temporarily to avoid constraint issues
logger.Debug("Deaktiviere Foreign Key Checks...")
if err := mariaDB.Exec("SET FOREIGN_KEY_CHECKS = 0").Error; err != nil {
logger.Warn("Warnung: Konnte Foreign Key Checks nicht deaktivieren: %s", err.Error())
}
// Re-enable foreign key checks at the end
defer func() {
logger.Debug("Aktiviere Foreign Key Checks wieder...")
if err := mariaDB.Exec("SET FOREIGN_KEY_CHECKS = 1").Error; err != nil {
logger.Warn("Warnung: Konnte Foreign Key Checks nicht reaktivieren: %s", err.Error())
}
}()
// Same table order as copyMariaDBToSQLite but in reverse direction // Same table order as copyMariaDBToSQLite but in reverse direction
tables := []interface{}{ tables := []interface{}{
// Basis-Strukturen (keine Abhängigkeiten) // Basis-Strukturen (keine Abhängigkeiten)
@@ -653,14 +667,7 @@ func copySQLiteToMariaDB(sqliteDB, mariaDB *gorm.DB) error {
&models.SkillDifficulty{}, &models.SkillDifficulty{},
&models.SpellSchool{}, &models.SpellSchool{},
// Learning Costs System - Abhängige Tabellen // GSMaster Basis-Daten (müssen vor den abhängigen Learning Cost Tabellen kommen)
&models.ClassCategoryEPCost{},
&models.ClassSpellSchoolEPCost{},
&models.SpellLevelLECost{},
&models.SkillCategoryDifficulty{},
&models.SkillImprovementCost{},
// GSMaster Basis-Daten
&models.Skill{}, &models.Skill{},
&models.WeaponSkill{}, &models.WeaponSkill{},
&models.Spell{}, &models.Spell{},
@@ -670,6 +677,13 @@ func copySQLiteToMariaDB(sqliteDB, mariaDB *gorm.DB) error {
&models.Transportation{}, &models.Transportation{},
&models.Believe{}, &models.Believe{},
// Learning Costs System - Abhängige Tabellen (nach Skills/Spells)
&models.ClassCategoryEPCost{},
&models.ClassSpellSchoolEPCost{},
&models.SpellLevelLECost{},
&models.SkillCategoryDifficulty{}, // Jetzt nach Skills
&models.SkillImprovementCost{},
// Charaktere (Basis) // Charaktere (Basis)
&models.Char{}, &models.Char{},
@@ -977,14 +991,20 @@ func clearMariaDBData(db *gorm.DB) error {
logger.Debug("Lösche alle Daten aus MariaDB-Tabellen...") logger.Debug("Lösche alle Daten aus MariaDB-Tabellen...")
// Clear tables in reverse order due to foreign key constraints // Clear tables in reverse order due to foreign key constraints
// (reverse of the insertion order in copySQLiteToMariaDB)
tables := []interface{}{ tables := []interface{}{
// Charakter-Equipment (abhängig von Char und Equipment) - zuerst löschen
&models.EqContainer{}, &models.EqContainer{},
&models.EqWaffe{}, &models.EqWaffe{},
&models.EqAusruestung{}, &models.EqAusruestung{},
// Charakter-Skills (abhängig von Char und Skills)
&models.SkZauber{}, &models.SkZauber{},
&models.SkAngeboreneFertigkeit{}, &models.SkAngeboreneFertigkeit{},
&models.SkWaffenfertigkeit{}, &models.SkWaffenfertigkeit{},
&models.SkFertigkeit{}, &models.SkFertigkeit{},
// Charakter-Eigenschaften (abhängig von Char)
&models.Vermoegen{}, &models.Vermoegen{},
&models.Bennies{}, &models.Bennies{},
&models.Erfahrungsschatz{}, &models.Erfahrungsschatz{},
@@ -993,7 +1013,18 @@ func clearMariaDBData(db *gorm.DB) error {
&models.Ap{}, &models.Ap{},
&models.Lp{}, &models.Lp{},
&models.Eigenschaft{}, &models.Eigenschaft{},
// Charaktere (Basis)
&models.Char{}, &models.Char{},
// Learning Costs System - Abhängige Tabellen (vor Skills/Spells löschen)
&models.SkillImprovementCost{},
&models.SkillCategoryDifficulty{},
&models.SpellLevelLECost{},
&models.ClassSpellSchoolEPCost{},
&models.ClassCategoryEPCost{},
// GSMaster Basis-Daten
&models.Believe{}, &models.Believe{},
&models.Transportation{}, &models.Transportation{},
&models.Container{}, &models.Container{},
@@ -1002,16 +1033,15 @@ func clearMariaDBData(db *gorm.DB) error {
&models.Spell{}, &models.Spell{},
&models.WeaponSkill{}, &models.WeaponSkill{},
&models.Skill{}, &models.Skill{},
&models.SkillImprovementCost{},
&models.SkillCategoryDifficulty{}, // Learning Costs System - Basis
&models.SpellLevelLECost{},
&models.ClassSpellSchoolEPCost{},
&models.ClassCategoryEPCost{},
&models.SpellSchool{}, &models.SpellSchool{},
&models.SkillDifficulty{}, &models.SkillDifficulty{},
&models.SkillCategory{}, &models.SkillCategory{},
&models.CharacterClass{}, &models.CharacterClass{},
&models.Source{}, &models.Source{},
// Basis-Strukturen (keine Abhängigkeiten) - zuletzt löschen
&user.User{}, &user.User{},
} }