SES SNS Bounce Handling
This commit is contained in:
@@ -55,8 +55,12 @@ CREATE TABLE IF NOT EXISTS members (
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
active BOOLEAN DEFAULT TRUE,
|
||||
bounce_count INT DEFAULT 0,
|
||||
last_bounce_at TIMESTAMP NULL,
|
||||
bounce_status ENUM('clean', 'soft_bounce', 'hard_bounce') DEFAULT 'clean',
|
||||
INDEX idx_email (email),
|
||||
INDEX idx_active (active)
|
||||
INDEX idx_active (active),
|
||||
INDEX idx_bounce_status (bounce_status)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- Table: list_members
|
||||
@@ -75,6 +79,26 @@ CREATE TABLE IF NOT EXISTS list_members (
|
||||
INDEX idx_active (active)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- Table: bounce_logs
|
||||
-- Stores bounce notifications from SES SNS
|
||||
CREATE TABLE IF NOT EXISTS bounce_logs (
|
||||
bounce_id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
member_id INT,
|
||||
email VARCHAR(255) NOT NULL,
|
||||
bounce_type ENUM('Permanent', 'Transient', 'Undetermined') NOT NULL,
|
||||
bounce_subtype VARCHAR(50),
|
||||
diagnostic_code TEXT,
|
||||
timestamp TIMESTAMP NOT NULL,
|
||||
sns_message_id VARCHAR(255),
|
||||
feedback_id VARCHAR(255),
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (member_id) REFERENCES members(member_id) ON DELETE SET NULL,
|
||||
INDEX idx_member_id (member_id),
|
||||
INDEX idx_email (email),
|
||||
INDEX idx_timestamp (timestamp),
|
||||
INDEX idx_bounce_type (bounce_type)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- Insert sample data
|
||||
|
||||
-- Create default admin user (password: 'password')
|
||||
|
||||
Reference in New Issue
Block a user