-- Migration 009: Contact Messages and Newsletter Subscribers -- Description: Tables for contact form submissions and newsletter subscriptions (non-customer) -- Contact Messages Table CREATE TABLE IF NOT EXISTS contact_messages ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, subject VARCHAR(500) NOT NULL, message TEXT NOT NULL, is_read BOOLEAN DEFAULT FALSE, is_archived BOOLEAN DEFAULT FALSE, created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, read_at TIMESTAMP WITH TIME ZONE, replied_at TIMESTAMP WITH TIME ZONE ); -- Newsletter Subscribers Table (for non-registered users) CREATE TABLE IF NOT EXISTS newsletter_subscribers ( id SERIAL PRIMARY KEY, email VARCHAR(255) UNIQUE NOT NULL, is_active BOOLEAN DEFAULT TRUE, subscribed_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, unsubscribed_at TIMESTAMP WITH TIME ZONE, source VARCHAR(50) DEFAULT 'website' -- 'website', 'blog', 'home', 'footer' ); -- Indexes CREATE INDEX IF NOT EXISTS idx_contact_messages_created ON contact_messages(created_at DESC); CREATE INDEX IF NOT EXISTS idx_contact_messages_unread ON contact_messages(is_read) WHERE is_read = FALSE; CREATE INDEX IF NOT EXISTS idx_newsletter_subscribers_active ON newsletter_subscribers(is_active) WHERE is_active = TRUE; CREATE INDEX IF NOT EXISTS idx_newsletter_subscribers_email ON newsletter_subscribers(email); -- Comments COMMENT ON TABLE contact_messages IS 'Contact form submissions from the website'; COMMENT ON TABLE newsletter_subscribers IS 'Newsletter subscribers who are not registered customers';