- Incremented APP_VERSION to 0.8.9 and DB_SCHEMA_VERSION to 20260505036. - Added changelog entry for version 0.8.9 detailing database and API changes. - Updated TrainingFrameworkProgramEditPage to manage focus areas, style directions, training types, and target groups. - Enhanced TrainingFrameworkProgramsListPage with context teasers for better user information. - Improved CSS styles for framework catalog checkgrid and check components for better layout and usability.
65 lines
3.2 KiB
SQL
65 lines
3.2 KiB
SQL
-- Migration 036: Rahmenprogramm — nur Bibliothek + Kontext-Stammdaten (Fokus, Stil, Typen, Zielgruppen)
|
|
-- Grund: Zuordnung zu Gruppen/Kalender nur aus der Planung (Kopie + Lineage), nicht am Rahmenkopf.
|
|
|
|
-- ── Kontext am Rahmenkopf (Zuordenbarkeit / Filter) ─────────────────────────
|
|
ALTER TABLE training_framework_programs
|
|
ADD COLUMN IF NOT EXISTS focus_area_id INT REFERENCES focus_areas(id) ON DELETE SET NULL,
|
|
ADD COLUMN IF NOT EXISTS style_direction_id INT REFERENCES style_directions(id) ON DELETE SET NULL;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_training_framework_programs_focus ON training_framework_programs(focus_area_id);
|
|
CREATE INDEX IF NOT EXISTS idx_training_framework_programs_style ON training_framework_programs(style_direction_id);
|
|
|
|
-- ── M:N Trainingsstile (training_types Katalog) ─────────────────────────────
|
|
CREATE TABLE IF NOT EXISTS training_framework_program_training_types (
|
|
framework_program_id INT NOT NULL REFERENCES training_framework_programs(id) ON DELETE CASCADE,
|
|
training_type_id INT NOT NULL REFERENCES training_types(id) ON DELETE CASCADE,
|
|
PRIMARY KEY (framework_program_id, training_type_id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_tfptt_type ON training_framework_program_training_types(training_type_id);
|
|
|
|
-- ── M:N Zielgruppen ─────────────────────────────────────────────────────────
|
|
CREATE TABLE IF NOT EXISTS training_framework_program_target_groups (
|
|
framework_program_id INT NOT NULL REFERENCES training_framework_programs(id) ON DELETE CASCADE,
|
|
target_group_id INT NOT NULL REFERENCES target_groups(id) ON DELETE CASCADE,
|
|
PRIMARY KEY (framework_program_id, target_group_id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_tfptg_tg ON training_framework_program_target_groups(target_group_id);
|
|
|
|
-- ── Kein „Konkret“ mehr: Slots nicht an Kalender-Einheiten hängen ───────────
|
|
UPDATE training_framework_slots SET training_unit_id = NULL WHERE training_unit_id IS NOT NULL;
|
|
|
|
-- Gruppe/Modus vom Rahmen lösen (Historie: evtl. noch concrete + group_id gesetzt)
|
|
UPDATE training_framework_programs SET group_id = NULL;
|
|
|
|
DROP INDEX IF EXISTS idx_training_framework_programs_group;
|
|
|
|
ALTER TABLE training_framework_programs DROP CONSTRAINT IF EXISTS training_framework_programs_group_id_fkey;
|
|
|
|
ALTER TABLE training_framework_programs DROP COLUMN IF EXISTS group_id;
|
|
|
|
-- Inline-CHECK(s) aus Migration 035 (plan_mode + group-Kombination) entfernen
|
|
DO $$
|
|
DECLARE
|
|
r RECORD;
|
|
BEGIN
|
|
FOR r IN (
|
|
SELECT c.conname AS cn
|
|
FROM pg_constraint c
|
|
WHERE c.conrelid = 'public.training_framework_programs'::regclass
|
|
AND c.contype = 'c'
|
|
AND (
|
|
pg_get_constraintdef(c.oid) ILIKE '%plan_mode%'
|
|
OR pg_get_constraintdef(c.oid) ILIKE '%group_id%'
|
|
)
|
|
)
|
|
LOOP
|
|
EXECUTE format('ALTER TABLE training_framework_programs DROP CONSTRAINT %I', r.cn);
|
|
END LOOP;
|
|
END $$;
|
|
|
|
ALTER TABLE training_framework_programs DROP COLUMN IF EXISTS plan_mode;
|
|
|
|
DROP INDEX IF EXISTS idx_training_framework_programs_mode;
|