| @@ -562,7 +562,32 @@ | ||
| 562 | 562 | KEY `idx_status` (`status`), |
| 563 | 563 | KEY `idx_content` (`content_type`, `content_id`), |
| 564 | 564 | KEY `idx_composite` (`action_type`, `created`, `status`) |
| 565 | 565 | ) ENGINE=InnoDB $charset_collate", |
| 566 | + WPF()->tables->email_queue => "CREATE TABLE IF NOT EXISTS `" . WPF()->tables->email_queue . "` ( | |
| 567 | + `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, | |
| 568 | + `email` VARCHAR(255) NOT NULL, | |
| 569 | + `subject` VARCHAR(255) NOT NULL, | |
| 570 | + `message` LONGTEXT NOT NULL, | |
| 571 | + `headers` TEXT, | |
| 572 | + `priority` TINYINT UNSIGNED NOT NULL DEFAULT 10, | |
| 573 | + `status` ENUM('pending','processing','sent','failed') NOT NULL DEFAULT 'pending', | |
| 574 | + `attempts` TINYINT UNSIGNED NOT NULL DEFAULT 0, | |
| 575 | + `max_attempts` TINYINT UNSIGNED NOT NULL DEFAULT 3, | |
| 576 | + `created_at` DATETIME NOT NULL, | |
| 577 | + `scheduled_at` DATETIME NOT NULL, | |
| 578 | + `processed_at` DATETIME DEFAULT NULL, | |
| 579 | + `next_retry_at` DATETIME DEFAULT NULL, | |
| 580 | + `error_message` TEXT, | |
| 581 | + `context` VARCHAR(50) NOT NULL DEFAULT 'general', | |
| 582 | + `related_id` BIGINT UNSIGNED NOT NULL DEFAULT 0, | |
| 583 | + `boardid` INT UNSIGNED NOT NULL DEFAULT 0, | |
| 584 | + PRIMARY KEY (`id`), | |
| 585 | + KEY `idx_status_scheduled` (`status`, `scheduled_at`), | |
| 586 | + KEY `idx_status_next_retry` (`status`, `next_retry_at`), | |
| 587 | + KEY `idx_context_status` (`context`, `status`), | |
| 588 | + KEY `idx_boardid` (`boardid`), | |
| 589 | + KEY `idx_created_at` (`created_at`) | |
| 590 | + ) ENGINE=InnoDB $charset_collate", | |
| 566 | 591 | ]; |
| 567 | 592 | } |
| 568 | 593 | } |