[
  {
    "type": "create_table",
    "description": "Create demo_sessions table for demo access management with magic link auth",
    "database": "kiosk_users",
    "check_query": "SHOW TABLES LIKE 'demo_sessions'",
    "sql": "CREATE TABLE `demo_sessions` (\n  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,\n  `email` varchar(255) NOT NULL COMMENT 'Demo user email for lead capture',\n  `magicLinkTokenHash` varchar(64) NOT NULL COMMENT 'SHA-256 hash of magic link token',\n  `magicLinkExpiresAt` datetime NOT NULL COMMENT 'Magic link expiration (5 minutes)',\n  `magicLinkUsedAt` datetime DEFAULT NULL COMMENT 'When magic link was clicked',\n  `sessionTokenHash` varchar(64) DEFAULT NULL COMMENT 'SHA-256 hash of session token (set after first click)',\n  `concept` enum('pc','ou','se') DEFAULT NULL COMMENT 'Store concept: Platos Closet, Once Upon A Child, Style Encore',\n  `sourceQrId` varchar(50) DEFAULT NULL COMMENT 'Event/campaign tracking ID from QR code',\n  `createdAt` datetime NOT NULL DEFAULT current_timestamp(),\n  `sessionExpiresAt` datetime DEFAULT NULL COMMENT 'Session expiration (24 hours after activation)',\n  `lastAccessedAt` datetime DEFAULT NULL COMMENT 'Last activity timestamp',\n  `tourProgress` json DEFAULT NULL COMMENT 'Tour step progress: {\"section\": \"workbook\", \"step\": 3}',\n  PRIMARY KEY (`id`),\n  KEY `idx_magic_link_token` (`magicLinkTokenHash`),\n  KEY `idx_session_token` (`sessionTokenHash`),\n  KEY `idx_email` (`email`),\n  KEY `idx_magic_link_expires` (`magicLinkExpiresAt`),\n  KEY `idx_session_expires` (`sessionExpiresAt`),\n  KEY `idx_source_qr` (`sourceQrId`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Demo environment session management with magic link authentication'"
  }
]
