-- list_exercises mit skill_min_level / skill_max_level: EXISTS auf exercise_skills mit numerischem Stufen-Rang.
-- Ausdruck muss mit backend/routers/exercises.py _EXERCISE_SKILL_LEVEL_RANK_SQL (Alias „es“) übereinstimmen.

CREATE INDEX IF NOT EXISTS idx_exercise_skills_exercise_level_rank
ON exercise_skills (
  exercise_id,
  (CASE COALESCE(
    NULLIF(TRIM(LOWER(target_level::text)), ''),
    NULLIF(TRIM(LOWER(required_level::text)), '')
  )
    WHEN 'basis' THEN 1
    WHEN 'grundlagen' THEN 2
    WHEN 'aufbau' THEN 3
    WHEN 'fortgeschritten' THEN 4
    WHEN 'optimierung' THEN 5
    WHEN 'einsteiger' THEN 1
    WHEN 'experte' THEN 5
    WHEN '1' THEN 1
    WHEN '2' THEN 2
    WHEN '3' THEN 3
    WHEN '4' THEN 4
    WHEN '5' THEN 5
    ELSE NULL END)
)
WHERE (CASE COALESCE(
    NULLIF(TRIM(LOWER(target_level::text)), ''),
    NULLIF(TRIM(LOWER(required_level::text)), '')
  )
    WHEN 'basis' THEN 1
    WHEN 'grundlagen' THEN 2
    WHEN 'aufbau' THEN 3
    WHEN 'fortgeschritten' THEN 4
    WHEN 'optimierung' THEN 5
    WHEN 'einsteiger' THEN 1
    WHEN 'experte' THEN 5
    WHEN '1' THEN 1
    WHEN '2' THEN 2
    WHEN '3' THEN 3
    WHEN '4' THEN 4
    WHEN '5' THEN 5
    ELSE NULL END) IS NOT NULL;
