-- Create 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(255) NOT NULL, message TEXT NOT NULL, ip_address VARCHAR(45), user_agent TEXT, is_read BOOLEAN DEFAULT FALSE, read_at TIMESTAMP WITH TIME ZONE, created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(), deleted_at TIMESTAMP WITH TIME ZONE ); -- Create index for faster lookups on email and created_at CREATE INDEX IF NOT EXISTS idx_contact_messages_email ON contact_messages(email); CREATE INDEX IF NOT EXISTS idx_contact_messages_created_at ON contact_messages(created_at); CREATE INDEX IF NOT EXISTS idx_contact_messages_is_read ON contact_messages(is_read); -- Create newsletter_subscriptions table CREATE TABLE IF NOT EXISTS newsletter_subscriptions ( id SERIAL PRIMARY KEY, email VARCHAR(255) NOT NULL UNIQUE, is_active BOOLEAN DEFAULT TRUE, created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(), updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(), deleted_at TIMESTAMP WITH TIME ZONE ); -- Create index for faster lookups on email and is_active CREATE INDEX IF NOT EXISTS idx_newsletter_subscriptions_email ON newsletter_subscriptions(email); CREATE INDEX IF NOT EXISTS idx_newsletter_subscriptions_is_active ON newsletter_subscriptions(is_active); -- Create a function to update the updated_at column CREATE OR REPLACE FUNCTION update_updated_at_column() RETURNS TRIGGER AS $$ BEGIN NEW.updated_at = NOW(); RETURN NEW; END; $$ LANGUAGE plpgsql; -- Create triggers to update updated_at columns DO $$ BEGIN -- For contact_messages IF NOT EXISTS (SELECT 1 FROM pg_trigger WHERE tgname = 'update_contact_messages_updated_at') THEN CREATE TRIGGER update_contact_messages_updated_at BEFORE UPDATE ON contact_messages FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); END IF; -- For newsletter_subscriptions IF NOT EXISTS (SELECT 1 FROM pg_trigger WHERE tgname = 'update_newsletter_subscriptions_updated_at') THEN CREATE TRIGGER update_newsletter_subscriptions_updated_at BEFORE UPDATE ON newsletter_subscriptions FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); END IF; END$$;