- Removed version specification from docker-compose.dev-env.yml and docker-compose.yml for consistency. - Added a unique constraint to the skills table in the SQL migration to prevent duplicate entries, ensuring data integrity during imports. - Updated test cases in dev-smoke-test.spec.js to improve locator strategies and enhance viewport handling for mobile navigation.
59 lines
2.8 KiB
SQL
59 lines
2.8 KiB
SQL
-- 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;
|