-- Connector-Instanzen (Verbindungen zu Providern) und synchronisierte Ressourcen CREATE TABLE connector_instances ( id CHAR(36) PRIMARY KEY, connector_key VARCHAR(50) NOT NULL, name VARCHAR(100) NOT NULL UNIQUE, config_json JSON NOT NULL, secrets_enc TEXT NULL, enabled TINYINT(1) NOT NULL DEFAULT 1, sync_interval_sec INT NOT NULL DEFAULT 300, health ENUM('unknown','ok','down') NOT NULL DEFAULT 'unknown', health_message VARCHAR(300) NULL, capabilities_json JSON NULL, last_ok_at DATETIME(3) NULL, last_sync_at DATETIME(3) NULL, last_error VARCHAR(500) NULL, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) ); -- Ressource = lokaler Spiegel eines Provider-Objekts (Lizenz, Hosting-Konto, ...). Provider-Rohdaten bleiben im Connector. CREATE TABLE resources ( id CHAR(36) PRIMARY KEY, instance_id CHAR(36) NOT NULL, external_ref VARCHAR(100) NOT NULL, type VARCHAR(30) NOT NULL, name VARCHAR(300) NOT NULL, state ENUM('active','suspended','expired','error','unknown') NOT NULL DEFAULT 'unknown', org_id CHAR(36) NULL, valid_from DATETIME(3) NULL, valid_until DATETIME(3) NULL, data_json JSON NULL, customer_actions JSON NOT NULL DEFAULT '[]', synced_at DATETIME(3) NOT NULL, missing_since DATETIME(3) NULL, created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), UNIQUE KEY uq_instance_ref (instance_id, external_ref), INDEX (org_id), FOREIGN KEY (instance_id) REFERENCES connector_instances(id) ON DELETE CASCADE, FOREIGN KEY (org_id) REFERENCES organizations(id) ON DELETE SET NULL );