-- ─── Events / time-limited landing pages ──────────────────────────────────── -- Backoffice-managed temporary events (promotions, special classes, challenges). -- Each row drives a banner on the homepage and a branded landing page at -- /evento/, visible only while NOW() is inside [publish_from, publish_until] -- and is_active = 1. Soft-deleted via deleted_at (mirrors the modalidades module). CREATE TABLE IF NOT EXISTS `events` ( `e_id` INT(11) NOT NULL AUTO_INCREMENT, `deleted_at` DATETIME DEFAULT NULL, `slug` VARCHAR(160) NOT NULL, `title` VARCHAR(180) NOT NULL, `subtitle` VARCHAR(255) NOT NULL DEFAULT '', `summary` VARCHAR(400) NOT NULL DEFAULT '', `description` TEXT DEFAULT NULL, `hero_image` VARCHAR(160) NOT NULL DEFAULT '', `cor` VARCHAR(50) NOT NULL DEFAULT '#C2D500', `location` VARCHAR(200) NOT NULL DEFAULT '', `event_starts_at` DATETIME DEFAULT NULL, `event_ends_at` DATETIME DEFAULT NULL, `publish_from` DATETIME NOT NULL, `publish_until` DATETIME NOT NULL, `is_active` TINYINT(1) NOT NULL DEFAULT 1, `cta_label` VARCHAR(80) NOT NULL DEFAULT '', `cta_url` VARCHAR(255) NOT NULL DEFAULT '', `show_lead_form` TINYINT(1) NOT NULL DEFAULT 1, `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`e_id`), UNIQUE KEY `uq_events_slug` (`slug`), KEY `idx_events_window` (`is_active`, `publish_from`, `publish_until`, `deleted_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- Lead/registration submissions captured on each event landing page. CREATE TABLE IF NOT EXISTS `event_leads` ( `lead_id` INT(11) NOT NULL AUTO_INCREMENT, `e_id` INT(11) NOT NULL, `name` VARCHAR(150) NOT NULL, `email` VARCHAR(190) NOT NULL DEFAULT '', `phone` VARCHAR(40) NOT NULL DEFAULT '', `message` VARCHAR(1000) NOT NULL DEFAULT '', `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`lead_id`), KEY `idx_event_leads_event` (`e_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;