-- Migration 021: Import Skills from Fähigkeitsmatrix -- One-time import of skills with categories from karatetrainer.net -- Source: https://karatetrainer.net/index.php?title=Fähigkeitsmatrix -- ON CONFLICT (name) erfordert einen UNIQUE-Constraint auf skills.name (003/007 legten keinen an) DO $$ BEGIN IF NOT EXISTS ( SELECT 1 FROM pg_constraint c JOIN pg_class t ON c.conrelid = t.oid WHERE t.relname = 'skills' AND c.contype = 'u' AND c.conname = 'skills_name_unique' ) THEN ALTER TABLE skills ADD CONSTRAINT skills_name_unique UNIQUE (name); END IF; END $$; -- Create skill categories first INSERT INTO skill_categories (name, description, sort_order) VALUES ('Kihon', 'Grundtechniken', 1), ('Kumite', 'Kampf', 2), ('Kata', 'Formen', 3), ('Selbstverteidigung', 'Selbstschutz und Gefahrenabwehr', 4), ('Koordination', 'Koordinative Fähigkeiten', 5), ('Kondition', 'Konditionelle Fähigkeiten', 6), ('Kognition', 'Kognitive Fähigkeiten', 7), ('Soziale Fähigkeiten', 'Sozialkompetenzen', 8), ('Psychische Fähigkeiten', 'Mentale Stärke', 9) ON CONFLICT (name) DO NOTHING; -- Import skills (name unique, category by name lookup) INSERT INTO skills (name, description, category_id) SELECT skill_name, skill_description, (SELECT id FROM skill_categories WHERE name = category_name LIMIT 1) FROM (VALUES ('Dachi Waza', 'Standtechniken - stabiler Stand mit korrekter Gewichtsverteilung', 'Kihon'), ('Uke Waza', 'Blocktechniken - Abwehr von Angriffen', 'Kihon'), ('Zuki Waza', 'Stoßtechniken - gerade und kreisförmige Stöße', 'Kihon'), ('Geri Waza', 'Tritttechniken - verschiedene Kicks', 'Kihon'), ('Beinarbeit', 'Grundlegende Bewegungen im Kumite', 'Kumite'), ('Distanzkontrolle', 'Kontrolle der Kampfdistanz', 'Kumite'), ('Flexibilität', 'Beweglichkeit und Dehnfähigkeit', 'Kondition'), ('Präzision', 'Treffergenauigkeit', 'Kumite'), ('Bewegungsschnelligkeit', 'Schnelligkeit der Bewegungsausführung', 'Kondition'), ('Anaerobe Ausdauer', 'Ausdauer bei hoher Intensität', 'Kondition'), ('Schnelligkeitsausdauer', 'Ausdauer bei schnellen Bewegungen', 'Kondition'), ('Antizipation', 'Vorhersage gegnerischer Aktionen', 'Kognition'), ('Reaktionsschnelligkeit', 'Reaktion auf Reize', 'Koordination'), ('Timing', 'Zeitliche Abstimmung von Aktionen', 'Kumite'), ('Fokus', 'Konzentration auf das Wesentliche', 'Psychische Fähigkeiten'), ('Mentale Stärke', 'Psychische Belastbarkeit', 'Psychische Fähigkeiten'), ('Kata Ablauf', 'Korrekte Ausführung der Kata-Sequenz', 'Kata'), ('Bunkai', 'Anwendung der Kata-Techniken', 'Kata') ) AS skills(skill_name, skill_description, category_name) ON CONFLICT (name) DO UPDATE SET description = EXCLUDED.description, category_id = EXCLUDED.category_id;