/** * calendar_migrate.js * Führe einmalig aus: node db/calendar_migrate.js * * Erstellt die appointments-Tabelle für den Kalender. * Ärzte werden aus der bestehenden `users`-Tabelle (role = 'arzt') gezogen. */ // ✅ MUSS als erstes stehen – lädt CONFIG_KEY bevor config-manager greift require("dotenv").config(); const db = require("../db"); async function migrate() { const conn = db.promise(); console.log("→ Erstelle Kalender-Tabellen …"); // ── Termine ────────────────────────────────────────────────────────────── await conn.query(` CREATE TABLE IF NOT EXISTS appointments ( id INT AUTO_INCREMENT PRIMARY KEY, doctor_id INT NOT NULL COMMENT 'Referenz auf users.id (role=arzt)', date DATE NOT NULL, time TIME NOT NULL, duration INT NOT NULL DEFAULT 15 COMMENT 'Minuten', patient_name VARCHAR(150) NOT NULL, notes TEXT DEFAULT NULL, status ENUM('scheduled','completed','cancelled') DEFAULT 'scheduled', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_date (date), INDEX idx_doctor (doctor_id), INDEX idx_date_doc (date, doctor_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; `); console.log("✓ Tabelle `appointments` bereit"); // ── Farben für Ärzte ───────────────────────────────────────────────────── // Falls die users-Tabelle noch keine doctor_color-Spalte hat, fügen wir sie hinzu. // Fehler = Spalte existiert schon → ignorieren. try { await conn.query(` ALTER TABLE users ADD COLUMN doctor_color VARCHAR(20) DEFAULT '#3B82F6' AFTER role; `); console.log("✓ Spalte `users.doctor_color` hinzugefügt"); } catch (e) { if (e.code === "ER_DUP_FIELDNAME") { console.log("ℹ️ Spalte `users.doctor_color` existiert bereits – übersprungen"); } else { throw e; } } console.log("\n✅ Kalender-Migration abgeschlossen.\n"); process.exit(0); } migrate().catch((err) => { console.error("❌ Migration fehlgeschlagen:", err.message); process.exit(1); });