sql/create-signups-tables.sql (53 lines of code) (raw):
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
DROP TABLE IF EXISTS one_off_reminder_signups;
CREATE TABLE one_off_reminder_signups(
identity_id TEXT NOT NULL,
country TEXT,
reminder_created_at TIMESTAMP NOT NULL,
reminder_cancelled_at TIMESTAMP,
reminder_platform TEXT NOT NULL,
reminder_component TEXT NOT NULL,
reminder_stage TEXT NOT NULL,
reminder_period DATE NOT NULL,
reminder_option TEXT,
reminder_code uuid NOT NULL PRIMARY KEY DEFAULT uuid_generate_v4 (),
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
UNIQUE (identity_id, reminder_period)
);
/* PostgreSQL automatically creates a unique index when a unique constraint or primary key is defined for a table
- https://www.postgresql.org/docs/current/indexes-unique.html
*/
-- CREATE INDEX one_off_reminder_signups_reminder_code ON one_off_reminder_signups (identity_id);
DROP TABLE IF EXISTS recurring_reminder_signups;
CREATE TABLE recurring_reminder_signups(
identity_id TEXT NOT NULL UNIQUE,
country TEXT,
reminder_created_at TIMESTAMP NOT NULL,
reminder_cancelled_at TIMESTAMP,
reminder_platform TEXT NOT NULL,
reminder_component TEXT NOT NULL,
reminder_stage TEXT NOT NULL,
reminder_frequency_months INT NOT NULL,
reminder_option TEXT,
reminder_code uuid NOT NULL PRIMARY KEY DEFAULT uuid_generate_v4 (),
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
);
/* PostgreSQL automatically creates a unique index when a unique constraint or primary key is defined for a table
- https://www.postgresql.org/docs/current/indexes-unique.html
*/
-- CREATE INDEX recurring_reminder_signups_reminder_code ON recurring_reminder_signups (identity_id);
CREATE OR REPLACE FUNCTION set_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ language 'plpgsql';
DROP TRIGGER IF EXISTS one_off_set_updated_at ON one_off_reminder_signups;
CREATE TRIGGER
one_off_set_updated_at
BEFORE UPDATE ON
one_off_reminder_signups
FOR EACH ROW EXECUTE PROCEDURE
set_updated_at_column();
DROP TRIGGER IF EXISTS recurring_set_updated_at ON recurring_reminder_signups;
CREATE TRIGGER
recurring_set_updated_at
BEFORE UPDATE ON
recurring_reminder_signups
FOR EACH ROW EXECUTE PROCEDURE
set_updated_at_column();