-- Migration 003: Catalogs (Skills & Training Methods)
-- Erstellt: 2026-04-21
-- Beschreibung: Fähigkeiten- und Methodenkataloge

-- Skills (Fähigkeiten) - global
CREATE TABLE skills (
    id SERIAL PRIMARY KEY,
    name VARCHAR(200) NOT NULL,
    category VARCHAR(100),  -- kihon, kumite, kata, selbstverteidigung, fitness
    description TEXT,
    importance INT CHECK (importance BETWEEN 1 AND 5),
    keywords JSONB,
    status VARCHAR(50) DEFAULT 'active',
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW()
);

CREATE INDEX idx_skills_category ON skills(category);
CREATE INDEX idx_skills_status ON skills(status);

-- Training Methods (Trainingsmethoden) - global
CREATE TABLE training_methods (
    id SERIAL PRIMARY KEY,
    name VARCHAR(200) NOT NULL,
    abbreviation VARCHAR(20),
    category VARCHAR(100),  -- intervall, rollenspiel, zirkel, koordination, etc.
    description TEXT,
    typical_duration INT,  -- in Minuten
    typical_group_size VARCHAR(50),
    related_skills JSONB,  -- [skill_id, skill_id, ...]
    keywords JSONB,
    status VARCHAR(50) DEFAULT 'active',
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW()
);

CREATE INDEX idx_methods_category ON training_methods(category);
CREATE INDEX idx_methods_status ON training_methods(status);

-- Insert Basis-Skills (Beispiele)
INSERT INTO skills (name, category, description, importance) VALUES
('Dachi Waza', 'kihon', 'Standtechniken und Körperhaltung', 5),
('Tsuki Waza', 'kihon', 'Fausttechniken', 5),
('Keri Waza', 'kihon', 'Fußtechniken', 5),
('Uke Waza', 'kihon', 'Abwehrtechniken', 5),
('Distanzkontrolle', 'kumite', 'Kontrolle der Kampfdistanz', 4),
('Beinarbeit', 'kumite', 'Fußarbeit und Bewegung', 4),
('Reaktionsfähigkeit', 'kumite', 'Schnelle Reaktion auf Angriffe', 4),
('Aufmerksamkeit', 'selbstverteidigung', 'Gefahrenbewusstsein und Aufmerksamkeit', 5),
('Selbstbehauptung', 'selbstverteidigung', 'Selbstsicheres Auftreten', 5),
('Ausdauer', 'fitness', 'Kardiovaskuläre Ausdauer', 3),
('Kraft', 'fitness', 'Muskelkraft', 3),
('Flexibilität', 'fitness', 'Beweglichkeit', 3);

-- Insert Basis-Methods (Beispiele)
INSERT INTO training_methods (name, abbreviation, category, description, typical_duration) VALUES
('Intervalltraining', 'INT', 'kondition', 'Wechsel zwischen Belastung und Erholung', 20),
('Zirkeltraining', 'ZIR', 'kondition', 'Mehrere Stationen mit verschiedenen Übungen', 30),
('Rollenspiel', 'ROL', 'didaktik', 'Szenario-basiertes Training', 15),
('Strukturierte Übung', 'STR', 'didaktik', 'Schrittweise Anleitung einer Technik', 10),
('Partnerübung', 'PAR', 'didaktik', 'Training zu zweit', 15),
('Koordinationstraining', 'KOO', 'koordination', 'Schulung von Koordination und Balance', 15),
('Dauermethode', 'DAU', 'kondition', 'Kontinuierliche Belastung ohne Pausen', 20),
('Plyometrisches Training', 'PLY', 'kraft', 'Explosivkraft durch Sprungübungen', 15);
