nidus-sync/db/migrations/00039_email_template.sql
Eli Ribble 196792810b
Overhaul email sending system
Add logging and saving templates to the database for historical
accuracy.
2026-01-23 20:36:16 +00:00

44 lines
1.6 KiB
SQL

-- +goose Up
-- CREATE EXTENSION IF NOT EXISTS hstore;
ALTER TABLE comms.email RENAME TO email_contact;
ALTER TABLE comms.email_contact ADD COLUMN public_id TEXT;
UPDATE comms.email_contact SET public_id = '';
ALTER TABLE comms.email_contact ALTER COLUMN public_id SET NOT NULL;
CREATE TABLE comms.email_template (
content_html TEXT NOT NULL,
content_txt TEXT NOT NULL,
content_hash_html VARCHAR(64) NOT NULL,
content_hash_txt VARCHAR(64) NOT NULL,
created TIMESTAMP WITHOUT TIME ZONE NOT NULL,
id SERIAL NOT NULL,
superceded TIMESTAMP WITHOUT TIME ZONE,
message_type comms.MessageTypeEmail NOT NULL,
PRIMARY KEY (id)
);
DROP TABLE comms.email_log;
CREATE TABLE comms.email_log (
id SERIAL,
created TIMESTAMP WITHOUT TIME ZONE NOT NULL,
delivery_status VARCHAR(16) NOT NULL,
destination TEXT NOT NULL REFERENCES comms.email_contact(address),
public_id VARCHAR(64) NOT NULL,
sent_at TIMESTAMP WITHOUT TIME ZONE,
source TEXT NOT NULL,
subject VARCHAR(255) NOT NULL,
template_id INTEGER REFERENCES comms.email_template(id),
template_data HSTORE NOT NULL,
type comms.MessageTypeEmail NOT NULL,
PRIMARY KEY (id)
);
-- +goose Down
DROP TABLE comms.email_log;
CREATE TABLE comms.email_log (
created TIMESTAMP WITHOUT TIME ZONE NOT NULL,
destination TEXT NOT NULL REFERENCES comms.email_contact(address),
source TEXT NOT NULL REFERENCES comms.phone(e164),
type comms.MessageTypeEmail NOT NULL,
PRIMARY KEY(destination, source, type)
);
DROP TABLE comms.email_template;
ALTER TABLE comms.email_contact DROP COLUMN public_id;
ALTER TABLE comms.email_contact RENAME TO email;