Quelltext des aktuellen Standes
-- Migration 239: Frei pflegbare Terminkategorien im Wartungskalender
--
-- Die Kategorie eines Termins war ein festes ENUM. Betreiber sollen eigene
-- Kategorien führen können (Urlaub, Schulung, Messe …), statt alles unter
-- „Sonstiges" abzulegen. Die Spalte wird dafür auf einen freien Schlüssel
-- umgestellt; die bisherigen vier Werte wandern als mitgelieferte Kategorien
-- in eine eigene Tabelle und behalten ihre Farben.
CREATE TABLE IF NOT EXISTS `maintenance_types` (
`key` VARCHAR(40) NOT NULL COMMENT 'technischer Schlüssel, steht in maintenance_events.type',
`label` VARCHAR(80) NOT NULL COMMENT 'Bezeichnung in der Oberfläche',
`color` CHAR(7) NOT NULL DEFAULT '#6366f1' COMMENT 'Farbe im Kalender (#rrggbb)',
`sort_order` SMALLINT NOT NULL DEFAULT 100,
`is_active` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '0 = nicht mehr auswählbar, vorhandene Termine behalten sie',
`is_builtin` TINYINT(1) NOT NULL DEFAULT 0 COMMENT 'mitgeliefert: umbenennbar und abschaltbar, nicht löschbar',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`key`),
INDEX `idx_mtypes_order` (`is_active`, `sort_order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Die vier bisherigen Werte mit den Farben, die der Kalender schon verwendet hat.
INSERT IGNORE INTO `maintenance_types` (`key`, `label`, `color`, `sort_order`, `is_active`, `is_builtin`) VALUES
('maintenance', 'Wartung', '#1d4ed8', 10, 1, 1),
('review', 'Überprüfung', '#0891b2', 20, 1, 1),
('renewal', 'Erneuerung', '#0f766e', 30, 1, 1),
('other', 'Sonstiges', '#6366f1', 40, 1, 1);
-- Freier Schlüssel statt ENUM. Der Standardwert bleibt 'maintenance', damit
-- bestehende Zeilen und Einfügungen ohne Kategorie unverändert bleiben.
ALTER TABLE `maintenance_events`
MODIFY COLUMN `type` VARCHAR(40) NOT NULL DEFAULT 'maintenance';