mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 02:32:57 +00:00
62 lines
2.3 KiB
PL/PgSQL
62 lines
2.3 KiB
PL/PgSQL
-- 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$$;
|