Files
SkyArtShop/backend/migrations/009_create_contact_newsletter.sql

37 lines
1.6 KiB
MySQL
Raw Permalink Normal View History

2026-01-20 20:29:33 -06:00
-- 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';