Transfer from SQLite to MariaDB
This commit is contained in:
@@ -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{},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user