diff --git a/main.go b/main.go index 9d4e8f2..0e4bb41 100644 --- a/main.go +++ b/main.go @@ -57,9 +57,17 @@ func getLanguage(guildID string) string { return cfg.Language } +// Funktion zum Hinzufügen der 'language' Spalte, falls sie nicht existiert func addLanguageColumnIfNotExists() { - // Überprüfen, ob die Spalte bereits existiert - _, err := db.Exec("ALTER TABLE guild_config ADD COLUMN language TEXT DEFAULT 'de'") + // Überprüfen, ob die Tabelle 'guild_config' existiert + var tableExists bool + err := db.QueryRow("SELECT count(*) FROM sqlite_master WHERE type='table' AND name='guild_config'").Scan(&tableExists) + if err != nil || !tableExists { + log.Fatalf("Tabelle 'guild_config' existiert nicht: %v", err) + } + + // Überprüfen, ob die Spalte 'language' existiert + _, err = db.Exec("ALTER TABLE guild_config ADD COLUMN language TEXT DEFAULT 'de'") if err != nil && !isColumnAlreadyExistsError(err) { log.Fatalf("Fehler beim Hinzufügen der 'language' Spalte: %v", err) } else { @@ -69,8 +77,7 @@ func addLanguageColumnIfNotExists() { // Hilfsfunktion zur Fehlerbehandlung, um zu überprüfen, ob der Fehler auf eine bereits vorhandene Spalte hinweist func isColumnAlreadyExistsError(err error) bool { - // Dies ist ein spezifischer Fehlercode für SQLite, der darauf hinweist, dass die Spalte bereits existiert - // Der Fehlercode lautet "sqlite3: table ... already has column ..." (in verschiedenen Varianten) + // Fehlerbehandlung für 'duplicate column name' return err != nil && err.Error() == "SQLITE_ERROR: duplicate column name: language" }