ALTER TABLE scenarios ADD COLUMN scenario_key VARCHAR(128) NULL AFTER tenant_id, ADD COLUMN public_key VARCHAR(128) NULL AFTER scenario_key, ADD COLUMN allowed_origins JSON NULL AFTER public_key; UPDATE scenarios SET scenario_key = CONCAT('scenario-', id), public_key = CONCAT('pk_', REPLACE(UUID(), '-', '')), allowed_origins = JSON_ARRAY(); ALTER TABLE scenarios MODIFY scenario_key VARCHAR(128) NOT NULL, MODIFY public_key VARCHAR(128) NOT NULL, MODIFY allowed_origins JSON NOT NULL, ADD UNIQUE KEY uk_scenarios_scenario_key (scenario_key), ADD UNIQUE KEY uk_scenarios_public_key (public_key); CREATE TABLE public_run_sessions ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, tenant_id BIGINT UNSIGNED NOT NULL, run_id BIGINT UNSIGNED NOT NULL, token_hash VARCHAR(64) NOT NULL, expires_at DATETIME(3) NOT 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), PRIMARY KEY (id), UNIQUE KEY uk_public_run_sessions_token (token_hash), KEY idx_public_run_sessions_run (tenant_id, run_id), CONSTRAINT fk_public_sessions_tenant FOREIGN KEY (tenant_id) REFERENCES tenants(id), CONSTRAINT fk_public_sessions_run FOREIGN KEY (run_id) REFERENCES sop_runs(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;