diff --git a/backend/gamesystem/database.go b/backend/gamesystem/database.go new file mode 100644 index 0000000..613739b --- /dev/null +++ b/backend/gamesystem/database.go @@ -0,0 +1,26 @@ +package gamesystem + +import ( + "bamort/database" + "bamort/models" + + "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( + &models.GameSystem{}, + ) + if err != nil { + return err + } + return nil +} diff --git a/backend/maintenance/handlers.go b/backend/maintenance/handlers.go index 976e179..d38070e 100644 --- a/backend/maintenance/handlers.go +++ b/backend/maintenance/handlers.go @@ -3,6 +3,7 @@ package maintenance import ( "bamort/config" "bamort/database" + "bamort/gamesystem" "bamort/logger" "bamort/models" "bamort/user" @@ -40,6 +41,13 @@ func migrateAllStructures(db *gorm.DB) error { return fmt.Errorf("failed to migrate database structures: %w", err) } + // Migrate all structures in the correct order + logger.Debug("Migriere GameSystemstrukturen...") + if err := gamesystem.MigrateStructure(db); err != nil { + logger.Error("Fehler beim Migrieren der GameSystemstrukturen: %s", err.Error()) + return fmt.Errorf("failed to migrate game system structures: %w", err) + } + logger.Debug("Migriere Benutzerstrukturen...") if err := user.MigrateStructure(db); err != nil { logger.Error("Fehler beim Migrieren der Benutzerstrukturen: %s", err.Error()) diff --git a/backend/models/model_game_system.go b/backend/models/model_game_system.go new file mode 100644 index 0000000..6243db5 --- /dev/null +++ b/backend/models/model_game_system.go @@ -0,0 +1,16 @@ +package models + +type GameSystem struct { + ID uint `gorm:"primaryKey"` + Code string `gorm:"uniqueIndex;size:100;not null"` + Name string `gorm:"size:255;not null"` + Description string `gorm:"type:text"` + IsActive bool `gorm:"default:true;not null"` + CreatedAt int64 `gorm:"autoCreateTime"` + ModifiedAt int64 `gorm:"autoUpdateTime"` +} + +// TableName sets the table name for SchemaVersion +func (GameSystem) TableName() string { + return "game_systems" +}