-- SQL Script: Watcher-Tabelle erstellen
-- Speichert Email-Adressen, die die Arbeitszeiten eines Users sehen dürfen
-- Ausführen mit: mysql -u root -p stechuhr < create-watcher-table.sql

USE stechuhr;

-- Erstelle Watcher-Tabelle falls nicht vorhanden
CREATE TABLE IF NOT EXISTS watcher (
  id BIGINT AUTO_INCREMENT PRIMARY KEY,
  user_id BIGINT NOT NULL COMMENT 'User dessen Arbeitszeiten gesehen werden dürfen',
  watcher_email VARCHAR(255) NOT NULL COMMENT 'Email-Adresse der berechtigten Person',
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  is_active BOOLEAN NOT NULL DEFAULT TRUE,
  
  -- Foreign Keys
  CONSTRAINT fk_watcher_user FOREIGN KEY (user_id) 
    REFERENCES user(id) ON DELETE CASCADE,
  
  -- Indices für Performance
  INDEX idx_watcher_user (user_id),
  INDEX idx_watcher_email (watcher_email),
  
  -- Unique constraint: Ein Watcher pro User/Email-Kombination
  UNIQUE KEY idx_watcher_user_email (user_id, watcher_email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

SELECT 'Watcher-Tabelle erfolgreich erstellt oder bereits vorhanden.' AS status;

