-- Intelligentes Cleanup-Script für MySQL Keys
-- Überprüft zuerst die echten Tabellennamen und entfernt nur vorhandene INDEX

USE trainingsdiary;

-- 1. Alle vorhandenen Tabellen anzeigen
SELECT '=== VORHANDENE TABELLEN ===' as info;
SHOW TABLES;

-- 2. Alle vorhandenen INDEX anzeigen
SELECT '=== VORHANDENE INDEX ===' as info;
SELECT 
    TABLE_NAME,
    INDEX_NAME,
    COLUMN_NAME,
    NON_UNIQUE,
    SEQ_IN_INDEX
FROM INFORMATION_SCHEMA.STATISTICS 
WHERE TABLE_SCHEMA = 'trainingsdiary' 
ORDER BY TABLE_NAME, INDEX_NAME, SEQ_IN_INDEX;

-- 3. Anzahl der Keys pro Tabelle anzeigen
SELECT '=== KEYS PRO TABELLE ===' as info;
SELECT 
    TABLE_NAME,
    COUNT(*) as key_count
FROM INFORMATION_SCHEMA.STATISTICS 
WHERE TABLE_SCHEMA = 'trainingsdiary' 
GROUP BY TABLE_NAME
ORDER BY key_count DESC;

-- 4. Gesamtanzahl der Keys anzeigen
SELECT '=== GESAMTANZAHL KEYS ===' as info;
SELECT 
    COUNT(*) as total_keys
FROM INFORMATION_SCHEMA.STATISTICS 
WHERE TABLE_SCHEMA = 'trainingsdiary';

-- 5. Intelligente INDEX-Entfernung basierend auf vorhandenen Tabellen
-- Nur INDEX entfernen, die tatsächlich existieren

-- Member-Tabelle (Hauptproblem)
SELECT '=== ENTFERNE MEMBER INDEX ===' as info;
DROP INDEX IF EXISTS idx_member_hashed_id ON member;
DROP INDEX IF EXISTS idx_member_first_name ON member;
DROP INDEX IF EXISTS idx_member_last_name ON member;
DROP INDEX IF EXISTS idx_member_birth_date ON member;
DROP INDEX IF EXISTS idx_member_active ON member;
DROP INDEX IF EXISTS idx_member_created_at ON member;
DROP INDEX IF EXISTS idx_member_updated_at ON member;

-- User-Tabelle
SELECT '=== ENTFERNE USER INDEX ===' as info;
DROP INDEX IF EXISTS idx_user_email ON user;
DROP INDEX IF EXISTS idx_user_created_at ON user;
DROP INDEX IF EXISTS idx_user_updated_at ON user;

-- Clubs-Tabelle
SELECT '=== ENTFERNE CLUBS INDEX ===' as info;
DROP INDEX IF EXISTS idx_clubs_name ON clubs;
DROP INDEX IF EXISTS idx_clubs_created_at ON clubs;
DROP INDEX IF EXISTS idx_clubs_updated_at ON clubs;

-- User_Club-Tabelle
SELECT '=== ENTFERNE USER_CLUB INDEX ===' as info;
DROP INDEX IF EXISTS idx_user_club_approved ON user_club;
DROP INDEX IF EXISTS idx_user_club_created_at ON user_club;
DROP INDEX IF EXISTS idx_user_club_updated_at ON user_club;

-- Log-Tabelle
SELECT '=== ENTFERNE LOG INDEX ===' as info;
DROP INDEX IF EXISTS idx_log_activity ON log;
DROP INDEX IF EXISTS idx_log_created_at ON log;
DROP INDEX IF EXISTS idx_log_updated_at ON log;

-- Diary_Dates-Tabelle
SELECT '=== ENTFERNE DIARY_DATES INDEX ===' as info;
DROP INDEX IF EXISTS idx_diary_dates_date ON diary_dates;
DROP INDEX IF EXISTS idx_diary_dates_created_at ON diary_dates;
DROP INDEX IF EXISTS idx_diary_dates_updated_at ON diary_dates;

-- Participants-Tabelle
SELECT '=== ENTFERNE PARTICIPANTS INDEX ===' as info;
DROP INDEX IF EXISTS idx_participant_created_at ON participants;
DROP INDEX IF EXISTS idx_participant_updated_at ON participants;

-- Activities-Tabelle
SELECT '=== ENTFERNE ACTIVITIES INDEX ===' as info;
DROP INDEX IF EXISTS idx_activity_created_at ON activities;
DROP INDEX IF EXISTS idx_activity_updated_at ON activities;

-- Member_Notes-Tabelle
SELECT '=== ENTFERNE MEMBER_NOTES INDEX ===' as info;
DROP INDEX IF EXISTS idx_member_note_created_at ON member_notes;
DROP INDEX IF EXISTS idx_member_note_updated_at ON member_notes;

-- Diary_Notes-Tabelle
SELECT '=== ENTFERNE DIARY_NOTES INDEX ===' as info;
DROP INDEX IF EXISTS idx_diary_note_created_at ON diary_notes;
DROP INDEX IF EXISTS idx_diary_note_updated_at ON diary_notes;

-- Diary_Tags-Tabelle
SELECT '=== ENTFERNE DIARY_TAGS INDEX ===' as info;
DROP INDEX IF EXISTS idx_diary_tag_created_at ON diary_tags;
DROP INDEX IF EXISTS idx_diary_tag_updated_at ON diary_tags;

-- Member_Diary_Tags-Tabelle
SELECT '=== ENTFERNE MEMBER_DIARY_TAGS INDEX ===' as info;
DROP INDEX IF EXISTS idx_member_diary_tag_created_at ON member_diary_tags;
DROP INDEX IF EXISTS idx_member_diary_tag_updated_at ON member_diary_tags;

-- Diary_Date_Tags-Tabelle
SELECT '=== ENTFERNE DIARY_DATE_TAGS INDEX ===' as info;
DROP INDEX IF EXISTS idx_diary_date_tag_created_at ON diary_date_tags;
DROP INDEX IF EXISTS idx_diary_date_tag_updated_at ON diary_date_tags;

-- Diary_Member_Notes-Tabelle
SELECT '=== ENTFERNE DIARY_MEMBER_NOTES INDEX ===' as info;
DROP INDEX IF EXISTS idx_diary_member_note_created_at ON diary_member_notes;
DROP INDEX IF EXISTS idx_diary_member_note_updated_at ON diary_member_notes;

-- Predefined_Activities-Tabelle
SELECT '=== ENTFERNE PREDEFINED_ACTIVITIES INDEX ===' as info;
DROP INDEX IF EXISTS idx_predefined_activity_created_at ON predefined_activities;
DROP INDEX IF EXISTS idx_predefined_activity_updated_at ON predefined_activities;

-- Diary_Date_Activities-Tabelle
SELECT '=== ENTFERNE DIARY_DATE_ACTIVITIES INDEX ===' as info;
DROP INDEX IF EXISTS idx_diary_date_activity_created_at ON diary_date_activities;
DROP INDEX IF EXISTS idx_diary_date_activity_updated_at ON diary_date_activities;

-- 6. Nach der Bereinigung: Status anzeigen
SELECT '=== STATUS NACH BEREINIGUNG ===' as info;

-- Anzahl der Keys pro Tabelle nach der Bereinigung
SELECT 
    TABLE_NAME,
    COUNT(*) as key_count
FROM INFORMATION_SCHEMA.STATISTICS 
WHERE TABLE_SCHEMA = 'trainingsdiary' 
GROUP BY TABLE_NAME
ORDER BY key_count DESC;

-- Gesamtanzahl der Keys nach der Bereinigung
SELECT 
    COUNT(*) as total_keys_after_cleanup
FROM INFORMATION_SCHEMA.STATISTICS 
WHERE TABLE_SCHEMA = 'trainingsdiary';

-- 7. Zusammenfassung
SELECT '=== ZUSAMMENFASSUNG ===' as info;
SELECT 
    'Cleanup abgeschlossen. Überprüfen Sie die Anzahl der Keys oben.' as message;
