shinkan-jinkendo/backend/migrations/010_rename_training_styles_to_style_directions.sql
Lars 62b5b4c2fd
Some checks failed
Deploy Development / deploy (push) Successful in 35s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Has been cancelled
feat: Migration 010+011 - Stilrichtungen + Trainingsstil-Dimension
Migration 010: Umbenennung (konsistente Terminologie)
- training_styles → style_directions
- exercise_styles → exercise_style_directions
- training_style_target_groups → style_direction_target_groups
- training_style_id → style_direction_id (in Junction-Tabellen)
- Idempotent mit IF EXISTS checks

Migration 011: Neue Dimension "Trainingsstil"
- Neue Tabelle training_types (Breitensport, Leistungssport, Wettkampf)
- Seed-Daten: 3 Standard-Trainingsstile
- Junction-Tabelle exercise_training_types (M:N)
- Indizes für Performance
- ON DELETE RESTRICT: Training Types können nicht gelöscht werden wenn zugeordnet

Architektur:
- Fokusbereich (Karate) → Stilrichtung (Shotokan) → Trainingsstil (Breitensport) → Zielgruppe (Kinder)
- Alle M:N für maximale Flexibilität
- KI-freundlich: Flache Dimensionen, einfache Queries

Version: 0.4.0 (BREAKING - nur DB-Migrationen, Backend/Frontend folgen)
2026-04-23 12:10:27 +02:00

68 lines
2.7 KiB
SQL

-- Migration 010: Umbenennung "training_styles" → "style_directions"
-- Erstellt: 2026-04-23
-- Beschreibung: Konsistente Terminologie - "Stilrichtungen" statt "Trainingsstile"
-- Grund: "Trainingsstil" wird neue separate Dimension (Breitensport/Leistungssport)
-- ============================================================================
-- PHASE 1: Tabellen umbenennen
-- ============================================================================
-- Haupttabelle umbenennen
ALTER TABLE IF EXISTS training_styles RENAME TO style_directions;
-- Junction-Tabelle umbenennen
ALTER TABLE IF EXISTS exercise_styles RENAME TO exercise_style_directions;
-- Training-Style-Target-Groups Junction umbenennen
ALTER TABLE IF EXISTS training_style_target_groups RENAME TO style_direction_target_groups;
-- ============================================================================
-- PHASE 2: Spalten umbenennen
-- ============================================================================
-- In style_directions (vormals training_styles)
-- Keine Spalten-Umbennung nötig - parent_style_id kann bleiben (bedeutet parent_direction)
-- In exercise_style_directions (vormals exercise_styles)
DO $$
BEGIN
IF EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'exercise_style_directions' AND column_name = 'training_style_id'
) THEN
ALTER TABLE exercise_style_directions
RENAME COLUMN training_style_id TO style_direction_id;
END IF;
END $$;
-- In style_direction_target_groups (vormals training_style_target_groups)
DO $$
BEGIN
IF EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'style_direction_target_groups' AND column_name = 'training_style_id'
) THEN
ALTER TABLE style_direction_target_groups
RENAME COLUMN training_style_id TO style_direction_id;
END IF;
END $$;
-- ============================================================================
-- PHASE 3: Constraints umbenennen (automatisch durch ALTER TABLE)
-- ============================================================================
-- Foreign Key Constraints werden automatisch umbenannt
-- Indizes werden automatisch umbenannt
-- ============================================================================
-- PHASE 4: Validierung
-- ============================================================================
-- Nach dieser Migration:
-- - training_styles → style_directions
-- - exercise_styles → exercise_style_directions
-- - training_style_target_groups → style_direction_target_groups
-- - training_style_id → style_direction_id (in Junction-Tabellen)
-- Nächste Migration 011: Neue Dimension "training_types" (Breitensport/Leistungssport)